TP 1 M2
Percobaan 2 Kondisi 7
Interupt Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
7. Motor
8. IC I2C
9. Potensiometer
- Diagram Blok:
2. Prosedur Percobaan [Kembali]
Langkah-langkah percobaan :
1. Siapkan alat dan bahan yaitu dengan komponen utama Arduino Uno, DIPSWITCH, IC I2C, MOTOR dan LCD
2. Rangkai sesuai gambar percobaan
3. Rancang kerja rangkaian sesuai flowchat
4. Tekan tombol “Play” untuk menjalankan simulasi
Prinsip Kerja
Rangkaian ini bekerja dengan mengendalikan motor DC dan menampilkan informasi pada LCD 16x2.
Motor DC:
- Berputar ke kanan selama 5 detik.
- Mati selama 3 detik.
- Berputar ke kiri selama 5 detik.
- Mati selama 7 detik.
LCD 16x2:
- Menampilkan hitungan mundur dari 50 sampai 0.
- Hitungan mundur diulang dari 50 setelah mencapai 0.
- Motor DC berhenti selama 3 detik setelah hitungan mundur selesai.
Dipswitch:
- Digunakan untuk memberikan interupsi pada hitungan mundur.
- Ketika tombol dipswitch ditekan, hitungan mundur akan kembali ke 50.
Cara kerja:
- Ketika rangkaian dihidupkan, motor DC akan berputar ke kanan selama 5 detik.
- LCD 16x2 akan menampilkan hitungan mundur dari 50 sampai 0.
- Ketika hitungan mundur mencapai 0, motor DC akan mati selama 3 detik.
- Setelah 3 detik, motor DC akan berputar ke kiri selama 5 detik.
- LCD 16x2 akan kembali menampilkan hitungan mundur dari 50 sampai 0.
- Ketika hitungan mundur mencapai 0, motor DC akan mati selama 7 detik.
- Siklus ini akan terus diulang.
Interrupt:
- Ketika tombol dipswitch ditekan, hitungan mundur akan terhenti.
- Hitungan mundur akan kembali ke 50.
- Motor DC akan berhenti.
4. Flowchart dan Listing Program [Kembali]
FLOWCHART
#include <LiquidCrystal_I2C.h>
#define tombol 2 // pin 2 (pin interrupt) bernama tombol
#define motorPin 11 // pin 11 untuk motor
#define motorDelay 500 // Waktu rotasi motor dalam milidetik
#define stopDelay 300 // Waktu motor berhenti dalam milidetik
#define restartDelay 700 // Waktu sebelum penghitungan dimulai ulang dalam milidetik
volatile int count = 50; // Mulai dari 50
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
lcd.init();
lcd.backlight();
pinMode(tombol, INPUT);
pinMode(motorPin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(2), tombol_ditekan, FALLING);
}
void loop() { // Main Program
// Rotasi motor ke kanan selama 5 detik
digitalWrite(motorPin, HIGH);
delay(motorDelay);
// Stop motor selama 3 detik
digitalWrite(motorPin, LOW);
delay(stopDelay);
// Rotasi motor ke kiri selama 5 detik
digitalWrite(motorPin, HIGH);
delay(motorDelay);
// Stop motor selama 3 detik
digitalWrite(motorPin, LOW);
delay(stopDelay);
// LCD menampilkan counting dari 50 sampai 0
lcd.setCursor(0, 0);
lcd.print("Count: ");
lcd.setCursor(0, 1);
lcd.print(count);
// Pengurangan integer count dengan angka 1
count -= 1;
// Jika count mencapai 0, reset kembali ke 50 dan tunggu 3 detik
if (count < 0) {
count = 50;
delay(stopDelay);
}
}
// Fungsi interrupt tombol ditekan
void tombol_ditekan() {
count = 50; // Mengatur ulang hitungan
delay(restartDelay);
}
Percobaan 2 Kondisi 7
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 counting diulang dari 50 dan motor DC berhenti 3 detik
HTML Disini
Simulasi Disini
Gambar Hardware Disini
Video Simulasi Disini
Listing Program Disini
Data Sheet IC I2C Disini
Komentar
Posting Komentar