Percobaan II Kondisi 3
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. 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
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]\
Rangkaian ini melibatkan beberapa komponen penting, termasuk Arduino Uno, LCD 16x2, LED, Dipswitch, IC I2C, Potensiometer, dan buzzer. Dipswitch berfungsi sebagai input untuk Arduino yang terhubung dengan pin 2. Selain itu, terdapat beberapa output yang dikendalikan oleh Arduino. Pertama, LED dan buzzer terhubung ke pin 9-13 Arduino. Kemudian, LCD terhubung dengan IC I2C, di mana kaki IC I2C dihubungkan dengan kaki A0 dan A1 Arduino. Penggunaan IC I2C bertujuan untuk menghemat penggunaan pin pada Arduino karena jumlah pin input pada LCD yang banyak.
Ketika rangkaian diaktifkan, dipswitch awalnya dalam keadaan mati, sehingga LCD menampilkan penghitungan dari angka 0 hingga 100. Namun, saat dipswitch diaktifkan atau dimatikan, Arduino akan merespons dengan menjalankan perintah interrupt. Saat interrupt dijalankan, penghitungan pada LCD akan direset ke angka 0. Selanjutnya, LED akan bergerak dari pin 13 hingga 9 selama 5 detik, disertai dengan aktifnya buzzer. Setelah masa waktu interrupt selesai, LED dan buzzer akan kembali mati.
Rangkaian ini menunjukkan integrasi yang kompleks antara komponen input dan output dengan Arduino sebagai otak pengendali. Dipswitch berfungsi sebagai pencetus perubahan dalam sistem, yang kemudian direspons oleh Arduino dengan melakukan aksi yang ditentukan sesuai program yang dijalankan. Ini menciptakan fungsi interaktif yang menarik dan berguna dalam berbagai aplikasi elektronik.
Flowchart
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 ditekanint 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}
Flowchart
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
}
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
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
- HTML klik disini
- File Rangkaian klik disini
- Video Percobaan klik disini
- Listing Program klik disini
- datasheet arudino klik disini
- HTML klik disini
- File Rangkaian klik disini
- Video Percobaan klik disini
- Listing Program klik disini
- datasheet arudino klik disini
Tidak ada komentar:
Posting Komentar