Buton Fonksiyonları Hakkında
  • Selamlar,

    Arduino UNO daki digital pinlere nasıl ki ayrı ayrı butonlarla sinyal gönderebiliyorum, yapmak istediğim şey tek butonla her basışta farklı pinleri HIGH yapmak. Yani butona basınca 1.pin HIGH olacak, birdaha basınca 1.pin LOW-2.pin HIGH olacak, birdaha basınca 2.pin LOW, 3.pin High olacak vs..şeklinde ben döngüyü başa döndürene kadar buton fonksiyonu böyle çalışsın istiyorum. Bu nasıl bir kodlamayla yapılabilir? Tşk.
  • devamlı standart olarak her bastıgında sırasıyla bır cıkışı aktıf etmek ıcın kod ıcınde bunu sıralayacaksın ve sayacaksın. yada karısık olarak tek butona ybastıgında ıstedıgın cıkışı sececeksen buton basma suresını olçup surelere gore cıkışları aktıf edersın.
  • if(butondegeri==1)
    {
    digitalWrite(1,1);
    if(digitalRead(1)==1)
    {
    digitalWrite(2,1);
    digitalWrite(1,0);
    }
    gibi
  • Merhabalar,
    Devremde 3 adet led var ve tüm kodlama aşağıdaki gibi .Butona ilk basışta K ledi yanıyor ama sonraki basışlarda if döngüleri i,p,t değişkenleri değişmesine rağmen işlem yapmıyor. Neden olabilir? Tşk.

    int buton=2;
    int K=5;
    int S=6;
    int Y=7;
    int i=0;
    int p;
    int t;

    void setup()
    {
    pinMode(buton, INPUT);
    pinMode(K, OUTPUT);
    pinMode(S, OUTPUT);
    pinMode(Y, OUTPUT);
    Serial.begin(9600);
    }

    void loop()
    {
    if (digitalRead(buton)==HIGH)
    {
    i=i+1;
    digitalWrite(K, HIGH);
    digitalWrite(S, LOW);
    digitalWrite(Y,LOW);
    }

    else if ((digitalRead(buton)==HIGH) && (i==1))
    {
    p=i+1;
    digitalWrite(K, LOW);
    digitalWrite(S, HIGH);
    digitalWrite(Y,LOW);
    }
    else if ((digitalRead(buton)==HIGH) && (p==2))
    {
    digitalWrite(K, LOW);
    digitalWrite(S, LOW);
    digitalWrite(Y,HIGH);
    }
    }

  • 7 segment display örneklerine bak, bir fikir verecektir
  • daha basit bir mantıktan gitsen kontrol açısından şu değişkeni yukarıda bı yerde tanımla
    int sahne=0;


    sanra loopta aşağıdaki gibi bir mantık kurabılırsın belki


    if (digitalRead(buton)==HIGH)
    {
    sahne=sahne+1;
    if(sahne>=4){sahne=1}
    }

    if(sahne==1)
    {
    //burada ilk durumda neler yapacaksan
    }

    if(sahne==2)
    {
    //burada 2. durumda neler yapacaksan
    }
  • Merhabalar,
    Teşekkürler çözdüm. Özellikle Switch-case çözümü ile problem çözüldü..

    void loop()
    {
    if (digitalRead(buton)==HIGH)
    {
    i++;
    delay(250);
    Serial.println(i);
    }
    switch(i)

    {
    case(1):
    digitalWrite(K, HIGH);
    digitalWrite(S, LOW);
    digitalWrite(Y,LOW);
    break;

    case(2):
    digitalWrite(K, LOW);
    digitalWrite(S, HIGH);
    digitalWrite(Y,LOW);
    break;

    case(3):
    digitalWrite(K, LOW);
    digitalWrite(S, LOW);
    digitalWrite(Y,HIGH);
    break;
  • Tekrar merhabalar,

    Yukarıdaki switch-case çözümünde case(3) ten sonra butona her basışta yine case(1), case(2), case(3) şeklinde sonsuz döngüye girsin istiyorum. Bunu case(3) ten sonra bir default oluşturup arduinoyu resetleyerek çözdüm aslında. (i değerini sıfırlamak için) Ama bundan başka i değerinin 3 ten büyük olması durumunda bile case(1), case(2), case(3) sıralamasını sınırsız bir şekilde takip edebilecek bir döngü nasıl yaratabilirim? acaba? Tşk.
  • case(3):
    digitalWrite(K, LOW);
    digitalWrite(S, LOW);
    digitalWrite(Y,HIGH);
    i=0;
    break;
  • Merhaba okoman;
    Basit olan güzeldir sözünü bir kez daha ispatlamış oldunuz. :) Bakıyorum da ben naapmışım öyle arduinoyu resetlemek falan :)) Tşk....

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.