TP 2 M2
Percobaan II
PWM, ADC, dan Interrupt
1. Foto Hardware dan Diagram Blok [Kembali]
1. Arduino Uno
2. LDR
3. LCD
4. Resistor
5. Power Supply
6. Ground
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
Pada rangkaian ini menggunakan komponen antara lain yaitu Arduino Uno, Sensor LDR, resistor, LCD, driver motor dan motor DC.
Pada percobaan ini kita menggunakan semua komponen dengan prosedur yang diinginkan dan dengan output yang diinginkan dimana nanti ada beberapa kondisi yang seusai dengan perintah dari percobaan atau yang disuruh pada percobaan yang dipilih dimana,ketika Ketika Motor ke kanan,LCD menampilkan counting dari 100 sampai 0, interrupt maka motor DC berhenti 4 detik. Mikrokontroler kemudian mengaktifkan pin output untuk menyalakan LCD dan menghitung angka dari 100 hingga 0.
4. Flowchart dan Listing Program [Kembali]
Listing Program:
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
// Inisialisasi pin
const int MOTOR_OUT1_PIN = 12;
const int MOTOR_OUT2_PIN = 13;
const int DIPSW_2_PIN = 2;
// Inisialisasi objek LCD
LiquidCrystal_PCF8574 lcd(0x27); // Alamat PCF8574
// Variabel global
volatile bool dipsw_2_state = false; // Volatile digunakan untuk variable yang bisa diakses secara asinkron oleh interrupt
void setup() {
// Inisialisasi pin mode
pinMode(MOTOR_OUT1_PIN, OUTPUT);
pinMode(MOTOR_OUT2_PIN, OUTPUT);
pinMode(DIPSW_2_PIN, INPUT_PULLUP); // Dipsw_2 menggunakan pull-up resistor
// Inisialisasi LCD
lcd.begin(16, 2);
// Attach interrupt untuk Dipsw_2
attachInterrupt(digitalPinToInterrupt(DIPSW_2_PIN), dipsw2Interrupt, CHANGE);
// Memulai motor berputar ke kanan
digitalWrite(MOTOR_OUT1_PIN, HIGH);
digitalWrite(MOTOR_OUT2_PIN, LOW);
}
void loop() {
// Tampilkan counting dari 100 sampai 0 di LCD
for (int i = 100; i >= 0; i--) {
lcd.setCursor(0, 0);
lcd.print("Counting: ");
lcd.print(i);
delay(1000); // Delay 1 detik
// Cek status Dipsw_2 setiap detik
if (dipsw_2_state) {
// Berhenti motor selama 4 detik jika Dipsw_2 aktif
digitalWrite(MOTOR_OUT1_PIN, LOW);
digitalWrite(MOTOR_OUT2_PIN, LOW);
delay(4000); // Delay 4 detik
// Menghidupkan kembali motor berputar ke kanan setelah 4 detik
digitalWrite(MOTOR_OUT1_PIN, HIGH);
digitalWrite(MOTOR_OUT2_PIN, LOW);
}
}
}
// Fungsi interrupt untuk Dipsw_2
void dipsw2Interrupt() {
// Membaca status Dipsw_2
dipsw_2_state = digitalRead(DIPSW_2_PIN);
}
Percobaan 1 Kondisi 2 : "Motor ke kanan,LCD menampilkan counting dari 100 sampai 0, interrupt maka motor DC berhenti 4 detik"
᭒ HTML↠ klik disini
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini
Komentar
Posting Komentar