#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD(0x27, 16, 2);
uint32_t Period;
bool LED_flag = false;
bool BTN_flag;
bool BTN;
byte MyByte = 0b00000001;
//Пин подключен к SH_CP входу 74HC595
int clockPin = 13;
//Пин подключен к ST_CP входу 74HC595
int latchPin = 12;
//Пин подключен к DS входу 74HC595
int dataPin1 = 11;
// Пины разрядов цифер
int pins_numbers[4] = {7, 8, 9, 10};
byte NUM[] = {
252, //0
96, //1
218, //2
242, //3
102, //4
182, //5
190, //6
224, //7
254, //8
230 //9 && 246
};
byte SEG[] {
0b11111110,
0b11111101,
0b11111011,
0b11110111
};
void setup() {
pinMode(4, INPUT_PULLUP);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin1, OUTPUT);
}
void loop() {
BTN = !digitalRead(4);
if (BTN == 1 && BTN_flag == 0) {
BTN_flag = 1;
}
if (BTN == 0 && BTN_flag == 1) {
BTN_flag = 0;
}
if(millis() - Period > 400){
MyByte = MyByte == 0b10000000 ? 0b00000001 : MyByte << 1;
Period = millis();
}
clear();
showNumber(MyByte);
}
void showNumber(int byte_value) {
digitalWrite(latchPin, 0);
shiftOut(dataPin1, clockPin, MSBFIRST, byte_value);
digitalWrite(latchPin, 1);
}
void clear() {
digitalWrite(latchPin, 0);
shiftOut(dataPin1, clockPin, MSBFIRST, 0b00000000);
digitalWrite(latchPin, 1);
}