Подключаем валкодер (Rotary Encoder) к Arduino

Вывод данных реализуем на LCD1602

Скетч:

Код:
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27);
// SDA - A4
// SCL - A5
// 5v  - Vcc
// GND - GND

// Валкодер
 int pinA = 8;  // CLK
 int pinB = 9;  // DT

 int encoderPosCount = 0; 
 int pinALast;  
 int aVal;
 boolean bCW;

 void setup() { 
   pinMode (pinA,INPUT); // CLK
   pinMode (pinB,INPUT); // DT

   pinALast = digitalRead(pinA);   
   Serial.begin (9600);
   
  lcd.begin(16,2);                  
  lcd.backlight();
  lcd.setCursor(2,0);  // строка 1, со 2 знака
  lcd.print("VOLUME:");
 } 

 void loop() { 
   aVal = digitalRead(pinA);
   if (aVal != pinALast){ 
     if (digitalRead(pinB) != aVal) 
     {  
       if (encoderPosCount<100) encoderPosCount ++; // предел 100
       bCW = true;
     } else 
    {
       bCW = false;
       if (encoderPosCount>0) encoderPosCount--; // предел 0
     }

     lcd.setCursor(4,1); // строка 2, с 4 знака
     lcd.print(encoderPosCount);
     lcd.print(' ');
     
   } 
   pinALast = aVal;
 }