#define MUTE_OUT 0
#define GND5 1
#define SEG_G 2
#define DP 3 // MUTE_LED
#define SEG_A 4 // IN5_1_LED
#define SEG_F 5 // AUX_LED
#define SEG_D 6
#define SEG_E 7 // POWER_LED
#define SEG_B 8 // OUT5_1_LED
#define SEG_C 9 // OUT2_1_LED
#define ENC_CLK 10 // энкодер контакт 1
#define ENC_DT 11 // энкодер контакт 2
#define PIN_IR 12 // вход IR
#define PIN_IN 13 // кнопка INPUT
#define GND1 A0
#define GND2 A1
#define GND3 A2
#define GND4 A3
// SDA A4
// SCL A5
#include <Encoder.h> // http://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // http://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <Wire.h>
Encoder myEnc(ENC_DT, ENC_CLK);// DT, CLK
int an, segm,i;
byte a[4];
long oldPosition = -999,newPosition;
void setup(){
Wire.begin();Serial.begin(9600);
MsTimer2::set(2, to_Timer);MsTimer2::start();
pinMode(PIN_IN,INPUT); // кнопка INPUT
pinMode(SEG_A,OUTPUT);
pinMode(SEG_B,OUTPUT);
pinMode(SEG_C,OUTPUT);
pinMode(SEG_D,OUTPUT);
pinMode(SEG_E,OUTPUT);
pinMode(SEG_F,OUTPUT);
pinMode(SEG_G,OUTPUT);
pinMode(DP,OUTPUT);
pinMode(GND1,OUTPUT);
pinMode(GND2,OUTPUT);
pinMode(GND3,OUTPUT);
pinMode(GND4,OUTPUT);
pinMode(GND5,OUTPUT);
}
void loop(){
a[0]=1;
a[1]=2;
a[2]=3;
a[3]=4;
delay(100);
}// loop
void to_Timer(){newPosition = myEnc.read()/4;
switch(i){
case 0: segm = 10; segment();segm=a[0];ch(DP,1); an=0; anod(); segment();break;
case 1: segm = 10; segment();segm=a[1]; an=1; anod(); segment();break;
case 2: segm = 10; segment();segm=a[2]; an=2; anod(); segment();break;
case 3: segm = 10; segment();segm=a[3]; an=3; anod(); segment();break;
case 4: segm = 10; segment();ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0); an=4; anod();break;
}
i++;if(i>4){i=0;}
}
void segment(){
switch(segm){
// A B C D E F G
case 0: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,0);break;// 0
case 1: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 1
case 2: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,0);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,0);ch(SEG_G,1);break;// 2
case 3: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,1);break;// 3
case 4: ch(SEG_A,0);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 4
case 5: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 5
case 6: ch(SEG_A,1);ch(SEG_B,0);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 6
case 7: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);break;// 7
case 8: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,1);ch(SEG_F,1);ch(SEG_G,1);break;// 8
case 9: ch(SEG_A,1);ch(SEG_B,1);ch(SEG_C,1);ch(SEG_D,1);ch(SEG_E,0);ch(SEG_F,1);ch(SEG_G,1);break;// 9
case 10: ch(SEG_A,0);ch(SEG_B,0);ch(SEG_C,0);ch(SEG_D,0);ch(SEG_E,0);ch(SEG_F,0);ch(SEG_G,0);ch(DP,0);break;// пусто
}}
void anod(){
switch(an){
case 0:ch(GND1,0);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,1); break;
case 1:ch(GND1,1);ch(GND2,0);ch(GND3,1);ch(GND4,1);ch(GND5,1); break;
case 2:ch(GND1,1);ch(GND2,1);ch(GND3,0);ch(GND4,1);ch(GND5,1); break;
case 3:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,0);ch(GND5,1); break;
case 4:ch(GND1,1);ch(GND2,1);ch(GND3,1);ch(GND4,1);ch(GND5,0); break;
}}
void ch(int pin, int logic){digitalWrite(pin,logic);}