Şimdi Ara

Arduino Rotary Encoder Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
573
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Selamlar;
    https://www.youtube.com/watch?v=9FVdlEIyOsE&list=RDCMUCbB7uPx8fSmEdMjRYe3sjNA&start_radio=1&t=300
    Bu linkteki Retardarı yapmaya çalışıyorum fakat rotary encoderı çevirdiğim zaman resimdeki gibi (https://prnt.sc/s1rluc ) eksen sol üste yapışıyor ve o şekilde kalıyor. Sizce sorun nerede?
    Benim istediğim şey rotary encoderın bir tuş olması yani örnek verecek olursak rotary encoder her sağa çevrildiğinde joystickten X tuşuna basması her sola çevrildiğinde y ruşuna basması gibi.

    #define  A_Girisi 3 //Encoder CLK pininin kart üzerinde takılacak pini tanımlama işlemi
    #define B_Girisi 4 //Encoder DT pininin kart üzerinde takılacak pini tanımlama işlemi
    #define Korna 6 // micro switchin kart üzerinde takılacağı pin tanımlama işlemi
    #define Selektor 5 // micro switchin kart üzerinde takılacağı pin tanımlama işlemi

    #include <Joystick.h> //Joystick olarak kullanacağımız için eklenmesi gereken kütüphane

    long oncekiZaman;
    boolean oncekiDurum;
    boolean kornaDurum;
    boolean selektorDurum;

    Joystick_ Joystick;
    void setup() {

    Joystick.begin();
    Serial.begin(9600);
    pinMode(A_Girisi, INPUT);
    pinMode(B_Girisi, INPUT);
    pinMode(Korna, INPUT_PULLUP);
    pinMode(Selektor, INPUT_PULLUP);
    digitalWrite(A_Girisi, HIGH);
    digitalWrite(B_Girisi, HIGH);
    }

    void loop() {
    kornaDurum = false;
    selektorDurum = false;

    boolean a = digitalRead(A_Girisi);
    boolean b = digitalRead(B_Girisi);

    if(digitalRead(Korna) == LOW ){ //
    Joystick.pressButton(2);
    kornaDurum = true;
    }

    if(kornaDurum && digitalRead(Korna)== HIGH){
    Joystick.releaseButton(2);
    Serial.println("release Basıyor 1");
    }

    if(digitalRead(Selektor) == LOW){
    Joystick.pressButton(3);
    selektorDurum = true;
    }
    if(selektorDurum && digitalRead(Selektor)== HIGH){
    Joystick.releaseButton(3);
    Serial.println("release Basıyor 1");
    }

    if (millis() - oncekiZaman > 3) {
    if (b != oncekiDurum) {
    if (b == LOW) {
    if (a == HIGH) {
    Joystick.pressButton(0);

    Joystick.releaseButton(0);
    Serial.println(" : sag");
    } else {
    Joystick.pressButton(1);

    Joystick.releaseButton(1);
    Serial.println(" : sol");
    }
    }
    }



    oncekiDurum = b;
    oncekiZaman = millis();
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi donhak -- 18 Nisan 2020; 15:54:50 >







  • Anladığım kadarıyla olayın rotary encoderla alakası yok. Encoderı çıkardım. Basit bir switch bağladım. Kodlarda encoderla ilgili tüm bölümleri sildim. Butona bastığımda aygıt yöneticisinde butona basılmış gözüküyor fakat eksenler yine sol yukarda kalıyor.
    Arduino Rotary Encoder Sorunu
    Arduino Rotary Encoder Sorunu


    #define Selektor 5 // micro switchin kart üzerinde takılacağı pin tanımlama işlemi

    #include <Joystick.h> //Joystick olarak kullanacağımız için eklenmesi gereken kütüphane

    boolean selektorDurum;

    Joystick_ Joystick;
    void setup() {

    Joystick.begin();
    Serial.begin(9600);
    pinMode(Selektor, INPUT_PULLUP);

    }

    void loop() {

    selektorDurum = false;



    if(digitalRead(Selektor) == LOW){
    Joystick.pressButton(3);
    selektorDurum = true;
    }
    if(selektorDurum && digitalRead(Selektor)== HIGH){
    Joystick.releaseButton(3);
    Serial.println("release Basıyor 1");
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi donhak -- 18 Nisan 2020; 17:32:50 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.