TP 1 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 ADC > 500 dan 2 switch aktif, motor berputar ke kiri dan muncul karakter pada kolom 2 LCD mikrokontroler. Mikrokontroler kemudian mengaktifkan pin output untuk menyalakan LCD dan menuliskan "Motor Kekiri".
4. Flowchart dan Listing Program [Kembali]
Listing Program:
#include <LiquidCrystal.h>
// Inisialisasi pin
const int LDR_PIN = A0;
const int MOTOR_EN_PIN = A1;
const int MOTOR_OUT1_PIN = A2;
const int MOTOR_OUT2_PIN = A3;
const int DIPSW_PIN[] = {2, 3, 4, 5};
const int LCD_RS_PIN = 13;
const int LCD_EN_PIN = 12;
const int LCD_D4_PIN = 11;
const int LCD_D5_PIN = 10;
const int LCD_D6_PIN = 9;
const int LCD_D7_PIN = 8;
// Konfigurasi LCD
LiquidCrystal lcd(LCD_RS_PIN, LCD_EN_PIN, LCD_D4_PIN, LCD_D5_PIN, LCD_D6_PIN, LCD_D7_PIN);
void setup() {
// Inisialisasi pin mode
pinMode(LDR_PIN, INPUT);
pinMode(MOTOR_EN_PIN, OUTPUT);
pinMode(MOTOR_OUT1_PIN, OUTPUT);
pinMode(MOTOR_OUT2_PIN, OUTPUT);
for (int i = 0; i < 4; i++) {
pinMode(DIPSW_PIN[i], INPUT_PULLUP);
}
// Inisialisasi LCD
lcd.begin(16, 2);
}
void loop() {
// Baca nilai LDR
int ldrValue = analogRead(LDR_PIN);
// Cek kondisi ADC > 500 dan 2 switch aktif
if (ldrValue > 500 && checkSwitches()) {
// Aktifkan motor berputar ke kiri
digitalWrite(MOTOR_EN_PIN, HIGH);
digitalWrite(MOTOR_OUT1_PIN, LOW);
digitalWrite(MOTOR_OUT2_PIN, HIGH);
// Tampilkan karakter pada kolom 2 LCD
lcd.setCursor(0, 1);
lcd.print("Motor kekiri");
} else {
// Matikan motor dan bersihkan LCD jika tidak memenuhi kondisi
digitalWrite(MOTOR_EN_PIN, LOW);
digitalWrite(MOTOR_OUT1_PIN, LOW);
digitalWrite(MOTOR_OUT2_PIN, LOW);
lcd.clear();
}
delay(100); // Delay untuk stabilitas
}
// Fungsi untuk memeriksa apakah dua switch aktif
bool checkSwitches() {
bool switch1_active = digitalRead(DIPSW_PIN[0]) == LOW;
bool switch2_active = digitalRead(DIPSW_PIN[1]) == LOW;
// Mengembalikan nilai true hanya jika kedua switch diaktifkan
return switch1_active && switch2_active;
}
Percobaan 1 Kondisi 2 : " Ketika ADC > 500 dan 2 switch aktif, motor berputar ke kiri dan muncul karakter pada kolom 2 LCD"
᭒ HTML↠ klik disini
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini
Komentar
Posting Komentar