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. 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. LCD 12x6
2. I2C
3. Arduino Uno
4. Led
5. Buzzer
6. Dipswtich
7. Potensiometer
Block Diagram :
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Rangkaian:
Prinsip Kerja:
rangkaian ini terdiri dari beberapa komponen yaitu Arduino Uno, LCD 16x2, LED, Dipswitch, IC I2C, Potensiometer dan buzzer. Dipswitch berfungsi sebagai input arduino yang dihubungkanm dengan pin 2. lalu pada rangkaian ini ada beberapa output untuk arduino. yang pertama yaitu LED dan Buzzer yang dihubungkan dengan pin 9-13 Arduino. lalu Lcd yang dihubungkan dengan IC I2C yang dimana kaki IC I2C dihubungkan dengan kaki A0,A1 arduino. IC I2C berfungsi untuk menghemat penggunaan pin pada arduino dikarenakan banyaknya pin input pada LCD.
Ketika rangkaian dijalankan, maka dipswitch akan dalam kondisi awal yaitu off, maka LCD ada menampilkan counting dari angka 0 hingga 100. Namun ketika kita ON OFF kan, maka arduino akan menjalankan perintah interrupt. Pada saat interupt dijalankan, counting pada LCD akan tereset ke angka 0, kemudian LED akan running dari pin 13 hingga 9 selana 5 detik, dan juga diiringi dengan hidupnya sounder/buzzer. ketika masa waktu interrupt selesai, maka LED dan buzzer tadi akan mati.
Listing Program :
#include <LiquidCrystal_I2C.h>
#define LED 13
#define LED1 12
#define LED2 10
#define LED3 9
#define tombol 2
#define buzzer 11
volatile bool buttonPressed = false; // Flag untuk menandakan bahwa tombol telah ditekan
int count = 0; // Variabel untuk menyimpan nilai count
LiquidCrystal_I2C lcd(0x27, 20, 4); // Inisialisasi LCD
void setup() {
lcd.init(); // Menginisialisasi LCD
lcd.backlight(); // Menyalakan backlight LCD
pinMode(LED, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(tombol, INPUT);
pinMode(buzzer, OUTPUT);
attachInterrupt(digitalPinToInterrupt(tombol), tombol_ditekan, FALLING); // Mengatur interrupt
}
void loop() {
if (buttonPressed) {
unsigned long startMillis = millis();
while (millis() - startMillis < 5000) { // Loop selama kurang dari 5 detik
for (int i = 0; i < 4; i++) {
digitalWrite(LED, i == 0); // Menyalakan LED sesuai urutan
digitalWrite(LED1, i == 1);
digitalWrite(LED2, i == 2);
digitalWrite(LED3, i == 3);
delay(312); // Delay untuk menjaga durasi total running
}
}
digitalWrite(buzzer, LOW); // Mematikan buzzer
// Reset kondisi
digitalWrite(LED, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
buttonPressed = false; // Reset flag
count = 0; // Reset count
updateLCD(); // Memperbarui tampilan LCD
} else {
updateLCD();
count += 1; // Menambahkan nilai count
delay(1000);
}
}
void tombol_ditekan() {
buttonPressed = true; // Mengatur flag ketika tombol ditekan
digitalWrite(buzzer, HIGH); // Menyalakan buzzer
}
void updateLCD() {
lcd.clear(); // Membersihkan layar LCD
lcd.setCursor(0,0);
lcd.print("Count:");
lcd.setCursor(7,0);
lcd.print(count); // Menampilkan nilai count
}
5. Kondisi [Kembali]
Percobaan 2 Kondisi 3
Motor ke kanan,LCD menampilkan counting dari 0 sampai 100, interrupt maka counting diulang dari 0 dan LED akan running dari led 1 hingga 4 selama 5 detik
6. Video Simulasi [Kembali]
7. Download File
[Kembali]
Tidak ada komentar:
Posting Komentar