Проблема с Энкодером KY-040

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Alex20280, 20 сен 2019.

  1. Alex20280

    Alex20280 Нуб

    Пытаюсь подключить Энкодер KY-040. Схема подключения:
    GND - GND
    + - +5V
    DT - Pin7
    CLK - Pin8

    Использую следующий скетч

    Код (C++):
     int pin_DT = 7;      // пин 7 подключаем к DT енкодера
    int pin_CLK = 8;     // пин 8 подключаем к CLK енкодера
    int pos_encoder = 0; // Первоначальная позиция енкодера равна 0
    int Last;            // Тут всегда будет лежать предыдущие значение положения енкодера
    int DT;
    boolean left;

    void setup() {
       pinMode (pin_DT,INPUT);
       pinMode (pin_CLK,INPUT);
       Last = digitalRead(pin_DT); // Считываем значение на выходе DT и запоминаем его
       Serial.begin (9600);
    }

    void loop() {
       DT = digitalRead(pin_DT);
       if (DT != Last){ // Сравниваем фактическое положение с предыдущим, если они не равны то енкодер изменил положение
         if (digitalRead(pin_CLK) != DT) {  // Если значение с pin_CLK не равно значению с pin_DT, то значит вращение было НАПРАВО ->
           pos_encoder++;
           left = false;
         } else { // Если значение с pin_CLK  равно значению с pin_DT, то значит вращение было НАЛЕВО <-
           left = true;
           pos_encoder--;
         }
         Serial.print ("Napravlenie vrasheniya: ");
         if (!left){
           Serial.println("NAPRAVO ->");
         }else{
           Serial.println("NALEVO  <-");
         }
         Serial.print("Polozhenie: ");    
         Serial.println(pos_encoder);
       }
       Last = DT;
    }
    Но куда бы я не крутил ручку получается вот что:

    Napravlenie vrasheniya: NAPRAVO ->
    Polozhenie: 1
    Napravlenie vrasheniya: NALEVO <-
    Polozhenie: 0
    Napravlenie vrasheniya: NAPRAVO ->
    Polozhenie: 1
    Napravlenie vrasheniya: NALEVO <-
    Polozhenie: 0
    Napravlenie vrasheniya: NAPRAVO ->
    Polozhenie: 1
    Napravlenie vrasheniya: NALEVO <-
    Polozhenie: 0
    Napravlenie vrasheniya: NAPRAVO ->
    Polozhenie: 1
    Napravlenie vrasheniya: NALEVO <-
    Polozhenie: 0
    Napravlenie vrasheniya: NAPRAVO ->
    Polozhenie: 1
    Napravlenie vrasheniya: NALEVO <-
    Polozhenie: 0

    В чем может быть причина?
     
  2. BAR__MEN

    BAR__MEN Розбійник Администратор

    А це якою мовою?
     
  3. parovoZZ

    parovoZZ Гуру

    дребезг контактов
     
    Alex20280 нравится это.
  4. Alex20280

    Alex20280 Нуб

    Спасибо, пофиксил:)