#define clock 4 //left led
#define data 16 //middle led
#define latch 17 //right led
void shiftReg(int clockpin, int datapin, int latchpin, unsigned char number){
//alpha male function instead of pussy libraries
int wait = 50;
char result[8];
for (int i=0; i<8; i++){ //dzielimy wartosc na bity
result[i] = number%2;
number /= 2;
}
digitalWrite(clockpin, LOW); //inicjalizacja zeby shift register zaczal sluchac
digitalWrite(latchpin, LOW);
delay(wait);
for (int i = 0; i<8; i++){ //podawanie pojedynczych bitow na data i synchro z clock
int state;
(result[7-i] == 1) ? state = 1 : state = 0;
digitalWrite(datapin, state);
digitalWrite(clockpin, HIGH);
delay(wait);
digitalWrite(clockpin, LOW);
delay(wait);
}
digitalWrite(latchpin, HIGH);
digitalWrite(datapin, LOW); //koniec sluchania, wyswietl
}
void setup() {
Serial.begin(115200);
// Serial.println("Hello, ESP32!");
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(data, OUTPUT);
}
void loop() {
//output low to turn segment on
// unsigned char hexValues[10] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
//output high to turn segment on
unsigned char hexValues[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
for (int i=0; i<10; i++){
shiftReg(clock, data, latch, hexValues[i]);
}
delay(500);
}