Arduino buton ile sürekli yanan LED

Eren3553

Üye
Katılım
19 Kas 2019
Mesajlar
32
Puanları
1
Yaş
24
Selamün Aleyküm arduino ile butona basıldığında LED'leri butondan elimizi çektiğimizde yanmaya devan eden tekrar butona basıldığında LED'leri söndüren basit bir kod yazdım, kod çalışıyor fakat stabil değil bazen 2 3 kez yada uzun süreli butona basmak gerekiyor. Nerede hata yapıyorum ?
Kod:
int LED1= 8;

int LED2= 7;

int LED3= 6;

int LED4= 5;

int LED5= 4;

int Buton=9;

boolean deger=0;

int durumled=0;



void setup() {



pinMode(8,OUTPUT);

pinMode(6,OUTPUT);

pinMode(7,OUTPUT);

pinMode(6,OUTPUT);

pinMode(5,OUTPUT);

pinMode(4,OUTPUT);

pinMode(9,INPUT);



}

void loop() {



if (digitalRead(Buton)==1)

{

  hepsiacikled:

  digitalWrite(LED1,HIGH);

  delay(20);

  digitalWrite(LED2,HIGH);

  delay(20);

  digitalWrite(LED3,HIGH);

  delay(20);

  digitalWrite(LED4,HIGH);

  delay(20);

  digitalWrite(LED5,HIGH);

  delay(20);





  if (digitalRead(Buton)==0){

  goto hepsiacikled;}

  else goto hepsikapali;

 

}



else

hepsikapali:

digitalWrite(LED1,LOW);

  delay(20);

  digitalWrite(LED2,LOW);

  delay(20);

  digitalWrite(LED3,LOW);

  delay(20);

  digitalWrite(LED4,LOW);

  delay(20);

  digitalWrite(LED5,LOW);

  delay(20);

}
 
Moderatör tarafında düzenlendi:
Ne dili bu

Basic ile c karışmış sanki
 
Ne dili bu

Basic ile c karışmış sanki
Doğrudur olabilir. Yazarken karıştı biraz ama çözümün doğru olduğunu düşünüyorum her ne kadar çok sağlıklı bir kod olmasa da çalışması gerek zanlımca, digitalRead komutunun öncesine ve sonrasına bekleme süresi koyuyorum bu sefer de farklı sıkıntılar çıkıyor gene stabil olmuyor. LED'lerin arasındaki delay'ları sildim fakat silsem de dursa da oluşan hataya bir etkisi olmaması lazım.
 
Şu örnek üzerinden gidebilirsiniz.

Burada Arduino üzerindeki 13 numaralı ışığı ve 12 numaralı kapıyı harici ışık olarak kullandım. Ama isterseniz ışık sayısını istediğiniz kadar arttırabilirsiniz.

arduinodugme.png

C++:
#include <Arduino.h>

const int sariIsik  = 13;
const int beyazIsik = 12;
const int dugme = 8;

// Düğmeye kaç kez basıldığını tutan bir değişken tanımlıyoruz
int dugmeSayaci = 0;
// Düğmenin basılı olup olmadığını belirten bir değişken tanımlıyoruz
int dugmeDurumu = 0;
int oncekiDurum = 0;

void setup()
{
    pinMode(sariIsik, OUTPUT);
    pinMode(beyazIsik, OUTPUT);
    pinMode(dugme, INPUT);
}

void tumIsiklariYak()
{
    // Tüm ışıkları yak
    digitalWrite(sariIsik, HIGH);
    digitalWrite(beyazIsik, HIGH);
}

void tumIsiklariSondur()
{
    // Hepsini söndür
    digitalWrite(sariIsik, LOW);
    digitalWrite(beyazIsik, LOW);
}

void loop()
{
    // Düğmenin durumunu okuyoruz
    dugmeDurumu = digitalRead(dugme);

    // Düğmenin durumunu bir önceki durumla karşılaştır
    if (dugmeDurumu != oncekiDurum)
    {
        // Eğer düğmeye basıldıysa
        if (dugmeDurumu == HIGH)
        {
            // Sayacı 1 arttır
            dugmeSayaci++;
        }
        else
        {
            // Düğme bırakıldı bir şey yapmaya gerek yok
        }
        oncekiDurum = dugmeDurumu;
    }

    if (dugmeSayaci % 2 == 0)
    {
        tumIsiklariYak();
    }
    else
    {
        tumIsiklariSondur();
    }
}
 

Yeni mesajlar

Forum istatistikleri

Konular
128,190
Mesajlar
915,724
Kullanıcılar
449,960
Son üye
katzeimar

Yeni konular

Çevrimiçi üyeler

Geri
Üst