Şimdi Ara

Arduino Rotary Encoder Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
3
Cevap
0
Favori
638
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Selamlar;
    satubeyyoutube
    ETS2 İçin Arduino ile Retarder Yapımı / Kendin Yap
    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 (
    Lightshot
    Screenshot
    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 >




  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.