Dit is de file die in de video geïntroduceerd wordt (download ‘m voor gebruik in betere opdrachten):
bb_init.h
Bekijk die file in je teksteditor om te zien wat de namen van de verschillende pinnen zijn.
Controleer of alle draadjes nog goed zitten. Sommige zitten wellicht los, andere misschien in een verkeerd gaatje. Je kunt testen of alles op je breadboard goed werkt met de volgende programma’s:
Breadboard_Input_Tests.ino |
Breadboard_Output_Tests.ino |
breadboard_test_2_in_1 |
Als het testprogramma laat zien dat er iets niet werkt, gebruik dan de volgende PDF om de bedrading te controleren:
s4d_bb.pdf
De LED’s op jullie breadboard worden analoog aangestuurd, niet digitaal! Dus je zet de LED niet aan met digitalWrite(LED1_PIN, HIGH);
maar met (b.v.) analogWrite(RGB1_RED, 0);
(dit maakt de LED rood, 0 is –vreemd genoeg– de maximale waarde.). Een RGB LED uitzetten doe je met analogWrite(RGB1_RED, 255);
In sommige video’s kom je wellicht nog de Dangershield tegen. Die ledjes waren niet op PWM pinnen afgesloten en in de video’s worden ze aangestuurd met digitalWrite(pin,HIGH/LOW);
. Dat werkt ook op je breadboard, maar de meesten van jullie zullen dan HIGH en LOW moeten omkeren…
Check toch even of jouw breadboard niet misschien toch LEDjes heeft die “normaal doen” (0 voor uit, en 255 voor maximaal aan). Pas het Blink programmaatje aan dat-ie werkt voor jouw LEDs.
Vraag 4.1: “bb_init.h”
Wat is, in de video-voorbeelden, de rol van “bb_init.h”?
[ Mail je antwoord… ]Vraag 4.2: echt nodig?
Kun je een breadboard programmeren zonder de “bb_init.h”-file te gebruiken?
[ Mail je antwoord… ]Vraag 4.4: veel files
Kan ik meerdere files open hebben in één venster van de Arduino-IDE?
(IDE staat voor “Intergrated Development Environment”–gelijk vergeten. Een IDE is software waarmee je programma’s kunt editen, vertalen, debuggen, testen, documenteren etc.)
Opdracht 4.5: LED’s aan knoppen koppelen
In de video zag je een programma de waarde van een de potmeter (die we, uit gewoonte, soms nog “slider” noemen) achterhaalt met de functie analogRead( pin )
. De rode knopje op je breadboard kunnen alleen maar aan of uit staan, en die lees je dus uit met digitalRead( pin )
.
Dat levert je een 0 of een 1 op. Als je die waarde vermenigvuldigt met 255, kun je dus een waarde van 0 of 255 krijgen. En dat kun je weer gebruiken om een LEDje aan te sturen! Het volgende commando laat zien hoe:
analogWrite( RGB1_BLUE, 255 * digitalRead(BUTTON1_PIN) );
Het sterretje * betekent vermenigvuldigen.
Gebruik bovenstaande regel om een programma te maken waarin ieder knopje één van de drie kleuren van een LEDje aan/uit zet.
Let op: Het is OK als het indrukken van een knopje de betreffende kleur uitzet in plaats van aanzet. In de volgende opdracht kun je dat fixen.
Mail programma’s liever niet als attachment. Het is voor het verloop van de lessen het handigst als je de tekst van je programma gewoon copy-paste in de mailtekst zelf. De bb_init code hoef je niet te sturen.
Voor de bonus: Opdracht 4.6: LED’s OMGEKEERD knoppen koppelen
Voor veel van jullie zal de uitwerking van de vorige opdracht een programma hebben opgeleverd waarin de knopjes kleuren van de LED uitzetten in plaats van aanzetten. Kijk of je dat kan oplossen.
Twee vragen om eerst even over na te denken:
- Welk simpel rekensommetje kan van een 0 een 1 maken, en omgekeerd: van een 1 een 0?
- Hoe kun je dat rekensommetje gebruiken in regel voorbeeldcode van de vorige opdracht om de knop omgekeerd te laten werken?
Als je al wat programmeerkennis hebt, ben je wellicht geneigd om het probleem op te lossen met programma-constructies die we nu nog niet besproken hebben. Verzoek om die neiging nu even te onderdrukken. Kun je het ook oplossen door alleen maar lagere-school rekenwerk te gebruiken?
Mail opnieuw je hele programma (in plaats van alleen de wijzigingen). Het is voor het verloop van de lessen het handigst als wij de tekst van jouw e-mail in één keer kunnen copy-pasten..