Merhabar ,
Arduinoya bağlı 5 LED ve 1 buton var.Butona her basıldığında ilgili LED yansın 6.basmada hepsi sönsün istiyorum.Buraya kadar olan kodu yazdım.
7.basmada olaylar başa dönsün istiyorum ve bunu yapamadım. Switch / Case fonksiyonunda bunu nasıl yaparız? Yardım eden üstad olursa şimdiden teşekkür ederim.
int led1=2;
int led2=3;
int led3=4;
int led4=5;
int led5=6;
int buton=14;
int deger=0;
void setup() {
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(buton,INPUT);
}
void loop() {
int sayac=digitalRead(buton);
delay(150);
if(sayac==HIGH){
deger = deger+1;
}
switch(deger){
case 1:
digitalWrite(led1,HIGH);
break;
case 2:
digitalWrite(led2,HIGH);
break;
case 3:
digitalWrite(led3,HIGH);
break;
case 4:
digitalWrite(led4,HIGH);
break;
case 5:
digitalWrite(led5,HIGH);
break;
case 6:
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
break;
}
}
Mesajınıza kodlarınızı "KOD" düğmesini kullanarak ekleyiniz.
case 6:
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
deger = 0; // bir boş adım isterseniz 0, hemen yanması için 1 yapılabilir.
break;
Sevgili Mehmet,
If Else kullanımında bu metod ise yarıyor. Fakat Switch Case kullanıldığında olmuyor.
Deger=0
yazsak bile serial monitörde bakınca buton değeri 7-8-9 diye devam ediyor. Başa dönmüyor.
if(sayac==HIGH){
deger = deger+1;
if(deger>=7) deger=0;
}
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int buton = 14;
int deger = 0;
void setup(void)
{
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(buton, INPUT);
}
void loop(void)
{
int sayac = digitalRead(buton);
if(sayac == HIGH) //debounce kismi
{
delay(150);
if(sayac == HIGH)
{
deger++; //deger = deger + 1;
}
}
Serial.print("Degisken degeri");
Serial.println(deger, DEC);
switch(deger)
{
case 1:
digitalWrite(led1, HIGH);
break;
case 2:
digitalWrite(led2, HIGH);
break;
case 3:
digitalWrite(led3, HIGH);
break;
case 4:
digitalWrite(led4, HIGH);
break;
case 5:
digitalWrite(led5, HIGH);
break;
case 6:
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
deger = 0; //???
Serial.print("Deger sifirlandi:");
Serial.println(deger);
Serial.println("");
break;
}
}
(http://www.zimagez.com/miniature/ekrangrnts2017-05-3013-03-45.php)
(http://www.zimagez.com/zimage/ekrangrnts2017-05-3013-03-45.php)
Sayın moderatör ,
zaman ayırıp cevap yazdığınız için teşekkür ederim. Kod çalışıyor.