Motor DC dengan Arduino
20.181. Rangkaian Simulasi [kembali]
Prinsip kerja rangkaian :
Rangkaian terdiri dari 3 switch SPDT, IC L293D, motor DC dan
LCD dengan menggunakan mikrokontroller Arduin Mega 2560 dimana switch SPDT
terhubung ke pin digital (16, 17, 18), untuk IC L293D terhubung ke pin digital
(4, 5, 6, 7) dan LCD terhubung ke pin digital (31, 33, 35, 37, 39, 41). Pertama
untuk menjalankan simulasi klik tombol PLAY, kemudian untuk memulai operasi,
maka ditekan tombol RESET. Setelah itu apabila switch satu ( SW 0) berkondisi
HIGH dan dua switch lainnya berkondisi LOW, maka putaran motor akan lambat dan
LCD menampilkan tulisan “motor pelan”, apabila switch dua ( SW 1) berkondisi
HIGH dan dua switch lainnya berkondisi LOW, maka putaran motor akan sedang dan
LCD menampilkan tulisan “motor sedang”, apabila switch tiga ( SW 2) berkondisi
HIGH dan dua switch lainnya berkondisi LOW, maka putaran motor akan cepat dan
LCD menampilkan tulisan “motor cepat”, apabila seluruh switch berkondisi LOW,
maka motor tidak berputar dan LCD menampilkan tulisan “motor mati” dan apabila
keadaan switch berbeda dari keadaan yang ada sebelumnya, maka motor akan mati
dan LCD menampilkan tulisan “tidak ada kondisi”.
2. Flowchart [kembali]3. Listing Program [kembali]
#include
<LiquidCrystal.h> //library
untuk LCD
LiquidCrystal lcd (41,39,37,35,33,31); // menunjukkan pin yang dihubungkan
pada di LCD
int m1 = 7; //pin
m1 pada L293 dihubungkan ke pin 14 pada Arduino
int m2 = 6; //pin
m2 pada L293 dihubungkan ke pin 15 pada Arduino
int m3 = 5; //pin
m3 pada L293 dihubungkan ke pin 16 pada Arduino
int m4 = 4; //pin
m4 pada L293 dihubungkan ke pin 17 pada Arduino
const int s1 = 16; // switch 1 dihubungkan ke pin 19
pada Arduino
const int s2 = 17;
// switch 2 dihubungkan ke pin 20
pada Arduino
const int s3 = 18; // switch 3 dihubungkan ke pin 21
pada Arduino
void setup() // Settingan kondisi yang akan digunakan
{
pinMode(m1,OUTPUT); //
menjelaskan bahwa pin m1 sebagai output
pinMode(m2,OUTPUT); //
menjelaskan bahwa pin m2 sebagai output
pinMode(m3,OUTPUT); //
menjelaskan bahwa pin m3 sebagai output
pinMode(m4,OUTPUT); //
menjelaskan bahwa pin m4 sebagai output
pinMode(s1, INPUT); // menjelaskan switch 1 sebagai
input
pinMode(s2, INPUT); // menjelaskan switch 2 sebagai
input
pinMode(s3, INPUT); // menjelaskan switch 3 sebagai
input
digitalWrite(s1, HIGH); //
menjelaskan kondisi awal dari switch 1 berlogika high
digitalWrite(s2, HIGH); //
menjelaskan kondisi awal dari switch 2 berlogika high
digitalWrite(s3, HIGH); //
menjelaskan kondisi awal dari switch 3 berlogika high
lcd.begin(16,2);
}
void
loop() //
Perulangan dari semua kondisi yang ditetapkan
{
int switch1 = digitalRead (s1); // tetapkan switch 1
sebagai input dengan pembacaan digital
int switch2 = digitalRead (s2); // tetapkan switch 1
sebagai input dengan pembacaan digital
int switch3 = digitalRead (s3); // tetapkan switch 1
sebagai input dengan pembacaan digital
if (switch1 == LOW && switch2 == LOW
&& switch3 == LOW)
{
lcd.setCursor (0,0); // posisi kursor lcd
lcd.print ("Motor Mati"); // cetak LCD
lcd.clear(); //
reset LCD
digitalWrite (m1,LOW); // m1 kondisi mati
digitalWrite (m2,LOW); // m1 kondisi mati
digitalWrite (m3,LOW); // m1 kondisi mati
digitalWrite (m4,LOW); // m1 kondisi mati
}
else if (switch1 == HIGH && switch2 ==
LOW && switch3 == LOW)
{
lcd.setCursor (0,0); // posisi kursor lcd
lcd.print ("Motor Pelan"); // cetak pada lcd
lcd.clear(); //
reset LCD
delay(1); //
delay selama 1 ms
analogWrite (m1,80); // m1
kondisi dengan nilai analog 50 dari 255
analogWrite (m2,0); // m2 kondisi mati
analogWrite (m3,80); // m3 kondisi dengan nilai analog 50 dari 255
analogWrite (m4,0); // m4 kondisi mati
}
else if (switch1 == LOW && switch2 ==
HIGH && switch3 == LOW)
{
lcd.setCursor (0,0); // posisi lcd
lcd.print ("Motor Sedang"); // cetak tulisan pada LCD
lcd.clear(); //
reset lcd
delay(1); //
delay selama 1 ms
analogWrite (m1,150); // m1 kondisi dengan nilai analog 150 dari 255
analogWrite (m2,0); // m2 kondisi mati
analogWrite (m3,150); // m3 kondisi dengan nilai analog 150 dari 255
analogWrite (m4,0); // m4 kondisi mati
}
else if (switch1 == LOW && switch2 ==
LOW && switch3 == HIGH)
{
lcd.setCursor (0,0); // posisi lcd
lcd.print ("Motor Cepat"); // cetak tulisan pada lcd
lcd.clear(); //
reset lcd
delay(1); //
delay selama 1 ms
analogWrite (m1,255); // m1 kndisi dengan nilai 200 dari 255
analogWrite (m2,0); // m2 kondisi mati
analogWrite (m3,255); // m3 kondisi denga nilai 200 dari 255
analogWrite (m4,0); // m4 kondisi mati
}
else
{
lcd.setCursor (0,0); // posisi lcd
lcd.print ("Tidak Ada Kondisi !!"); // cetak tulisan pada lcd
lcd.clear(); //
reset lcd
analogWrite (m1,0); // m1 kondisi mati
analogWrite (m2,0); // m2 kondisi mati
analogWrite (m3,0); // m3 kondisi mati
analogWrite (m4,0); } } // m4 kondisi mati
4. Video [kembali]