Codewerkplaats Les 6 (LED-strip en lijnvolger)

Dit is al de zesde en laatste les. Deze les gaan we een coole LED-strip voorop het karretje aansluiten en programmeren. Ook gaan we de lijnsensors gebruiken om het karretje een zwarte lijn te laten volgen.

Naar de andere lessen

LED-strip[↑]

De LED-strip sluiten we aan op pin 12 van de Arduino.

Deze strip heet officieel ‘NeoPixel’. De strip hierboven heeft 8 LED’s die elk een eigen kleur kunnen krijgen.

Snoertje aan LED-strip bevestigen [↑]

Op de achterkant van de LED-strip staat twee keer ‘GND’. We gebruiken de onderste. Hierop komt de zwarte draad van het snoertje.

LED-strip aansluiten op pin 12 van de Arduino [↑]

LED-strip vastzetten met draadje [↑]

Hieronder zie je hoe de LED-strip wordt vastgezet. Het is handig als je eerst het snoertje aan de sensor bevestigd.

In de strip zitten twee gaatjes. Met een zwart draadje zetten we de strip vast onder de ultrasoonsensor.

Het programma [↑]

Met het programma hieronder kunnen we de knoppen van de afstandsbediening hiervoor gebruiken:

Knop Doet dit
2 Ga vooruit
8 Ga achteruit
4 Draai links
6 Draai rechts
5 STOP
EQ Koplampen AAN/UIT
CH- Mode Ultrasoon, het karretje rijdt vanzelf en ontwijkt objecten die in de weg staan.
CH Mode Lijnvolger, het karretje volgt een zwarte lijn.
CH+ Speel geluid
>|| Verander patroon van de LED-strip

Bibliotheken [↑]

Zorg dat je deze libraries in de IDE hebt geladen:

  • L298N
  • IRremote
  • Adafruit NeoPixel

Dit zijn de bibliotheken die je nodig hebt.

De code [↑]

Kopieer de code hieronder en plak deze in de IDE op je laptop:

functieLedstrip

Vanuit het hoofdprogramma loop() wordt functieLedstrip aangeroepen. Dat ziet in de buurt van regel 211 zo uit:

Met de parameter ledstripPatroon geef je aan de functie door welk patroon je wilt zien.

De waarde van ledstripPatroon wordt ingesteld met de toets [>||] op de afstandsbediening. In de buurt van regel 195 staat daarvoor deze code:

De opdract Serial.println() stuurt gegevens naar de Arduino IDE en gebruiken we bijvoorbeeld voor het zoeken van fouten.

De functie ziet er dan zo uit:

Instellen kleuren

Ieder LED van de strip kan je een kleur geven. We doen dit met waardes voor Rood, Groen en Blauw.

In de opdracht ledstrip.Color(0, 50, 0) geven we drie waardes mee.

  • De eerste waarde geeft aan hoe ROOD de LED wordt
  • De tweede waarde hoe GROEN
  • De derde waarde hoe BLAUW

Je kan getallen van 0 tot 255 gebruiken en de kleuren ook mengen.

Hieronder een paar voorbeelden:

ledstrip.Color(255, 0, 0) Rood
ledstrip.Color(0, 255, 0) Groen
ledstrip.Color(0, 0, 255) Blauw
ledstrip.Color(255, 255, 0) Geel
ledstrip.Color(255, 0, 255) Violet
ledstrip.Color(0, 255, 255)
Cyaan
ledstrip.Color(255, 255, 255) Wit
ledstrip.Color(0, 0, 0)
Zwart

Eerst klaarzetten en dan pas tonen: ledstrip.show()

De kleur die je instelt met ledstrip.Color zie je niet meteen, maar pas als je de opdracht ledstrip.show() hebt gegeven.

ledstrip.clear()

Met ledstrip.clear() wis je alle kleuren van de de LED-strip, maar dit zie je pas na een opdracht ledstrip.show().

We tellen van 0 tot 7

Met de opdracht ledstrip.setPixelColor(3, ledstrip.Color(0, 50, 0)); zetten we een lichtgroene kleur voor de LED met nummer 3. De telling van de LED’s begint echter met 0 (nul). De eerste led heeft dus nummer 0, de tweede nummer 1 enzovoort. LED 3 is dus de vierde LED op de strip.

Bij het aanroepen van functieSpeelToon geven we drie getallen mee:

  • Het eerste getal geeft aan op welke pin de luidspreker is aangesloten. Eerder hebben we een variabele pinZoemer gemaakt en deze de waarde 8 gegeven.
  • Het tweede getal is de hoogte van de toon in Hertz.
  • Het derde getal geeft aan hoeveel milliseconden de toon moet duren.

Lijnvolger

Met de de toets CH zetten we de mode Lijnvolger aan. In het hoofdprogramma loop() ziet dat er in de buurt van regel 91 zo uit:

Op het einde van het hoofdprogramma loop() staat dan deze code om naar functieLijnvolger() te gaan:

Dit is de functie functieLijnvolger(). Deze kijkt of de lijnsensors onder het karretje zwart of wit waarnemen en schakelt de motoren aan en uit.

In de functie gebruiken we ook nog de functie functieMeetAfstand(). Hiermee kunnen we ervoor zorgen dat het karretje stopt als er een obstakel is.

Welke lijn?

Hieronder zie je het karretje in actie. De lijn is gemaakt van stroken zwart karton van 3 cm breed.

De stroken zijn met stukjes schilderstape op de vloer vastgezet:

Maak de hoeken niet te scherp!

Als de hoeken te scherp zijn dan kan het karretje de bocht niet maken of moet deze heel vaak heen en weer steken om verder te kunnen.

 

Link naar de website [↑]

Colofon [↑]

Huis73 maakte het mogelijk om deze lessen te schrijven en organiseert de lessen.
Digitaal Atelier had de spullen voor het lasersnijden en 3d-printen van de onderdelen en is ook nog eens een hartstikke leuke ruimte waar iedereen hartstikke leuke dingen kan doen.
Stichting Leaphy was de eerste die in Nederland op grote schaal Arduino-robotkarretjes beschikbaar stelde en ook nog eens de programmeeromgeving Leaphy Easybloqs ontwikkelde en voor iedereen beschikbaar stelt.
CodeKids bedacht de lessen, ontwikkelde een eigen (goedkoper) karretje en verzorgt de lessen.
Iedereen mag materiaal uit deze lessen (her)gebruiken als daarbij de bron (www.codekids.nl) wordt vermeld.