NLT

LCD reactie tester

Met dit project kun je een reactie test maken, het werkt als volgt:

  • Je legt op beide knopjes een vinger.
  • Je wacht tot er een lampje gaat branden en drukt zo snel mogelijk op het juiste knopje.
  • Vervolgens verschijnt er op het lcd scherm een tijd.

Benodigdheden:
25 draadjes
2 LEDS
2 knoppen
1 LCD scherm
3 220 ohm weerstandjes
1 potmeter

Het bouw schema:

De code is:

#include

LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // op deze poorten is het lcd aangesloten

void setup()

{
lcd.begin(16, 2); // dit is het aantal vakjes op de lcd
lcd.clear(); // het scherm blijft leeg

Serial.begin(9600); // opent seriële poort, stelt datasnelheid in op 9600 bps

pinMode(8, INPUT); //zet de digitale pin 8 als input
digitalWrite(8, HIGH); // zet de digitale pin 8 aan
pinMode(9, INPUT); // zet de digitale pin 9 als input
digitalWrite(9, HIGH); // zet de digitale pin 9 aan
pinMode(10, OUTPUT); //zet de digitale pin 10 als output
digitalWrite(10, LOW); //zet de digitale pin 10 uit
pinMode(11, OUTPUT); //zet de digitale pin 11 als output
digitalWrite(11, LOW); //zet de digitale pin 11 uit

}
double i = 0;
double a = millis();
double c ;
int b;
void loop() // de voorgaande functies blijven herhaald worden
{
delay(500); // zorgt voor een vertraging van 500 bps
while(digitalRead(8) == HIGH && digitalRead(9) == HIGH)
{
lcd.clear(); // het scherm blijft leeg
lcd.setCursor(0,0); // de positie van de tekst op de lcd
lcd.print(“druk op een knop”); //de tekst die verschijnt
lcd.setCursor(0,1); // de positie van de tekst op de lcd
lcd.print(“om te beginnen…”); // de tekst die verschijnt
delay(150); // zorgt voor een vertraging van 500 bps
}
lcd.clear(); // het scherm blijft leeg
lcd.setCursor(0,0); // de positie van de tekst op de lcd
lcd.print(“test jouw”); //de tekst die verschijnt
lcd.setCursor(0,1); // de positie van de tekst op de lcd
lcd.print(“Reactie snelheid”); //de tekst die verschijnt
lcd.setCursor(0,0); // de positie van de tekst op de lcd
delay((int)random(1000, 5000)); // de willekeurige vertraging in 1000 to 5000 bps tot dat het lampje gaat branden

b = random(1,3);
Serial.println(b); // ‘b’ krijgt een willekeurige waarde van minimaal 1 en maximaal 3

if( b == 1) //als ‘b’ precies 1 is, gebeurd het volgende…

{
digitalWrite(10, HIGH); //zet digitale pin 10 aan
a = millis(); // ‘a’ wordt een bepaald aantal milliseconden
while(digitalRead(8) == HIGH) // de tijd blijft lopen, totdat de ‘digitalread(8)’ uit gaat
{
c = millis(); // ‘c’ het aantal milliseconden wanneer ‘digitalread(8)’ uit is
}
digitalWrite(10, LOW); // zet digitale pin 10 uit
}
else // als ‘b’ een andere waarde krijgt gebeurd het volgende…
{
digitalWrite(11, HIGH); // zet digitale pin 11 aan
a = millis(); // ‘a’ wordt een bepaald aantal milliseconden
while(digitalRead(9) == HIGH) // de tijd blijft lopen, totdat de ‘digitalread(9)’ uit gaat
{
c = millis(); // ‘c’ het aantal milliseconden wanneer ‘digitalread(8)’ uit is
}
digitalWrite(11, LOW); //zet digitale pin 11 uit
}
i = (c – a) / 1000; //de tijd wordt berekend door ‘c’ (de eindtijd) – ‘a’ ( de begintijd) en gedeeld door 1000 zodat de waarde in seconden komt te staan
delay(500); // een vertraging van 500 bps
lcd.clear(); // het scherm blijft leeg
while(digitalRead(8) == HIGH && digitalRead(9) == HIGH) // waneer digitalread(8) en digitalread(9) beide aan zijn gebeurd het volgende…
{
lcd.clear(); // het scherm blijft leeg
lcd.setCursor(0,1); // de positie van de tekst op de lcd
lcd.print(i); // de tijd ‘i’ in seconden
lcd.setCursor(11,1); // de positie van de tekst op de lcd
lcd.print(“Sec’s”); //de tekst die verschijnt
lcd.setCursor(0,0); // de positie van de tekst op de lcd
lcd.print(“jouw tijd is…”); //de tekst die verschijnt
lcd.setCursor(0,0); // de positie van de tekst op de lcd
delay(150); //zorgt voor een vertraging van 150 bps
}
}

3 Comments

  1. Comment by post author

    thimo max en flip

    nice boys

  2. Amber Begheijn

    nice boys

  3. Bart Kappé

    Mooi maak project. Het schema bevat helaas wat foutjes. Pin 1 en 2 van het LCD scherm (linkerkant) krijgen rood en zwart van dezelfde regel op het breadboard. De drukknoppen hebben geen pull-down (of pull-up) weerstand. De uitgebreide uitleg is plezierig.

Leave a Reply