Projekt 17 bringt uns zum zweiten Schieberegisterprojekt und das in Form eines Binärzahlenquiz aus LED’s…
Vorbereitungen:
Für dieses Projekt brauchen wir folgende Bauteile für den Schaltungsaufbau:
Schaltungsaufbau:
Der Arduino Pin für 5 Volt geht an Schieberegister Pin 16 und 10. Arduino Pin D6 geht an den Schieberegister Pin 14. Arduino Pin D8 geht an Schieberegister Pin 12. Arduino Pin D10 geht an Schieberegister Pin 11. Schieberegister Pin 13 geht mit dem Arduino gemeinsam an Ground. Auch Schieberegister Pin 8 geht an Ground. Die Schieberegister Pins 1 bis 7 und 15 gehen über die Widerstände zu den LEDs.
Programmierung:
#define DATA 6
#define LATCH 8
#define CLOCK 10
int number =0;
int answer = 0;
void setup()
{
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
Serial.begin(9600);
randomSeed(analogRead(0));
displayNumber(0);
}
void displayNumber(byte a)
{
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, MSBFIRST, a);
digitalWrite(LATCH, HIGH);
}
void getAnswer()
{
int z = 0;
Serial.flush();
while (Serial.available() == 0)
{
}
while (Serial.available() > 0)
{
answer = answer * 10;
z = Serial.read() -'0';
answer = answer + z;
delay(5);
}
Serial.print("Sie haben eingegeben: ");
Serial.println(answer);
}
void checkAnswer()
{
if (answer ==number)
{
Serial.print("Richtig! ");
Serial.print(answer, BIN);
Serial.print(" entspricht ");
Serial.println(number);
Serial.println();
}
else
{
Serial.print("Falsch! ");
Serial.print(number, BIN);
Serial.print(" entspricht ");
Serial.println(number);
Serial.println();
}
answer = 0;
delay(10000);
}
void loop()
{
number = random(256);
displayNumber(number);
Serial.println("Was ist die dezimale Entsprechung der angezeigten Binärzahl? ");
getAnswer();
checkAnswer();
}