/*Yürüyen Işık Hız Değiştirme: Arduino’ ya bağlı 8 adet LED ile yürüyen ışık devresi
kurulacaktır. Bağlanan bir potansiyometre ile yürüyen ışık devresinin hız ayarı
yapılacaktır. Hız ayarı en az 50ms, en yüksek 2sn’ ye ayarlanabilmelidir. LED’ ler
arası verilen gecikmenin potansiyometre’ den değer okunmasını etkilememesi beklenmektedir.*/
int led1=2;
int led2=3;
int led3=4;
int led4=5;
int led5=6;
int led6=7;
int led7=8;
int led8=9;
int pot=A0;
unsigned long currentMillis=0;
unsigned long previousMillis=0;
unsigned long time=0;
int a=2;
void setup(){
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(led7, OUTPUT);
pinMode(led8, OUTPUT);
pinMode(pot, INPUT);
}
void loop(){
int potPin=analogRead(pot);
time=map(potPin,0,1023,50,2000);
currentMillis=millis();
if((currentMillis - previousMillis) > time){
previousMillis=currentMillis;
for(int i=2; i < 10; i++){
digitalWrite(i, LOW);
}
digitalWrite(a,HIGH);
a++;
if(a>=9){
a=2;
}
}
}
/*map fonksiyonu ile A0 portundan okunan değerleri istenilen aralık olan 50 - 2000
milisaniye aralığına dağıttım.
A0 pot pinini INPUT olarak belitrmek gerekli değil.A0 pinleri zaten inptu pinleri.
Yine de belirttim.
millis() yapısı kullanarak ledler arası geçiş sırasında potansiyometreden okunacak
değerlerin engellenmesinin önüne geçtik.delay() kullanımı engellerdi.
time değişkenine potansiyometreden okunan değerleri atadım.millis() fonksiyonuyla
kontrolü sağlayarak time değişkenyile kıyasladım ve ledler arası geçişi kontrol etmiş
oldum.*/