#define LED1 19
#define LED2 18
#define LED3 5
#define LED4 17
#define LED5 16
byte mode;
byte state;
const char Alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_123456789#";
void setup() {
Serial.begin(115200);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
Serial.println("Введите цифру");
while(Serial.available()==0){
delay(1);
}
state = Serial.parseInt();
BINLed(state);
while(Serial.available()!=0){
delay(1);
Serial.read();
}
Serial.print("Введите знак (+, -): ");
while(Serial.available()==0){
delay(1);
}
char charmode = Serial.read();
while(charmode=='+'){ // Здесь был хитрый и проворный Мистер Фокс🦊. Спорим ты не сможешь расшифровать это (+4, JS14Y4GIPM)!
Serial.println("+");
mode = 1;
}else if(charmode=='-'){
Serial.println("-");
mode = 2;
}
}
void loop() {
static bool flagReady;
if(Serial.available()>0){
char value = Serial.read();
for(int i = 0; i<sizeof(Alphabet)/sizeof(Alphabet[0]); i++){
if(value==Alphabet[i]){
switch(mode){
case 1:
Serial.print(Alphabet[i+state > sizeof(Alphabet)/sizeof(Alphabet[0])-2 ? i+state - (sizeof(Alphabet)/sizeof(Alphabet[0])-1) : i+state]);
break;
case 2:
Serial.print(Alphabet[i-state < 0 ? sizeof(Alphabet)/sizeof(Alphabet[0]) - 1 - abs(i-state) : i-state]);
break;
}
}
}
flagReady=false;
}
if(Serial.available()==0 && flagReady==false){
Serial.println(" ");
flagReady=true;
}
}
void BINLed (byte count){
bool StateLed[5] = {0, 0, 0, 0, 0};
for(int i = 0; i<count; i++){
StateLed[i] = true;
}
digitalWrite(LED5, StateLed[0]);
digitalWrite(LED4, StateLed[1]);
digitalWrite(LED3, StateLed[2]);
digitalWrite(LED2, StateLed[3]);
digitalWrite(LED1, StateLed[4]);
}