Serial porttan tuşa basılı kaldığı sürece tek komut gönderme
  • Merhaba, serial porttan ekrana veri yazdırırken bir tuşa bastığımda sadece bir defa komut göndermesini nasıl sağlayabilirim acaba. Normalde yazınca tuş basılı olduğu sürece sürekli veri gönderiyor.benim istediğim ise tuş basıldığında sadece bir kez göndersin ve basılı kaldığı sürece komut göndermesin bırakıp tekrar basılınca komut gitmesini istiyorum.
  • bir değişken tanımla değişken sıfırsa komutu at ve degısşkenı 1 yap butondan elını kaldırdıgında bu degıskenı 0 yap.
  • boolean basildimi = false; // baslangicta tanimla

    lop içinde

    if (digitalRead(tuspini) == HIGH && !basildimi) { // tusa basildiysa ve basildimi tanimi true degilse
    Serial.println ("Tusa Basildi");
    basildimi = true; // basildimi true olsun ki buraya bir daha bakmasin
    } else if (digitalRead(tuspini) == LOW) {
    basildimi = false;
    }

    buton 5v gönderirse aksi durumda HIGH ve LOW ların yerlerini değiş
  • çok teşekkür ederim işime yaradı.
  • bu işlemi birden fazla buton ile nasıl yaptırabilirim peki bir türlü çözemedim. birinci butona basınca 1 ikinci butona basınca 2 üçüncü butona basınca ekrana 3 yazacak. Döngüye mi sokmam lazım
  • Herşeyi yazılımsal olarak yaparsan kaynak israfı olur. Adamlar bunun için interrupt diye bişey icat etmişler. İşlemciyi uykuya yatırıyorsun, butona basınca uyanıp görevini yapmaya gidiyor. External interrupt diye arat çıkar.
  • Kesme kullanmak isime yaramiyor cunku ayni anda iki butona basilabilir olmali
  • boolean ikincibutton= false;
    if (digitalRead(ikincituspini) == HIGH && !ikincibutton) {

    şeklinde kodları çoğaltın 2. 3. buttonlar için
  • o şekilde denediğimde nedense hata verdi. For döngüsü ile şu şekilde yaptım ve oldu. Yardımlarınız için teşekkürler. Belki lazım olan arkadaşlar olur. Kodlar aşağıda:

    boolean b[5];
    int pin[5]={3,4,5,6,7};// buton pinleri

    void setup(){
    for(int i=0;i<5;i++){<br />pinMode(pin[i],INPUT);//
    }
    serial.begin(9600);
    }
    void loop(){
    for(int i=0;i<5;i++){<br />if (!b[i] && digitalRead(pin[i])) { b[i]=1;Serial.print(i);Serial.println(". Butona Basidi");}
    if(!digitalRead(pin[i]) b[i]=0;
    }
    }

Howdy, Stranger!

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

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