Dalam artikel ini kita akan mencoba untuk memprogram nyala rambu lampu lalulintas menggunakan arduino. Dalam lampu rambu lalu lintas, ada 3 buah warna, yaitu merah, kuning dan hijau. Pada kali ini akan dibuat nyala dari masing-masing lampu tersebut menggunakan Arduino (UNO).
Dalam proyek ini, urutan dari nyala lampu adalah seperti gambar diatas.
urutannya yaitu:
1. merah nyala, kuning mati, hijau mati
2. merah nyala, kuning berekedip, hijau mati
3. merah mati, kuning mati, hijau nyala
4. merah mati, kuning berkedip, hijau mati
5. kembali lagi ke awal (loop)
Membuat Desain Hardware
Berikut merupakan desain yang dapat dibuat secara instan menggunakan breadboard. Sebelum led masuk ke pin-pin arduino harus diberi resistor 220ohm agar arus listrik yang masuk ke led tidak terlalu besar.
Berikut adalah gambar rancangannya:
Keterangan:
1. Kaki anoda led merah diberi resistor 220ohm masuk ke pin no 11
2. Kaki anoda led kuning diberi resistor 220ohm masuk ke pin no 10
3. Kaki anoda led hijau diberi resistor 220ohm masuk ke pin no 9
4. Kaki katoda dari masing-masing led diparalel dan masuk ke pin ground
Setelah disimulasikan ke breadbord, lalu kita pasang masing-masing komponen pada PCB lubang. Hasilnya akan tampak seperti gambar dibawah
a. Pemasangan komponen-kompinen pada breadboard
b. Membuat jalur-jalur pada pcb
c. Pasang board pada port-port di arduino. Pada PCB lubang tersebut, socket pin sudah disesuaikan pada settingan di arduino
d. Hasilnya
Setelah pembuatan hardware selesai, maka dilanjut dengan pembuatan sketch program.
Langkah-langkahnya adalah sebagai berikut:
1. Membuka program Arduino yang bisa didownload secara gratis di www.arduino.cc
2. Kemudian pilih Tool>Board>Arduino UNO
3. Setelah itu ketik sketch program rambu lalu lintas
4. Setelah selesai menulis sketch program, kemudian tekan tombol verify untuk mengecek apakah ada yang error, apabila sketch program berhasil, maka akan tertera "Done Compiling"
5. Setelah selesai dan tidak ada error, kemudian upload sketch program ke arduino dengan menekan tombol upload. Bila berhasil, maka akan tampil gambar di bawah ini.
Listing program dari arduino (sketch) adalah sebagai berikut:
/*
TEKNIK ANTARMUKA TUGAS 1
PROTOTYPE LAMPU LALU LINTAS
oleh:
Afada Rio T./D400110033/Teknik Elektro
*/
int merah = 11; // mendefinisikan pin 11 dengan nama 'merah'
int kuning = 10; // mendefinisikan pin 10 dengan nama 'kuning'
int hijau = 9; // mendefinisikan pin 9 dengan nama 'hijau'
int x; // mendefinisikan 'x' yang kelak akan dijadikan variabel dalam fungsi for
// program akan mulai dari sini ketika tombol reset pada arduino ditekan
void setup() {
// menginisialisasi pin-pin sebagai output
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
}
void hati2 () // sketch instruksi dari fungsi bernama hati2
{ // lampu kuning hidup kedap-kedip
.for(x=0; .x<4 br="" x=""> digitalWrite(kuning, HIGH); // menginstruksi lampu kuning untuk hidup
delay(500); // memberi jeda hidup lampu kuning selama setengah detik
digitalWrite(kuning, LOW); // menginstruksi lampu kuning untuk mati
delay(500); // memberi jeda mati lampu kuning selama setengah detik
}
}
// pada loop ini, program akan mengulang-ulang hingga akhir
void loop() {
digitalWrite(merah, HIGH); // mengistruksikan lampu merah untuk hidup
delay(5000); // memberi jeda hidup lampu merah selama 5 detik
hati2(); // memanggil fungsi hati2 untuk diproses program
digitalWrite(kuning, LOW); // mengistruksikan lampu kuning untuk mati
digitalWrite(merah, LOW); // mengistruksikan lampu merah untuk mati
digitalWrite(hijau, HIGH); // mengistruksikan lampu hijau untuk hidup
delay(5000); // memberi jeda waktu 5 detik dari lampu merah, kuning dan hijau sesuai pengkondisian
digitalWrite(hijau, LOW); // menginstruksikan lampu hijau untuk mati
hati2(); // memanggil fungsi hati2 untuk diproses program
}
Video hasil pemrograman arduino:
Prototype Lampu Lalu Lintas & Penyebrang Dengan Pushbutton
Setelah program yang sederhana diatas selesai, maka kita akan mencoba membuat hardware dan sketch yang lebih rumit.Dalam priyek kedua ini, pada hardware menggunakan 3 buah led merah, kuning, hijau sebagai lampu lalu lintas dan led merah, hijau sebagai lampu penyebrangan serta 1 buah pushbutton.
Berikut merupakan skema rangkaian menggunakan breadboard:
- 3 lampu sebelah kiri (merah, kuning, hijau) merupakan lampu lalu lintas, sedangkan 2 lampu di sebelah kanan merupakan lampu penyebrangan (merah & hijau)
- Pemasangan Led
- led merah lalu lintas pada kaki anoda diberi resistor 220 ohm lalu masuk pin 11
- led kuning lalu lintas pada kaki anoda diberi resistor 220 ohm lalu masuk pin 10
- led hijau lalu lintas pada kaki anoda diberi resistor 220 ohm lalu masuk pin 9
- led merah penyebrangan pada kaki anoda diberi resistor 220 ohm lalu masuk pin 6
- led hijau penyebrangan pada kaki anoda diberi resistor 220 ohm lalu masuk pin 5
- semua kaki katoda led masuk ke pin ground
Urutan Proses
Dalam desain kedua ini, urutan dari nyala lampu adalah seperti gambar diatas.
urutannya yaitu:
- Saat pushbutton belum ditekan, maka lampu lalu lintas akan menyala lampu hijau dan pada lampu penyebrang akan menyala lampu merah.
- Saat pushbutton ditekan, maka pada lampu lalu lintas di lampu kuning akan berkedip 4 kali namun saat itu terjadi, lampu penyebrang masih menyala lampu merah.
- Kemudian pada saat lampu lalulintas menyala lampu merah pada saat itu juga lampu penyebrangan akan berganti warna hijau.
- Setelah proses tersebut, lampu lalu lintas pada led merah meyala, sedang led kuning berkedip dan pada lampu penyebrang led meyala merah.
- Kemudian proses mengulang dari awal (loop)
Langkah memasukkan sketch program ke dalam arduino sama seperti langkah sebelumnya, yang berbeda adalah sketch programmnya.
Sektch program pada projek kedua ini adalah sebagai berikut:
/*
TEKNIK ANTARMUKA TUGAS 2
PROTOTYPE LAMPU LALU LINTAS DENGAN TOMBOL LAMPU PENYEBRANGAN
oleh:
Afada Rio T./D400110033/Teknik Elektro
Turns on and off a light emitting diode(LED) connected to digital
pin 13, when pressing a pushbutton attached to pin 2.
The circuit:
* LED attached from pin 13 to ground
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
*/
// menseting nomor pin
const int buttonPin = 2; // definisi konstan dari pin 2 dengan nama 'buttonPin'
const int merahor = 6; // definisi konstan dari pin 6 dengan nama 'merahor'
const int hijauor = 5; // definisi konstan dari pin 5 dengan nama 'hijauor'
const int merah = 11; // definisi konstan dari pin 11 dengan nama 'merah'
const int kuning = 10; // definisi konstan dari pin 10 dengan nama 'kuning'
const int hijau = 9; // definisi konstan dari pin 9 dengan nama 'hijau'
int x; // mendefinisikan 'x' yang kelak akan dijadikan variabel dalam fungsi for
int buttonState = 0; // variabel untuk membaca status pushutton dengan nama 'buttonState'
void setup() {
// menginisialisasi pin-pin pada lampu sebagai output
pinMode(merahor, OUTPUT);
pinMode(hijauor, OUTPUT);
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
// menginisialisasi pin pada pushbutton sebagai input
pinMode(buttonPin, INPUT);
}
void hati2 () // sketch instruksi dari fungsi bernama hati2
{ // lampu kuning hidup kedap-kedip
for(x=0; x<4 awal="" fungsi="" nbsp="" nilai="" perulangan="" x="0</p"> // nilai max x adalah kurang dari 4
// x++ fungsi penjumlah x+1
// x akan ditambah 1, hingga x<4 p=""> {
digitalWrite(kuning, HIGH); // menginstruksi lampu kuning untuk hidup
delay(500); // memberi jeda hidup lampu kuning selama setengah detik
digitalWrite(kuning, LOW); // menginstruksi lampu kuning untuk mati
delay(500); // memberi jeda mati lampu kuning selama setengah detik
}
}
void loop(){
buttonState = digitalRead(buttonPin); // membaca nilai dari pushbutton
if (buttonState == HIGH) { // mengecek apabila pushbutton ditekan
// jika ditekan, nilai dari pushbutton adalah HIGH
// lalu akan berlanjut dalam pengaturan nyala lampu-lampu
digitalWrite(hijau, LOW); // mengistruksikan lampu hijau untuk mati
hati2(); // memanggil fungsi hati2 untuk diproses program
digitalWrite(merah, HIGH); // mengistruksikan lampu merah untuk hidup
digitalWrite(hijauor, HIGH); // mengistruksikan lampu hijau-penyebrang untuk hidup
digitalWrite(merahor, LOW); // mengistruksikan lampu merah-penyebrang untuk mati
delay(10000); // memberi jeda hidup lampu merah, merahor dan hijauor selama 10 detik
hati2(); // memanggil fungsi hati2 untuk diproses program
digitalWrite(kuning, LOW); // mengistruksikan lampu kuning untuk mati
digitalWrite(merah, LOW); // mengistruksikan lampu merah untuk mati
digitalWrite(hijau, HIGH); // mengistruksikan lampu hijau untuk hidup
digitalWrite(hijauor, LOW); // mengistruksikan lampu hijau-penyebrang untuk mati
digitalWrite(merahor, HIGH); // mengistruksikan lampu merah-penyebrang untuk hidup
delay(10000); // memberi jeda waktu 10 detik dari lampu merah, merahor, hijauor kuning dan hijau sesuai pengkondisian
digitalWrite(hijau, LOW); // menginstruksikan lampu hijau untuk mati
}
else {
// menginstruksi lampu-lampu dalam kondisi tertentu saat saklar tidak ditekan:
digitalWrite(merah, LOW); // mengistruksikan lampu merah untuk mati
digitalWrite(kuning, LOW); // mengistruksikan lampu kuning untuk mati
digitalWrite(hijau, HIGH); // mengistruksikan lampu hijau untuk hidup
digitalWrite(merahor, HIGH); // mengistruksikan lampu merah-penyebrang untuk hidup
digitalWrite(hijauor, LOW); // mengistruksikan lampu hijau-penyebrang untuk mati
}
}
Video Hasil Dari Proyek Kedua
Memainkan LED Dengan Android via Bluetooth & Arduino
Dalam percobaan kali ini, kita akan mencoba mengontrol lampu LED dengan menggunakan smartphone android beserta alat yang utama yaitu dengan arduino dan modul bluetooth. Modul Bluetooth yang dipakai adalah seri HC-06.
Rangkaian alat ini adalah sebagai berikut:
Konfigurasi pin-pin:
TX pada modul bluetooth HC-06 masuk ke pin arduino nomer 10
RX pada modul bluetooth HC-06 masuk ke pin arduino nomer 11
VCC pada bluetooth masuk pada pin 3,3 volt arduino
GND pada bluetooth masuh pada pin GND pada arduino
Lampu Led dipasang pada pin nomer 13
Listing Program:
#include // import the serial library
SoftwareSerial Genotronex(10, 11); // RX, TX
int ledpin=13; // led on D13 will show blink on / off
int BluetoothData; // the data given from Computer
void setup() {
// put your setup code here, to run once:
Genotronex.begin(9600);
Genotronex.println("Bluetooth On please press 1 or 0 blink LED ..");
pinMode(ledpin,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (Genotronex.available()){
BluetoothData=Genotronex.read();
if(BluetoothData=='1'){ // if number 1 pressed ....
digitalWrite(ledpin,1);
Genotronex.println("LED On D13 ON ! ");
}
if (BluetoothData=='0'){// if number 0 pressed ....
digitalWrite(ledpin,0);
Genotronex.println("LED On D13 Off ! ");
}
}
delay(100);// }
SoftwareSerial Genotronex(10, 11); // RX, TX
int ledpin=13; // led on D13 will show blink on / off
int BluetoothData; // the data given from Computer
void setup() {
// put your setup code here, to run once:
Genotronex.begin(9600);
Genotronex.println("Bluetooth On please press 1 or 0 blink LED ..");
pinMode(ledpin,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if (Genotronex.available()){
BluetoothData=Genotronex.read();
if(BluetoothData=='1'){ // if number 1 pressed ....
digitalWrite(ledpin,1);
Genotronex.println("LED On D13 ON ! ");
}
if (BluetoothData=='0'){// if number 0 pressed ....
digitalWrite(ledpin,0);
Genotronex.println("LED On D13 Off ! ");
}
}
delay(100);// }
Video Hasil Percobaan
Tidak ada komentar:
Posting Komentar