DAFTAR ISI
6. Video Simulasi
Percobaan 2 Kondisi 6
Interrupt Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
4. DIP Switch
5. L293D
6. Motor DC
7. Potensiomotor
Diagram Blok:
2. Prosedur Percobaan [Kembali]
+ Rangkai semua komponen
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul
Prinsip Kerja
Rangkaian pada percobaan kali ini menggunakan total komponen dengan jumlah 11 buah yaitu Arduino Uno, motor DC, LCD, PCF8574, DIP Switch, Driver L293D, Potensiometer, Baterai, Resistor, power supply, dan Ground.
Untuk memicu interupt, DIP Switch yang terhubung ke arduino memicu instruksi untuk menghentikan instruksi utama dan menjalankan instruksi lainnya. Saat terjadi interrupt, penghitungan diulang hingga 50, motor DC berhenti selama tiga detik, dan dua lampu dihidupkan setiap kali terjadinya interrupt
Arduino Uno berfungsi sebagai pusat kendali untuk rangkaian ini. Dia terhubung dengan motor DC dan menggunakan LCD 16x2 untuk menampilkan informasi dan mengontrol gerakan motor. Namun, untuk mengatasi keterbatasan jumlah pin I/O yang tersedia, diperlukan perantara berupa PCF8574 untuk menghubungkan keduanya. PCF8574 berfungsi sebagai ekspander I/O, memperluas jangkauan pin Arduino sehingga mereka dapat berinteraksi dengan LCD dengan lebih baik.
4. Flowchart dan Listing Program [Kembali]
Listing Program:
#include<LiquidCrystal_I2C.h>
#define LED1 3 //pin 13 bernama LED
#define tombol 2 //pin 2 (pin interrupt) bernama tombol
#define LED2 4
#define front 12
#define back 13
static int count = 0;
unsigned long previousMillis = 0; // variabel untuk menyimpan waktu terakhir motor berjalan atau berhenti
const unsigned long motorInterval = 20000; // interval total waktu untuk motor (5 detik + 3 detik + 5 detik + 7 detik = 20 detik)
LiquidCrystal_I2C lcd(0x27, 20, 4);
void tombol_ditekan()
{
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
//delay(1000);
digitalWrite(front, LOW);
digitalWrite(back, LOW);
delay(3000);
count = 0;
}
void setup() {
lcd.init();
lcd.backlight();
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(front,OUTPUT);
pinMode(back,OUTPUT);
pinMode(tombol,INPUT);
attachInterrupt(digitalPinToInterrupt(2),tombol_ditekan, FALLING); //pin 2 (interrupt 0) digunakan sebagai interrupt eksternal
}
void loop() { //Main Program
unsigned long currentMillis = millis();
unsigned long elapsedMillis = currentMillis - previousMillis;
if (elapsedMillis < 5000) { // Motor berputar ke kanan selama 5 detik
digitalWrite(front, HIGH);
digitalWrite(back, LOW);
} else if (elapsedMillis < 8000) { // Motor mati selama 3 detik
digitalWrite(front, LOW);
digitalWrite(back, LOW);
} else if (elapsedMillis < 13000) { // Motor berputar ke kiri selama 5 detik
digitalWrite(front, LOW);
digitalWrite(back, HIGH);
} else if (elapsedMillis < 20000) { // Motor mati selama 7 detik
digitalWrite(front, LOW);
digitalWrite(back, LOW);
}else {
digitalWrite(front, HIGH);
digitalWrite(back, LOW);
}
int nilai;
nilai = 50+count;
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
lcd.setCursor(0,0);
lcd.print("Count:");
lcd.setCursor(0,1);
lcd.print(nilai);
count -- ;
// menambahkan integer count dengan angka 1
if (nilai <= 00){
count =0;
}
delay(1000);
}
Pada kondisi 6 dari percobaan 2, Motor ke kanan 5 detik lalu mati 3 detik berputar ke kiri 5 detik dan mati 7 detik ,LCD menampilkan counting dari 50 sampai 0, interrupt maka counting diulang dari 50 dan motor DC berhenti 3 detik dan 2 led hidup setiap kali dilakukan interrupt.
᭒ HTML↠ klik disini
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini
᭒ Program↠ klik disini
᭒ Datasheet Arduino↠ klik disini
᭒ Datasheet Potensiometer↠ klik disini
᭒ Datasheet LCD↠ klik disini
᭒ Datasheet DIP Switch↠ klik disini
᭒ Datasheet L293D↠ klik disini
᭒ Datasheet Motor DC↠ klik disini
᭒ Datasheet PCF8574↠ klik disini














