Tuesday, February 08, 2011

Lampu lalulintas dengan Arduino severino

Pengaturan nyala lampu lalulintas dapat di atur dengan mudah dengan arduino severino, berikut ini adalah prinsip dan rangkaian dasar cara pengatur lampu lalulintas (ideal) dengan nyala lampu hijau 5 detik, nyala lampu kuning 2,5 detik (lampu kuning mulai menyala setelah lampu hijau menyala 4 detik) dan nyala lampu merah 5 detik.

Demo Video



R1=R2=R3=560 Ohm, LED1=Merah, LED2=Kuning, LED3=Hijau


List Program

/* Program pengatur nyala lampu lalintas (dasar dan ideal)
 oleh : Aan Darmawan
 http://valfa.blogspot.com
 */
const int pinMerah = 8;
const int pinKuning =9;
const int pinHijau = 10;

void setup() {                
  // inisialisasi digitalpin 8,9,10 sebagai output
  pinMode(pinMerah, OUTPUT);   
  pinMode(pinKuning, OUTPUT);   
  pinMode(pinHijau, OUTPUT);   
  digitalWrite(pinMerah,LOW); 
  digitalWrite(pinKuning,LOW); 
  digitalWrite(pinHijau,LOW); 
}

void loop() {                
  //Led Hijau Nyala 4 detik ,Led kuning dan merah padam
  digitalWrite(pinMerah,LOW); 
  digitalWrite(pinKuning,LOW); 
  digitalWrite(pinHijau,HIGH);
  delay(4000); 
  //Led kuning dan hijau Nyala 1 detik ,Led merah padam
  digitalWrite(pinKuning,HIGH); 
  delay(1000);   
  //Led Kuning masih Nyala 1,5detik ,Led hijau dan merah padam
  digitalWrite(pinMerah,LOW); 
  digitalWrite(pinKuning,HIGH); 
  digitalWrite(pinHijau,LOW);
  delay(1500); 
  //Led Merah Nyala 5 detik ,Led kuning dan hijau padam
  digitalWrite(pinMerah,HIGH); 
  digitalWrite(pinKuning,LOW); 
  digitalWrite(pinHijau,LOW);
  delay(5000); 
}

4 comments:

Anonymous said...

Listing program yg saya buat seperti d bawah,.....dimana salahnya sehingga relay pada pin 1 (digital) tidak dapat low(off),....makasih atas bantuannya

int relayPinA = 1;
int relayPinB = 2;
int relayPinC = 3;
boolean status = true;
#define pinDataTempA 0 // pin tengah LM35 ke port Analog 0
#define pinDataTempB 1

float temperatureA; // variable untuk menyimpan data suhu
float temperatureB; // float berarti hasilnya akan ada koma
// kalau int hasilnya berupa pembulatan

void setup()
{
pinMode(relayPinA, OUTPUT);
pinMode(relayPinB, OUTPUT);
pinMode(relayPinC, OUTPUT);

Serial.begin(9600);
}
void loop()
{
digitalWrite(relayPinA, status);
digitalWrite(relayPinB, status);
delay(500);
digitalWrite(relayPinA, LOW);
delay(300);
digitalWrite(relayPinB, LOW);
delay(100);
digitalWrite(relayPinC, HIGH);
delay(300);
digitalWrite(relayPinC, LOW);
delay(100);
{
temperatureA = analogRead(pinDataTempA);
temperatureA = temperatureA * (5.0 * 100.0/1024.0);
Serial.print(" Temperatur sensor A saat ini (Celcius) : ");
Serial.println(temperatureA);
delay(100);

temperatureB = analogRead(pinDataTempB);
temperatureB = temperatureB * (5.0 * 100.0/1024.0);
Serial.print(" Temperatur sensor B saat ini (Celcius) : ");
Serial.println(temperatureB);
delay(100);
}
}

Aan Darmawan H said...

Kemungkinan besar salahnya pakai pin 1, karena pin 1 dipakai untuk komunikasi serial, jadi bentrok, coba ubah pin 1 nya dengan pin yang lain......

Anonymous said...

Ok,.....Trima Kasih Pak...
Kapan2 di bahas dong gimana caranya menampilkan suhu disertai dengan waktu,..misalnya 27 C 11:45:23 PM

Aan Darmawan H said...

Ok, saya usahakan.. :-)