Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

5 LED 1 Buton

Başlatan obina, 28 Mayıs 2017, 11:03:13

obina

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;  
}
}


mehmet

Mesajınıza kodlarınızı "KOD" düğmesini kullanarak ekleyiniz.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

mehmet

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;
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

obina

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.

mg1980

#4
if(sayac==HIGH){ 
deger = deger+1;
if(deger>=7) deger=0;
}

mehmet

#5
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; 
  }
}



 
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

obina

Sayın moderatör ,
zaman ayırıp cevap yazdığınız için teşekkür ederim. Kod çalışıyor.