Buton okuma sorunu
  • merhaba
    Arduino uno da
    2 nolu pine buton bağlı. Pini 10 kOhm pull down ile GND ye bağladım. Butona basılınca pin HIGH oluyor ve bu değeri okuyorum.
    3 4 5 de RGB led bağlı Butonun basılma durumuna göre RGB led i yakıp söndürüyorum.
    ben butona basmadığımda bile arada butona basılmış gibi HIGH değeri geliyor pinden. Anlamış değilim.
    Program aşağıda. Cevaplarınız için teşekkür ederim.
    ------------------------------------------------

    /*uygulama -3
    2 nolu terminalde 10kohm pull down dirençli bir buton var.
    Butona basılınca 5 V giriş geliyor.Eğer giriş gelirse LED1 LED2 LED3 sırasıyla yanıyor aynı zamanda LED4 de HIGH oluyor
    Eğer butona basılı değilse LED1 LED2 LED3 yanıp sönüyor. LED4 de butona basılı değilse OFF oluyor
    LED yakmak için donanım ; pin3 den çık led anot a gir. Oradan çık 220 ohm dirençle GND ye git. 
     */
    int val=0;
     int inPin=2;
     int LED1=3;
      int LED2=4;
        int LED3=5;
        int LED4=6;

    void setup() {
      pinMode(LED1, OUTPUT);
      pinMode(LED2, OUTPUT);
      pinMode(LED3, OUTPUT);
      pinMode(LED4, OUTPUT);
      pinMode(inPin, INPUT);
     }

    void loop() {
      val=digitalRead(inPin); // Dijital Girişi oku
      if(val== HIGH){
      digitalWrite(LED4, HIGH); // giriş pininin HIGH olduğunu gösteren led
        digitalWrite(LED1, HIGH);
       delay(1500);
       digitalWrite(LED2, HIGH);
       delay(1500);
        digitalWrite(LED3, HIGH);
       delay(1500);
      }
      else {
        digitalWrite(LED4, LOW);
       digitalWrite(LED1, HIGH);
      delay(500);
      digitalWrite(LED1, LOW);
      delay(500);
      digitalWrite(LED2, HIGH);
      delay(500);
      digitalWrite(LED2, LOW);
      delay(500);
      digitalWrite(LED3, HIGH);
      delay(500);
      digitalWrite(LED3, LOW);
      delay(500);
       
    }
    }

  • buldunuz mu sorunun ne olduğunu aynısını ben de yaşıyorum
  • Hocam Merhaba

    bu sorunun sebebi uno nun o pinden parazit okumasıdır. eger biliyorsan interrup la yapabilirsin
  • Acaba şöyle yapsak olur mu? eğer değer sıfırsa zaten programınızdaki koşulla işlem sağlanacak, ama parazitten kaynaklanan 1 değeri varsa for next döngüsü ile bir kaç okuma daha alıp ortalamasını alın, sonuç 1 ise button durumu high için gerekli koşula geçecek bir döngü kurun.
  • buton oku diye bir rutin yaz.
    buton diyelim 1 olunca bi iş yapacak. önce butonu okudun 1 geldi diyelim hemen rutinden çıkma bir 10milisaniye bekle tekrar okuma yap eğer hala buton değeri 1 ise bu işlemi yap.
  • ben yaşadığım sorunda 10 kohm luk direnci çıkardım doğrudan pini GND ye bağladım. Butona basınca HIGH yaptım. Sorun ortadan kalktı. Ama sonra bazı sitelerde yukarıda okuman beyin bahsettiği gibi kullanıldığını gördüm ve o şekilde de denedim. Daha doğru ve güzel çözüm bence 2 bahsettiğim.
    şimdilerde I2C haberleşme ile uğraşıyorum. Çinden aldığım LCD için bir türlü kütüphane bulamadım. Satıcı firmada maillerime cvp vermiyor. Eklediğim kütüphane de mevcut LCD kütüphanesini bozdu. Ortalık arap saçına döndü :S
  • buton kullanımını yanlış anlamışınız. direnci çıkarıp gnd ye bağladıysanız her butona bastığınızda +5v ile gnd kısa devre yapıyorsunuz demektir. öyle buton okuma mı olur yaaa. yakacan ortalığı.
  • eksik yazdım herhalde kusura bakmayın Butonum yaylı bir buton iş yerinde yarın foto yüklerim. basılı değilken pin GND ye bağlı. Butona basılınca HIGH oluyor. gayette güzel çalıştı. mesela butona basılınca çeşitli led yakmakdan tutunda RGB led uygulaması bile yaptım. yarın iş yerinde foto atarım.
  • Konuyla ilgili bir tecrübemi paylaşalım. pic ile kurduğum bir devrede keypad saptırıyordu elimi yaklaştırınca saçma sapan girdiler okuyordum. Bir hafta yazılımla uğraştıktan sonra telefon şarj cihazıyla beslediğimde sorun ortadan kalktı. İlginçtir sorun bilgisayar psusundan çıktı.

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.