Tugas Pendahuluan 2 Modul 2




Tugas Pendahuluan 2 Modul 1
(Percobaan 2 Kondisi 1)

1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware:

1. Arduino Uno
 
2. Dipswitch

3. LCD 16X2
Jual Cuci Gudang Lcd Display 1602 + I2c 16x2 16 2 16*2 Biru Blue Di Seller  Algorista - Sanan Wetan, Kota Blitar | Blibli
4. PCF8574
Jual Modul Ekspansi IO 8 Bit PCF8574 Via Port I2C utk Arduino/Raspberry pi  - Kab. Bandung - Diggyshop | Tokopedia
5. Motor DC
Mengenal Motor DC - Enfys




Block Diagram:


3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :



Prinsip Kerja : 
Program ini adalah contoh program untuk Arduino yang menggunakan beberapa komponen seperti LCD, LED, dan motor DC. Program ini memiliki tujuan untuk menampilkan nilai count pada LCD, menyalakan LED secara berurutan setiap kali nilai count adalah kelipatan 10, serta menggerakkan motor DC ke kanan secara terus menerus. 

Pertama, program melakukan inisialisasi pin untuk LED, motor, dan pin interrupt. Kemudian, program mengaktifkan interrupt pada pin yang telah ditentukan, sehingga fungsi interruptServiceRoutine() akan dipanggil ketika interrupt terjadi.

Selanjutnya, program masuk ke dalam loop utama. Di dalam loop, nilai count akan terus bertambah dan ditampilkan pada LCD. Program juga akan menyalakan LED sesuai dengan nilai count/10 (LED1 menyala saat count=10, LED2 saat count=20, dan seterusnya). 

Selain itu, program juga akan menggerakkan motor DC ke kanan dengan delay 500ms, kemudian mematikan motor dan menunggu 500ms sebelum iterasi berikutnya. Proses ini akan terus berulang sampai nilai count mencapai 100.

Ketika nilai count mencapai 100, program akan berhenti dan tidak melakukan apa-apa (loop kosong). Fungsi interruptServiceRoutine() digunakan untuk mengatur ulang nilai count menjadi 0 dan mematikan semua LED saat interrupt terjadi.

4. Flowchart dan Listing Program [Kembali]

Flowchart :



Listing Program :

#include <LiquidCrystal_I2C.h> //Mendeklarasikan bahwa program akan menggunakan library LiquidCrystal_I2C untuk mengendalikan LCD melalui komunikasi I2C.

#define LED1 13 //Mendefinisikan konstanta untuk pin LED pertama yang terhubung ke pin 13 Arduino
#define LED2 12
#define LED3 11
#define LED4 10
#define motorPin1 9 //Mendefinisikan konstanta untuk pin motor DC yang terhubung ke pin 9 Arduino
#define motorPin2 8
#define interruptPin 2 // Mendefinisikan konstanta untuk pin yang digunakan sebagai interrupt, yang akan digunakan untuk mereset nilai hitungan.

volatile bool buttonPressed = false; // Mendeklarasikan variabel buttonPressed yang bersifat volatile (dapat berubah secara tiba-tiba), yang akan digunakan sebagai tanda apakah tombol telah ditekan.
int count = 0; // Mendeklarasikan variabel count yang akan digunakan untuk menyimpan nilai hitungan.                      

LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C, jumlah kolom, jumlah baris LCD

void setup()
{
  pinMode(LED1, OUTPUT); //Mengatur mode pin-pin yang digunakan sebagai output untuk LED
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(motorPin1, OUTPUT); //Mengatur mode pin-pin yang digunakan sebagai output untuk motor.
  pinMode(motorPin2, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP); // Mengatur pin interrupt sebagai input dengan resistor pull-up internal.

  attachInterrupt(digitalPinToInterrupt(interruptPin), interruptServiceRoutine, FALLING);

  lcd.init();
  lcd.backlight(); // menginisialisasi LCD dan menyalakan backlight-nya.
}

void loop()
{
  count++;

  // Menampilkan nilai count pada LCD
  lcd.clear();
  lcd.setCursor(0, 0); //Mengatur tampilan LCD untuk menampilkan nilai count dan mengatur LED sesuai dengan kelipatan 10 dari nilai count.
  lcd.print("Count: ");
  lcd.print(count);

  // Memeriksa apakah count adalah kelipatan 10 dan menyalakan LED sesuai
  if (count % 10 == 0)
  {
    switch (count / 10)
    {
    case 1:
      digitalWrite(LED1, HIGH);
      break;
    case 2:
      digitalWrite(LED2, HIGH);
      break;
    case 3:
      digitalWrite(LED3, HIGH);
      break;
    case 4:
      digitalWrite(LED4, HIGH);
      break;
    }
  }

  // Memutar motor ke kanan
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);

  delay(500);

  // Mematikan motor
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);

  // Menunggu 500ms sebelum iterasi berikutnya
  delay(500);

  // Memeriksa apakah count sudah mencapai 100
  if (count >= 100)
  {
    // Mematikan program
    while (true)
    {
      // Do nothing, program berhenti di sini
    }
  }
}

void interruptServiceRoutine() //Fungsi yang dipanggil ketika tombol interrupt ditekan
{
  count = 0; // Mengulang count menjadi 0
  // Mematikan semua LED
  digitalWrite(LED1, LOW);
  digitalWrite(LED2, LOW);
  digitalWrite(LED3, LOW);
  digitalWrite(LED4, LOW);
}


5. Kondisi [Kembali]

Percobaan 2 Kondisi 2
Motor ke kanan,LCD menampilkan counting dari 0 sampai 100, setiap counting kelipatan 10 maka hidup 1 LED,ketika diberi interrupt maka counting diulang dari 0 dan 1 led mati

6. Video Simulasi [Kembali]



7. Download File [Kembali]
HTML  klik disini
File Rangkaian klik disini
Video Percobaan klik disini
Listing Program klik disini
Datasheet Arduino klik disini
Datasheet LCD klik disini
Datasheet Dip Switch klik disini
Datasheet Motor DC klik disini

Tidak ada komentar:

Posting Komentar

  BAHAN PRESENTASI MATA KULIAH ELEKTRONIKA Nama: Vigo Danovan Saputra NIM: 2110951023 kelas: Elektronika C Dosen Pengampu ; Darwison,M.T Ref...