//Jos De Groote 03/06/2024
// PIN SETUP
#define PIN_DATA 4
#define PIN_CLOCK 2
#define PIN_LATCH 3
#define SPEED_PIN A0
//declaratie van constanten
// declaratie van de functies
void pinSetup ();
void sendData ();
void bitsMaken ();
// declaratie van de variabelen
bool lijst[8];
int karakter = 1;
byte nuller = 0; // de nuller is een karakter waarvan de 8 eerste bits een 0 zijn
int potMeter;
void setup() {
Serial.begin(115200);
pinSetup();
bitsMaken(karakter);
}
void loop() {
potMeter = analogRead(SPEED_PIN);
bitsMaken(karakter);
bitsMaken (nuller);
karakter = karakter * 2;
if (karakter > 255) {
karakter = 1;
}
}
// SETUP FUNCTIES
void pinSetup() {
pinMode(PIN_DATA, OUTPUT);
pinMode(PIN_CLOCK, OUTPUT);
pinMode(PIN_LATCH, OUTPUT);
}
//de functie bitsMaken converteert een byte naar een lijst van 8 booleans
// het gebruikt de functie 'sendData' om de byte naar de shifter te sturen
// en het wacht de nodige tijd, bepaald door de potmeter
void bitsMaken (byte kar) {
for (byte i = 0; i < 8; i++) {
lijst[i] = bitRead(kar, i);
}
sendData();
delay(potMeter);
}
// sendData stuurt de 8 booleans naar de shifter
void sendData() {
digitalWrite(PIN_LATCH, LOW);
for (byte i = 0; i < 8; i++) {
digitalWrite (PIN_DATA, lijst[i]);
digitalWrite (PIN_CLOCK, HIGH);
delay(1);
digitalWrite(PIN_CLOCK, LOW);
delay(1);
}
digitalWrite(PIN_LATCH, HIGH);
delay(1);
}