Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: obina - 28 Mayıs 2017, 11:03:13

Başlık: 5 LED 1 Buton
Gönderen: obina - 28 Mayıs 2017, 11:03:13
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; 
}
}

Başlık: Ynt: 5 LED 1 Buton
Gönderen: mehmet - 28 Mayıs 2017, 13:44:02
Mesajınıza kodlarınızı "KOD" düğmesini kullanarak ekleyiniz.
Başlık: Ynt: 5 LED 1 Buton
Gönderen: mehmet - 30 Mayıs 2017, 00:57:55
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;
Başlık: Ynt: 5 LED 1 Buton
Gönderen: obina - 30 Mayıs 2017, 03:27:14
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.
Başlık: Ynt: 5 LED 1 Buton
Gönderen: mg1980 - 30 Mayıs 2017, 10:25:12

if(sayac==HIGH){
deger = deger+1;
if(deger>=7) deger=0;
}
Başlık: Ynt: 5 LED 1 Buton
Gönderen: mehmet - 30 Mayıs 2017, 12:43:14

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)
Başlık: Ynt: 5 LED 1 Buton
Gönderen: obina - 30 Mayıs 2017, 18:06:24
Sayın moderatör ,
zaman ayırıp cevap yazdığınız için teşekkür ederim. Kod çalışıyor.