Led ve Buton
  • Öncelikle merhabalar forumda yeniyim cevaplarınız benim için önemli,
    Önceden 10 tane rgb ledi tek buton ile aynı anda hepsinin rengini değiştiren kodu yaptım.
    Fakat kodlamada bir hata var ben sırayla yanarken tek butona basınca renk değiştirmesini istiyorum.
    Ama maalesef bir türlü beceremedim, yani 10 led sırayla yanarken 1 butona basınca sıra bozulmadan yanan ledlerin rengi farklı bir renkle yanmaya başlayacak.
    Örneklemek gerekirse bir rgb ampul olduğunu düşünün sarı renk olarak yanıp yanıp sönüyor fakat 1 butona basınca yanan rek değişecek.
    Ayrıca alt yoruma bendeki kodu da ekliyorum üzerinde daha rahat oynama yapabilin diye.
    Yardımlarınız benim için gerçekten çok önemli.
  • 10 rgb ledin rengini 1 buton ile aynı anda değiştiren kod:

    int m1Led=3;
    int y1Led=2;
    int k1Led=1;
    int m2Led=6;
    int y2Led=5;
    int k2Led=4;

    int m3Led=9;
    int y3Led=8;
    int k3Led=7;
    int m4Led=12;
    int y4Led=11;
    int k4Led=10;

    int m5Led=15;
    int y5Led=14;
    int k5Led=13;
    int m6Led=18;
    int y6Led=17;
    int k6Led=16;

    int m7Led=21;
    int y7Led=20;
    int k7Led=19;
    int m8Led=24;
    int y8Led=23;
    int k8Led=22;

    int m9Led=27;
    int y9Led=26;
    int k9Led=25;
    int m10Led=30;
    int y10Led=29;
    int k10Led=28;

    int butonLed=37;
    boolean oncekiDurum=LOW;
    boolean simdikiDurum=LOW;
    int ledMod=0;

    void setup() {
    pinMode(butonLed, INPUT);
    pinMode(m1Led, OUTPUT);
    pinMode(y1Led, OUTPUT);
    pinMode(k1Led, OUTPUT);
    pinMode(m2Led, OUTPUT);
    pinMode(y2Led, OUTPUT);
    pinMode(k2Led, OUTPUT);

    pinMode(m3Led, OUTPUT);
    pinMode(y3Led, OUTPUT);
    pinMode(k3Led, OUTPUT);
    pinMode(m4Led, OUTPUT);
    pinMode(y4Led, OUTPUT);
    pinMode(k4Led, OUTPUT);

    pinMode(m5Led, OUTPUT);
    pinMode(y5Led, OUTPUT);
    pinMode(k5Led, OUTPUT);
    pinMode(m6Led, OUTPUT);
    pinMode(y6Led, OUTPUT);
    pinMode(k6Led, OUTPUT);

    pinMode(m7Led, OUTPUT);
    pinMode(y7Led, OUTPUT);
    pinMode(k7Led, OUTPUT);
    pinMode(m8Led, OUTPUT);
    pinMode(y8Led, OUTPUT);
    pinMode(k8Led, OUTPUT);

    pinMode(m9Led, OUTPUT);
    pinMode(y9Led, OUTPUT);
    pinMode(k9Led, OUTPUT);
    pinMode(m10Led, OUTPUT);
    pinMode(y10Led, OUTPUT);
    pinMode(k10Led, OUTPUT);

    }
    boolean butonLedKontrol(boolean durum)
    {
    boolean simdikiDurum=digitalRead(butonLed);
    if(durum=!simdikiDurum)
    {
    delay(5);
    simdikiDurum=digitalRead(butonLed);
    }
    return simdikiDurum;
    }

    void rgbAyar(int renkMod)
    {
    if(renkMod==1)
    {
    digitalWrite(m1Led, LOW);
    digitalWrite(y1Led, HIGH);
    digitalWrite(k1Led, HIGH);
    digitalWrite(m2Led, LOW);
    digitalWrite(y2Led, HIGH);
    digitalWrite(k2Led, HIGH);

    digitalWrite(m3Led, LOW);
    digitalWrite(y3Led, HIGH);
    digitalWrite(k3Led, HIGH);
    digitalWrite(m4Led, LOW);
    digitalWrite(y4Led, HIGH);
    digitalWrite(k4Led, HIGH);

    digitalWrite(m5Led, LOW);
    digitalWrite(y5Led, HIGH);
    digitalWrite(k5Led, HIGH);
    digitalWrite(m6Led, LOW);
    digitalWrite(y6Led, HIGH);
    digitalWrite(k6Led, HIGH);

    digitalWrite(m7Led, LOW);
    digitalWrite(y7Led, HIGH);
    digitalWrite(k7Led, HIGH);
    digitalWrite(m8Led, LOW);
    digitalWrite(y8Led, HIGH);
    digitalWrite(k8Led, HIGH);

    digitalWrite(m9Led, LOW);
    digitalWrite(y9Led, HIGH);
    digitalWrite(k9Led, HIGH);
    digitalWrite(m10Led, LOW);
    digitalWrite(y10Led, HIGH);
    digitalWrite(k10Led, HIGH);

    }
    else if(renkMod==2)
    {
    digitalWrite(m1Led, LOW);
    digitalWrite(y1Led, LOW);
    digitalWrite(k1Led, HIGH);
    digitalWrite(m2Led, LOW);
    digitalWrite(y2Led, LOW);
    digitalWrite(k2Led, HIGH);

    digitalWrite(m3Led, LOW);
    digitalWrite(y3Led, LOW);
    digitalWrite(k3Led, HIGH);
    digitalWrite(m4Led, LOW);
    digitalWrite(y4Led, LOW);
    digitalWrite(k4Led, HIGH);

    digitalWrite(m5Led, LOW);
    digitalWrite(y5Led, LOW);
    digitalWrite(k5Led, HIGH);
    digitalWrite(m6Led, LOW);
    digitalWrite(y6Led, LOW);
    digitalWrite(k6Led, HIGH);

    digitalWrite(m7Led, LOW);
    digitalWrite(y7Led, LOW);
    digitalWrite(k7Led, HIGH);
    digitalWrite(m8Led, LOW);
    digitalWrite(y8Led, LOW);
    digitalWrite(k8Led, HIGH);

    digitalWrite(m9Led, LOW);
    digitalWrite(y9Led, LOW);
    digitalWrite(k9Led, HIGH);
    digitalWrite(m10Led, LOW);
    digitalWrite(y10Led, LOW);
    digitalWrite(k10Led, HIGH);

    }
    else if(renkMod==3)
    {
    digitalWrite(m1Led, HIGH);
    digitalWrite(y1Led, LOW);
    digitalWrite(k1Led, HIGH);
    digitalWrite(m2Led, HIGH);
    digitalWrite(y2Led, LOW);
    digitalWrite(k2Led, HIGH);

    digitalWrite(m3Led, HIGH);
    digitalWrite(y3Led, LOW);
    digitalWrite(k3Led, HIGH);
    digitalWrite(m4Led, HIGH);
    digitalWrite(y4Led, LOW);
    digitalWrite(k4Led, HIGH);

    digitalWrite(m5Led, HIGH);
    digitalWrite(y5Led, LOW);
    digitalWrite(k5Led, HIGH);
    digitalWrite(m6Led, HIGH);
    digitalWrite(y6Led, LOW);
    digitalWrite(k6Led, HIGH);

    digitalWrite(m7Led, HIGH);
    digitalWrite(y7Led, LOW);
    digitalWrite(k7Led, HIGH);
    digitalWrite(m8Led, HIGH);
    digitalWrite(y8Led, LOW);
    digitalWrite(k8Led, HIGH);

    digitalWrite(m9Led, HIGH);
    digitalWrite(y9Led, LOW);
    digitalWrite(k9Led, HIGH);
    digitalWrite(m10Led, HIGH);
    digitalWrite(y10Led, LOW);
    digitalWrite(k10Led, HIGH);

    }
    else if(renkMod==4)
    {
    digitalWrite(m1Led, HIGH);
    digitalWrite(y1Led, LOW);
    digitalWrite(k1Led, LOW);
    digitalWrite(m2Led, HIGH);
    digitalWrite(y2Led, LOW);
    digitalWrite(k2Led, LOW);

    digitalWrite(m3Led, HIGH);
    digitalWrite(y3Led, LOW);
    digitalWrite(k3Led, LOW);
    digitalWrite(m4Led, HIGH);
    digitalWrite(y4Led, LOW);
    digitalWrite(k4Led, LOW);

    digitalWrite(m5Led, HIGH);
    digitalWrite(y5Led, LOW);
    digitalWrite(k5Led, LOW);
    digitalWrite(m6Led, HIGH);
    digitalWrite(y6Led, LOW);
    digitalWrite(k6Led, LOW);

    digitalWrite(m7Led, HIGH);
    digitalWrite(y7Led, LOW);
    digitalWrite(k7Led, LOW);
    digitalWrite(m8Led, HIGH);
    digitalWrite(y8Led, LOW);
    digitalWrite(k8Led, LOW);

    digitalWrite(m9Led, HIGH);
    digitalWrite(y9Led, LOW);
    digitalWrite(k9Led, LOW);
    digitalWrite(m10Led, HIGH);
    digitalWrite(y10Led, LOW);
    digitalWrite(k10Led, LOW);

    }
    else if(renkMod==5)
    {
    digitalWrite(m1Led, HIGH);
    digitalWrite(y1Led, HIGH);
    digitalWrite(k1Led, LOW);
    digitalWrite(m2Led, HIGH);
    digitalWrite(y2Led, HIGH);
    digitalWrite(k2Led, LOW);

    digitalWrite(m3Led, HIGH);
    digitalWrite(y3Led, HIGH);
    digitalWrite(k3Led, LOW);
    digitalWrite(m4Led, HIGH);
    digitalWrite(y4Led, HIGH);
    digitalWrite(k4Led, LOW);

    digitalWrite(m5Led, HIGH);
    digitalWrite(y5Led, HIGH);
    digitalWrite(k5Led, LOW);
    digitalWrite(m6Led, HIGH);
    digitalWrite(y6Led, HIGH);
    digitalWrite(k6Led, LOW);

    digitalWrite(m7Led, HIGH);
    digitalWrite(y7Led, HIGH);
    digitalWrite(k7Led, LOW);
    digitalWrite(m8Led, HIGH);
    digitalWrite(y8Led, HIGH);
    digitalWrite(k8Led, LOW);

    digitalWrite(m9Led, HIGH);
    digitalWrite(y9Led, HIGH);
    digitalWrite(k9Led, LOW);
    digitalWrite(m10Led, HIGH);
    digitalWrite(y10Led, HIGH);
    digitalWrite(k10Led, LOW);

    }
    else if(renkMod==6)
    {
    digitalWrite(m1Led, HIGH);
    digitalWrite(y1Led, HIGH);
    digitalWrite(k1Led, HIGH);
    digitalWrite(m2Led, HIGH);
    digitalWrite(y2Led, HIGH);
    digitalWrite(k2Led, HIGH);

    digitalWrite(m3Led, HIGH);
    digitalWrite(y3Led, HIGH);
    digitalWrite(k3Led, HIGH);
    digitalWrite(m4Led, HIGH);
    digitalWrite(y4Led, HIGH);
    digitalWrite(k4Led, HIGH);

    digitalWrite(m5Led, HIGH);
    digitalWrite(y5Led, HIGH);
    digitalWrite(k5Led, HIGH);
    digitalWrite(m6Led, HIGH);
    digitalWrite(y6Led, HIGH);
    digitalWrite(k6Led, HIGH);

    digitalWrite(m7Led, HIGH);
    digitalWrite(y7Led, HIGH);
    digitalWrite(k7Led, HIGH);
    digitalWrite(m8Led, HIGH);
    digitalWrite(y8Led, HIGH);
    digitalWrite(k8Led, HIGH);

    digitalWrite(m9Led, HIGH);
    digitalWrite(y9Led, HIGH);
    digitalWrite(k9Led, HIGH);
    digitalWrite(m10Led, HIGH);
    digitalWrite(y10Led, HIGH);
    digitalWrite(k10Led, HIGH);

    }
    else if(renkMod==7)
    {
    digitalWrite(m1Led, LOW);
    digitalWrite(y1Led, LOW);
    digitalWrite(k1Led, LOW);
    digitalWrite(m2Led, LOW);
    digitalWrite(y2Led, LOW);
    digitalWrite(k2Led, LOW);

    digitalWrite(m3Led, LOW);
    digitalWrite(y3Led, LOW);
    digitalWrite(k3Led, LOW);
    digitalWrite(m4Led, LOW);
    digitalWrite(y4Led, LOW);
    digitalWrite(k4Led, LOW);

    digitalWrite(m5Led, LOW);
    digitalWrite(y5Led, LOW);
    digitalWrite(k5Led, LOW);
    digitalWrite(m6Led, LOW);
    digitalWrite(y6Led, LOW);
    digitalWrite(k6Led, LOW);

    digitalWrite(m7Led, LOW);
    digitalWrite(y7Led, LOW);
    digitalWrite(k7Led, LOW);
    digitalWrite(m8Led, LOW);
    digitalWrite(y8Led, LOW);
    digitalWrite(k8Led, LOW);

    digitalWrite(m9Led, LOW);
    digitalWrite(y9Led, LOW);
    digitalWrite(k9Led, LOW);
    digitalWrite(m10Led, LOW);
    digitalWrite(y10Led, LOW);
    digitalWrite(k10Led, LOW);

    }
    }

    void loop()
    {
    simdikiDurum=butonLedKontrol(oncekiDurum);
    if(oncekiDurum==LOW && simdikiDurum==HIGH)
    {
     ledMod++;
    }
    oncekiDurum=simdikiDurum;
    if(ledMod==8)
     ledMod=0;
    rgbAyar(ledMod);
    }
  • dostum, ben bişey anlamadım. problemi kodla değilde türkçe anlatmayı denermisin.
  • Bendeki kod 10 ledin rengini aynı anda değiştiriyor.
    Ben ledler sırayla yanarken butona basınca farklı renkle yanmaya devam etmesini istiyorum.
  • Çok uzman değilim ama sanki delay komutunu aralara koyman gerekiyor. Sonuçta arduino bunları sırayla yapıyor ama çok hızlı olduğu için aynı anda gözüküyor
  • olay söyle sanirim
    simdi 10 led kirmizi olarak sirayla yanmaya basladi
    1 - 2 - 3
    tam bu esnada buttona bastin ve simdi 4-5-6 ... Yesil olarak yanmaya devam edecek?
    eski yanmis olan 1-2-3 kirmizi olarak mi kalacak onlarda yesile dönecekmi?

  • //butonLedKontrol olayını boşver




    simdikiDurum=digitalRead(butonLed);

    if((oncekiDurum!=simdikiDurum)&&(simdikiDurum==HIGH))
    {
    ledMod++;
    }
    oncekiDurum=simdikiDurum;
    if(ledMod==8)
    ledMod=0;
    rgbAyar(ledMod);
    }
    Şeklinde dene
    Saygılar..

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.