Bilgisayar-Bilişim Teknolojileri
Ana Sayfa
Bilişim Teknolojileri Forumu Son Konuları
24 Saat
Bilişim Teknolojileri - Formatör - Bilgisayar Öğretmeni Kayıt
Kayıt Olun
iletişim
iletişim
Detaylı Arama
Arama
Yeni Konu Aç
Yeni Konu Aç

Arduino uzmanlarına Kesme(interrupt) ile ilgili bir soru?

Konu, 'Python Programlama' kısmında hastasıyız dede tarafından paylaşıldı.


Etiketler:
  1. hastasıyız dede

    hastasıyız dede Hiperaktif Üye Hiperaktif

    Kayıt:
    31 Aralık 2012
    Mesajlar:
    2.784
    Beğeni:
    72
    Scratch tada oluyordu, bir tuş bsınca arka arkaya tetikleme gerçekleşiyordu bunu engellemek için tuşa bastıktan sonra 0.5 sn bekle komutu kullanıyordum bu problem kesme(interrupt) kullanınca da oluyor ama kesme de 1 sn bekle komutu işe yaramıyor yine ark arkaya tetikleniyor bunun çaresi var mı?
    not: RISING, FALLİNG ikisini de denedim ikisindede hata oluyor.
     
  2. aekoydemir

    aekoydemir Seçkin Üye Seçkin Üye

    Kayıt:
    16 Şubat 2017
    Mesajlar:
    334
    Beğeni:
    92
  3. hastasıyız dede

    hastasıyız dede Hiperaktif Üye Hiperaktif

    Kayıt:
    31 Aralık 2012
    Mesajlar:
    2.784
    Beğeni:
    72
    pull down direnci var hocam. o olmazsa devre kararsız çalışır zaten, benim sorunum o değil, butona basılınca bazen 1 bazen 2 bazen 3 tetikleme gerçekleşiyor, bunu yazılımda butona basılınca 0.3 sn bekle diyerek engelliyordum ama kesme de işe yaramadı. örneğin butona basınca a yı 1 arttır dediğimde a 1 ise bazen 2 bazen 3 bazen 4 oluyor kodlar düzgün çalışmıyor.
    aslında problemin kaynağı tek sürekli kullanabilmemiz delay kullanınca bekleme süresinde butona bastığımızda algılamıyor. kesme kullanayım dedim o sorunu çözdüm ama 2-3 kere tetiklediği için o da ayrı bir problem çıkardı.
     
  4. hastasıyız dede

    hastasıyız dede Hiperaktif Üye Hiperaktif

    Kayıt:
    31 Aralık 2012
    Mesajlar:
    2.784
    Beğeni:
    72
    PROBLEM ÇÖZÜLDÜ

    int a=1;
    void setup() {
    pinMode(2, INPUT);
    pinMode(13, OUTPUT);
    Serial.begin(9600);
    Serial.println(a);
    }
    void loop() {
    attachInterrupt(0, degistir, FALLING);
    detachInterrupt(0);
    if(a==1){
    digitalWrite(13, 1);
    delay(100);
    digitalWrite(13, 0);
    delay(100);
    }
    if(a==2){
    digitalWrite(13, 1);
    delay(1000);
    digitalWrite(13, 0);
    delay(1000);
    }
    }
    void degistir(){
    a=a+1;
    if (a==3){
    a=1;
    }
    Serial.println(a);
    }
     
  5. volkankoc

    volkankoc Seçkin Üye Seçkin Üye

    Kayıt:
    16 Eylül 2007
    Mesajlar:
    844
    Beğeni:
    44
    Hocam milis ile yapabilirsin. Gerçek zaman ile basıldıktan sonraki süre arasındaki farklı alarak çoklu basmaların önüne geçebilirsiniz. Delay kullanmadan led yakma söndürme örneği
    Umarım faydalı olur
    Kod:
    int ledDurumu = LOW; 
    long oncekiZamanDegeri = 0; 
    long yanmaAraligi = 500; 
    
    void setup() {
      pinMode(RED_LED, OUTPUT);     
    }
    
    void loop()
    {
      unsigned long zamanDegeri = millis();
    
      if(zamanDegeri - oncekiZamanDegeri > yanmaAraligi) {
       
        oncekiZamanDegeri = zamanDegeri;   
       ledDurumu=~ledDurumu;
        digitalWrite(RED_LED, ledDurumu);
      }
    }
    
     
  6. hastasıyız dede

    hastasıyız dede Hiperaktif Üye Hiperaktif

    Kayıt:
    31 Aralık 2012
    Mesajlar:
    2.784
    Beğeni:
    72
    hocam rica etsem butonu da işin içine katarak yazabilir misiniz?

    yada yazdığınız örnek buton lu ise biraz açıklayabilir misiniz?
     
  7. volkankoc

    volkankoc Seçkin Üye Seçkin Üye

    Kayıt:
    16 Eylül 2007
    Mesajlar:
    844
    Beğeni:
    44
    Hocam ikinci mesajda arkadaşın verdiği linkte örnek var açıklama satırlarıda var
     
  8. hastasıyız dede

    hastasıyız dede Hiperaktif Üye Hiperaktif

    Kayıt:
    31 Aralık 2012
    Mesajlar:
    2.784
    Beğeni:
    72
    kaynak ingilizce hocam karışık geldi anlayamadım. neyse harici kesme ile sorun çözüldü zaten ilginize teşekkürler.
     
  9. comely54

    comely54 Üye

    Kayıt:
    12 Eylül 2019
    Mesajlar:
    1
    Beğeni:
    0
    Hocam bu kesme ile sayı arttırmada atlama olayını nasıl çözdünüz acaba? Ayni sorunu bende yaşıyorum da.
     

Sayfayı Paylaş /bbnetsosyal