Um die Elektronik zu entwerfen habe ich in einem Program namens Logisim angefangen, mit dem ich die Logik der Schaltung entworfen habe.

Nachdem die Logik feststand, habe ich Tinkercad benutzt, um die Schaltung zu entwerfen und sie zu simulieren, dabei musste ich darauf achten die richtigen Widerstände zu nutzen, da, falls ich die falschen nehme, die LEDs kaputt gehen könnten.
Schließlich habe ich das Programm für den Arduino geschrieben.
// C++ code
//
using namespace std;
int latchPin = 3;
//Pin connected to SH_CP of 74HC595
int clockPin = 2;
////Pin connected to DS of 74HC595
int redPin = 6;
int bluePin = 7;
int greenPin = 8;
bool inRange(unsigned low, unsigned high, unsigned x)
{
return (low <= x && x <= high);
}
void setup() {
Serial.begin(9600);
//set pins to output so you can control the shift register
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(redPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(greenPin, OUTPUT);
}
void loop() {
// shift out the bits:
for (int i = 0; i < 3; i++) {
//close latch
digitalWrite(clockPin, LOW);
digitalWrite(latchPin, LOW);
switch(i) {
case 0:
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
break;
case 1:
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
break;
case 2:
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
break;
}
//clockout
delay(5);
digitalWrite(clockPin, HIGH);
//take the latch pin high so the LEDs will light up:
digitalWrite(latchPin, HIGH);
// pause before next value:
delay(750);
Serial.print(i);
}
/*digitalWrite(latchPin, LOW);
for (int i = 0; i < 5; i++) {
digitalWrite(clockPin, LOW);
digitalWrite(bluePin, HIGH);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(clockPin, HIGH);
}
digitalWrite(latchPin, HIGH);*/
}