реклама:

Энкодер. Подключение. Часть 10.

Энкодер. Подключение.

Следующим подключением будет энкодер. Его подключить тоже не сложно, но понадобится один резистор в 10К (10 кило Ом).

Вот таблица соответсвия контактов энкодера и платы arduino:

Энкодер Контакты Arduino
CLK19
DT18
SW28
+,VCC5V
GNDGND

Схема подключения:

Энкодер для Arduino

Для подключения энкодера надо задействовать 5 проводов и 1 резистор 10К

Что касается резистора в 10К. Его можно припаять прямо на плату энкодера. Не известно, с какой целью разработчики не ставят его по умолчанию. Туда можно впаять как SMD резистор (вряд ли у вас такой есть) как и обычный выводной.

Энкодер для Arduino, резистор 10К

Вы можете либо впаять резистор непосредственно на плату энкодера, либо замкнуть его между проводами, как указано на предыдущей схеме - между контактами SW и +5V

После подключения энкодера, вы можете загрузить пример, приведенный ниже и убедиться в том, что он работает правильно.

Во время выполнения примера вы должны увидеть надпись «House4u Released», яркость дисплея должна составлять 50% Если нажать кнопку энкодера, то Released должно поменяться на Pressed. Если крутить энкодер вправо – то яркость дисплея должна увеличиваться, если влево – то уменьшаться.

Текст примера:

// include the library code:
#include <LiquidCrystal.h>
#include <Encoder.h>

// LCD пин управления яркостью
#define PWM_LED_PIN 3 
// LCD пин управления контрастом
#define PWM_LED_CONTRAST 4 
// LCD другие пины
#define PIN_LCD_RS 39
#define PIN_LCD_EN 41
#define PIN_LCD_D4 43
#define PIN_LCD_D5 45
#define PIN_LCD_D6 47
#define PIN_LCD_D7 49

// Энкодер
#define PIN_ENCODER_CLK 19
#define PIN_ENCODER_DT 18
#define PIN_ENCODER_SW 28

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd( PIN_LCD_RS, PIN_LCD_EN, PIN_LCD_D4, PIN_LCD_D5, PIN_LCD_D6, PIN_LCD_D7 );
Encoder myEnc( PIN_ENCODER_DT, PIN_ENCODER_CLK );

int Bright = 128;
long oldPosition = 0;
int i = 0;

void setup() {   
  analogWrite( PWM_LED_PIN, Bright );
  analogWrite( PWM_LED_CONTRAST, 50 );
  
  lcd.begin(16, 2); //настройка дисплея - 16x02
  lcd.print("House4u sol.proj"); //выводим приветсвие
  lcd.setCursor(0, 1); //перевод курсора на 2 строку    
}

void loop() 
{       
    lcd.setCursor(0, 1);
    long newPosition = myEnc.read() / 4;
   
    if (newPosition > oldPosition) 
    {       
      lcd.print("                ");
      lcd.setCursor( 8 + (i % 8), 1 );
      lcd.print(">");
      Bright += 5;
      if ( Bright > 255 )
        Bright = 255;
    }
    else
    if (newPosition < oldPosition)
    {
      lcd.print("                ");
      lcd.setCursor( 7 - (i % 8), 1 );
      lcd.print("<");           
      Bright -= 5;
      if ( Bright < 0 )
        Bright = 0;
    }
    
    if ( newPosition != oldPosition)
    {
      i = (i + 1)%16;
      oldPosition = newPosition;
      analogWrite( PWM_LED_PIN, Bright );
    }
    
    lcd.setCursor(8, 0);
    if ( digitalRead(PIN_ENCODER_SW) == LOW )
      lcd.print("Pressed ");
    else
      lcd.print("Released");  
        
    delay( 5 ); //задержка 5 мс
}

Результат выполнения примера:

Энкодер для Arduino, результат примера


<< НазадДальше >>


Поделиться с друзьями:

Поддержка проекта