Introduction: TekstLeerInator

Wauw, jij wilt je tekst leren op een leuke en uitdagende manier?!

Dan ben je op deze pagina aan het juiste adres!

De TekstLeerInator stelt je in staat om je tekst goed te leren. Dit gebeurd omdat je op 3 verschillende manieren wordt uitgedaagd tijdens het zeggen van de tekst. Je moet een spelletje spelen met blauwe ledjes. Je moet regie aanwijzingen opvolgen van de wijzer in het midden en je moet op het groene en rode ledje letten wanneer je wel en niet mag praten.

Vindt hieronder een beknopte stapsgewijze uitleg over hoe jij zelf zo'n pracht ding in elkaar kan flansen.

Step 1: Wat Je Nodig Hebt

Om te beginnen verzamel je alle onderdelen, zoals op het plaatje, bij elkaar.

(Er zijn wel meer draadjes en weerstandjes nodig dan op de foto staan)

Step 2: Blauwe Ledjes Spel

Dit spelletje is erg bevredigend.

1 ledje brand. Wanneer je op het bijbehorende knopje drukt gaat dit ledje uit en een andere branden. Zo gaat het eindeloos door. De uitdagingen is om het zo snel mogelijk te doen.

Verbind de ledjes en knopjes met lange draadjes aan je Arduino (groene op foto)

Programmeer je Arduino aan de hand van onze code (deze volgt later)

Als je na het maken van dit ledjes spel besluit dat dit al helemaal genoeg is, snappen wij dat maar al te goed. Het is erg leuk.

Step 3: Regiewijzer

Deze functie geeft je tijdens het spreken regieaanwijzingen over op welke manier je je tekst moet uitspreken.

Wanneer het groene ledje gaat branden verspringt de wijzen naar een van de 5 mogelijke aanwijzingen.

Sluit het motortje aan op de Arduino en programmeer je Arduino aan de hand van onze code (volgt later).

Step 4: Groenlicht Roodlicht

Wanneer het groene ledje brand heb je vrij spreken, wanneer je rode ledje brand moet je je bakkes houden.

Laat de groene en rode led random afwisselend branden.

Sluit de ledjes aan op de Arduino en programmeer deze volgens onze code (volgt nog)

Step 5: Geef Alles Een Kekke Behuizing

Leef je uit met hout en tape, zoals wij gedaan hebben, of verzin je eigen materialen en constructies.

Wij hebben een doosje van hout gemaakt met een losse achterkant zodat het circuit makkelijk te breken was in geval van mankementen.

Step 6: Dan Nu: De Code!

Succes ;)

#include

//welke pins gebruikt worden door de onderdelen #define pinLedBlue1 2 #define pinLedBlue2 3 #define pinLedBlue3 4

#define pinButton1 6 #define pinButton2 7 #define pinButton3 8

#define pinServo 9 #define pinLedGreen 10 #define pinLedRed 11

//startpositie van de arm met 0 uiterst links, 90 midden en 180 uiterst rechts #define servoStartPos 90

//minimale en maximale tijden dat de rode en groene led branden in seconden #define minTimeRed 2 #define maxTimeRed 4 #define minTimeGreen 5 #define maxTimeGreen 15

Servo myServo;

void setup() { pinMode(pinLedBlue1, OUTPUT); pinMode(pinLedBlue2, OUTPUT); pinMode(pinLedBlue3, OUTPUT);

pinMode(pinButton1, INPUT_PULLUP); pinMode(pinButton2, INPUT_PULLUP); pinMode(pinButton3, INPUT_PULLUP); // De verschillende pinnen die we gebruiken een functie geven pinMode(pinLedGreen, OUTPUT); pinMode(pinLedRed, OUTPUT); myServo.attach(pinServo); myServo.write(servoStartPos);

randomSeed(analogRead(0)); }

void loop() { //initialiseren van de variabelen en kies willekeurig een van de drie blauwe leds die zal gaan branden static byte redGreenStatus = 0; static long timeEnabled = 0; static long lastTime = 0; static int servoPos = servoStartPos; static int Led = random(1,4);

//kijkt of er een van de drie knoppen wordt ingedrukt int button1 = !digitalRead(pinButton1); int button2 = !digitalRead(pinButton2); int button3 = !digitalRead(pinButton3);

if (button1 && Led == 1 or button2 && Led == 2 or button3 && Led == 3) { //Checkt of de zelfde knop en lampje worden gebruikt Led = random(1,4); }

//logica voor het branden van de drie blauwe leds if (Led == 1){ digitalWrite(pinLedBlue1, HIGH); digitalWrite(pinLedBlue2, LOW); digitalWrite(pinLedBlue3, LOW); } else if (Led == 2){ digitalWrite(pinLedBlue1, LOW); digitalWrite(pinLedBlue2, HIGH); digitalWrite(pinLedBlue3, LOW); } else if (Led == 3){ digitalWrite(pinLedBlue1, LOW); digitalWrite(pinLedBlue2, LOW); digitalWrite(pinLedBlue3, HIGH); }

//logica voor het branden van de rode en groene led digitalWrite(pinLedRed, !redGreenStatus); digitalWrite(pinLedGreen, redGreenStatus);

//als de tijd dat de rode of groene led moet branden verstreken is if (millis() - lastTime > timeEnabled) { lastTime = millis(); if (redGreenStatus) { //rode led gaat branden timeEnabled = random(minTimeRed, maxTimeRed) * 1000; } else { //groene led gaat branden timeEnabled = random(minTimeGreen, maxTimeGreen) * 1000; servoPos = random(0, 5) * 45; myServo.write(servoPos); } redGreenStatus = !redGreenStatus; } }

Step 7: