MODUL 2
PERCOBAAN 1
1. Prosedur
[Kembali]- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing Program
- Upload program ke arduino
- Mencoba rangkaiannya dengan memvariasikan kondisi interupt (Falling, Rising, High dan Low)
2. Hardware dan diagram blok
[Kembali]
a. hardware
b. Digram Blok
3. Rangkaian Simulasi dan Prinsip kerja
[Kembali]
A. Gambar Rangkaian
PRINSIP KERJA
Sistem kontrol ini menggunakan Arduino sebagai otak untuk memproses informasi dan mengendalikan motor DC. Sistem ini dirancang untuk merespons input dari sensor dan tombol untuk mengontrol motor DC.
Cara kerjanya:
- Program membaca status tombol utama dan nilai sensor LDR.
- Jika tombol utama aktif, program akan menghitung jumlah tombol tambahan yang aktif.
- Berdasarkan jumlah tombol yang aktif, program akan memilih tindakan yang sesuai.
- Jika tidak ada tombol ditekan, program akan menampilkan nilai LDR pada LCD.
- Jika satu tombol ditekan, motor DC akan diaktifkan.
- Jika dua tombol ditekan, program akan memantau nilai LDR dan mengubah arah putaran motor berdasarkan nilai LDR (bergerak ke kiri atau kanan).
- Jika tiga tombol ditekan, program akan mengontrol kecepatan motor DC menggunakan sinyal PWM berdasarkan nilai bacaan LDR.
- Selain mengendalikan motor, program juga memberikan informasi visual melalui LCD dan informasi debug melalui port serial.
Sistem ini memberikan respons yang adaptif terhadap kondisi lingkungan yang diukur oleh sensor dan input yang diberikan oleh pengguna melalui tombol.
4. FlowChart
[Kembali]
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
int sw1 = 2;
int sws[]={3,4,7};
int numsw = 3;
int front = 6;
int back = 5;
void setup() {
// put your setup code here, to run once:
lcd.begin(16,2);
pinMode(sw1,INPUT);
for(int thesw = 0; thesw < numsw; thesw++){
pinMode(sws[thesw],INPUT);
}
pinMode(front,OUTPUT);
pinMode(back,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
int s1 = digitalRead(sw1);
int ldr = analogRead(A0);
if(s1 == HIGH){
int activesw = 0;
for(int thesw = 0; thesw < numsw; thesw++){
if(digitalRead(sws[thesw]) == HIGH){
activesw++;
}
}
Serial.print("Number of Switch : ");
Serial.println(activesw);
delay(200);
switch(activesw){
case 0 :
lcd.clear();
lcd.setCursor(0,0);
lcd.print(ldr);
lcd.setCursor(0,1);
lcd.print("The LDR Value");
delay(200);
break;
case 1 :
lcd.clear();
lcd.setCursor(2,0);
lcd.print("Running The");
lcd.setCursor(2,1);
lcd.print("Motor");
digitalWrite(front,HIGH);
digitalWrite(back,LOW);
delay(200);
break;
case 2 :
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LDR Value : ");
lcd.setCursor(13,0);
lcd.print(ldr);
if(ldr < 550){
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("turn Motor right");
digitalWrite(front,HIGH);
digitalWrite(back,LOW);
}else{
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("turn Motor left");
digitalWrite(front,LOW);
digitalWrite(back,HIGH);
}
break;
case 3 :
int pwm = map(ldr,0,1023,0,255);
digitalWrite(back,LOW);
analogWrite(front,pwm);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("PWM = ");lcd.print(pwm);
lcd.setCursor(0,1);
lcd.print(" Control ???");
delay(200);
break;
}
delay(10);
}else{
lcd.clear();
lcd.setCursor(4,0);
lcd.print("ELECTRONIC");
lcd.setCursor(0,1);
lcd.print("&INSTRUMENTATION");
delay(100);
}
}
b. Flowchart
5. Video Demo
[Kembali]
PERCOBAAN 1 SESUAI DENGAN MODUL 2
8. Download File
[Kembali]
Download HMTL Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet LCD 2X16 klik disini
Donwload Datasheet motor listirk Klik disini
Download Datasheet L293D Klik disini
Tidak ada komentar:
Posting Komentar