Trafik Lambası ve Potansiyometre ile Süre Kontrolü
Arduino kullanarak trafik lambası hazırlayacağız ve devreye potansiyometre ekleyerek ışıkların yanma süresini değiştireceğiz.
Arduino kullanarak trafik lambası hazırladık ve bu devreye bir adet potansiyometre ekleyerek ışıkların yanma süresini pot ile değiştirdik.
- Arduino Uno
- 3 renk LED
- 10K Potansiyometre
LED bağlantılarında her LED için uygun seri direnç kullanılmalıdır. Potansiyometrenin orta bacağı A0 pinine, diğer iki bacağı ise 5V ve GND hatlarına bağlanır.
Potansiyometreden analogRead() ile 0–1023 aralığında değer okunur. Bu değer map() fonksiyonu ile 2000–6000 milisaniye aralığına çevrilir.
Böylece kırmızı ve yeşil ışıkların yanma süresi potansiyometre ile ayarlanabilir. Sarı ışık geçiş süresi ise örnekte sabit 1000 milisaniyedir.
Aşağıdaki kod, verdiğin orijinal yapıyı korur. Potansiyometreden okunan değere göre trafik lambasının bekleme süresi değişir.
int kirmizi=12;
int sari=11;
int yesil=10;
int pot=A0;
int potDeger;
void setup(){
pinMode(kirmizi,OUTPUT);
pinMode(sari,OUTPUT);
pinMode(yesil,OUTPUT);
}
void loop(){
potDeger=analogRead(pot);
potDeger=map(potDeger, 0, 1023, 2000, 6000);
delay(10);
lamba(potDeger);
}
void lamba(int sure){
digitalWrite(kirmizi,HIGH);
delay(sure);
digitalWrite(sari,HIGH);
delay(1000);
digitalWrite(kirmizi,LOW);
digitalWrite(sari,LOW);
digitalWrite(yesil,HIGH);
delay(sure);
digitalWrite(yesil,LOW);
digitalWrite(sari,HIGH);
delay(1000);
digitalWrite(sari,LOW);
digitalWrite(kirmizi,HIGH);
}
Bu sürümde aynı mantık korunur; ancak her aşamada LED durumları daha açık şekilde belirtilir. Böylece geçişlerde hangi LED’in yanıp hangisinin söndüğü daha net olur.
int kirmizi = 12;
int sari = 11;
int yesil = 10;
int pot = A0;
int potDeger;
void setup() {
pinMode(kirmizi, OUTPUT);
pinMode(sari, OUTPUT);
pinMode(yesil, OUTPUT);
}
void loop() {
potDeger = analogRead(pot);
potDeger = map(potDeger, 0, 1023, 2000, 6000);
lamba(potDeger);
}
void lamba(int sure) {
digitalWrite(kirmizi, HIGH);
digitalWrite(sari, LOW);
digitalWrite(yesil, LOW);
delay(sure);
digitalWrite(sari, HIGH);
delay(1000);
digitalWrite(kirmizi, LOW);
digitalWrite(sari, LOW);
digitalWrite(yesil, HIGH);
delay(sure);
digitalWrite(yesil, LOW);
digitalWrite(sari, HIGH);
delay(1000);
digitalWrite(sari, LOW);
}
Orijinal kod çalışır; düzenlenmiş kod ise eğitim amaçlı daha okunabilir hale getirilmiştir.