Datayı sadece basıldığında gönderen buton
  • Öncelikle buna benzer bi konu varsa üzgünüm araştırdım ama bulamadım..

    Bir buton yapmaya çalışıyorum;
    işleyişi şöyle olacak,butona bastığımda seri porta butona basıldı yazacak(sadece bir defa),butonu bıraktığımda ise buton bırakıldı yazacak(sadece bir defa) butona dokunulmadıkça data göndermesini istemiyorum.. bi çok yol denedim bounce felan kullandım butonstate ler ile denedim ama bi türlü istediğim şekilde yapamadım...

    normal buton şeklinde yaparsam durmaksızın data yazıyor butona basıldı yada basılmadı diye...
  • loop
    butona basıldımı 1 mı kontrol et basılı ıse
    burada dön ve buton bırakıldımı yani 0 oldumu kontrol et ve burada yine dön

    loopson
  • void loop(){

    Knx.task();

    if (button_durumu == 0 && button_1 == HIGH ) {
    button_durumu = 1;
    Knx.write(0,1);
    if (button_durumu == 1 && button_1 == LOW){
    button_durumu=0;
    Knx.write(0,0);
    }
    else{}
    }

    sanırım bunu demek istedin..
  • while (button_1 == LOW)
    {
    if (button_1 == HIGH ) {
    //buton 1 oldu yolla burada
    while (button_1 == HIGH ){
    if (button_1 == LOW ) {
    //buton1 0 oldu yolla
    }

    }
    }

    denemedim ama bu olabilir butonu basılıyken de bekler bırakıncaya kadar döner
  • Yaz arkana bile bakma :)

    int kontrol1=1, kontrol2=0;

    if(buton1)
    {
    kontrol2=1;
    if(kontrol1)
    {
    kontrol1=0;
    Serial.println("butona basildi");
    }
    }
    else
    {
    kontrol1=1;
    if(kontrol2)
    {
    kontrol2=0;
    Serial.println("buton birakildi");
    }
    }
  • Örneklemeler için teşekkür ediyorum işime yaracak şekilde kullanmaya çalıştım..

    void loop(){

    Knx.task();
    button1 = digitalRead(button_1);

    if(button_durumu == 0 && button1 == HIGH)
    {
    button_durumu=1;
    Knx.write(0,1);
    Knx.read(0,oku);
    if(oku == 0){
    digitalWrite(led,HIGH);
    }
    delay(100);
    }
    else if(button_durumu == 1 && button1 == LOW)
    {
    button_durumu=0;
    Knx.write(0,0);
    Knx.read(0,oku);
    if(oku == 1){
    digitalWrite(led,LOW);
    }
    delay(100);
    }
    else{}

    şu şekilde yaptığımda verim aldım. sonuç gayet güzel...

    program çıktıyı sadece butona basıldığı ilk an ve buton bırakıldığı ilk an olmak üzere 1 er adet çıktı veriyor.. Yaptığı butonun sürekli data üretmesinden şikayet eden arkadaşların işine yarar umarım..

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.