Micro:bit – programmeer eens een verkeerslicht

Micro:bit – programmeer eens een verkeerslicht

Jurgen / 16 februari 2020

In een eerder bericht hadden we het al eens over de Micro:bit. In deze workshop programmeren we aan de hand van zo’n microbit en enkele heel goedkope elektronica-onderdelen een verkeerslicht. Alvorens we ons storten op het programmeren bekijken we eerst het lijstje met de benodigdheden:

  • • Micro:bit + bijhorende USB-kabel
  • • Microsoft MakeCode editor (programmeeromgeving op computer, iPad, Chromebook, …)
  • • Verkeerslicht (bv. aan te schaffen via AliExpress of Kiwi Electronics)
  • • Krokodillenklemmen (bv. aan te schaffen via AliExpress of Kiwi Electronics)
  • • Breadboardje (bv. aan te schaffen via AliExpress of Kiwi Electronics)
  • • Jumperwires (bv. aan te schaffen via AliExpress of Kiwi Electronics)

Naast ingebouwde LED’s en knopjes heeft de Micro:bit ook digitale pinnen die geprogrammeerd kunnen worden; we kunnen stroom aan- of uitzetten op deze pins. Voor het verkeerslicht zullen we gebruik maken van pin 0 om de rode LED te laten branden, pin 1 voor de oranje LED en pin 2 voor de groene LED. We sluiten de stroomkring door GND (Ground) van het verkeerslicht met GND van de Micro:bit te verbinden.

Vooraf met de leerlingen doornemen:

  • • Elektrische stroomkring: lampje, ledje laten branden met batterij, gesloten stroomkring.
  • • + en -, polariteit van de batterij: van belang bij aansluiten kabels LED (diode laat stroom door in 1 richting), bij een gewoon lampje is dit niet van belang
  • • Gesloten stroomkring = stroom kan vloeien, open stroomkring = stroom kan niet vloeien –> schakelaar. De schakelaar op de Micro:bit is de waarde die de digitale pin krijgt. Pin-waarde 1 wil zeggen, stroom kan vloeien vanaf die pin. GND
  • • Verkeerslicht: elke kleur (groen, oranje, rood) heeft een aparte aansluiting (positieve pool batterij), GND is gemeenschappelijk (negatieve pool)

Het programma zelf is als volgt ingesteld. Bij het opstarten worden 1 voor 1 de pinnen op waarde 1 gezet om de LED’s te testen. Per seconde gaat 1 extra LED branden. Als alle LED’s branden dan doven deze na 2 seconden. Het programma vind je in het blauwe blok “bij opstarten”. In het blok “de hele tijd” laten we eerst de rode LED 5 seconden branden, daarna de groene voor 5 seconden en tenslotte 1,5 seconde de oranje LED. Hierna wordt het blok “de hele tijd” terug herhaald. Op deze manier simuleren we dus de werking van 1 enkel verkeerslicht.

De gebruikte blokken zijn terug te vinden bij Pinnen – “schrijf digitaal pin P0 naar 0”:

En het blok “pauzeer (ms)” bij Basis:

 

De uiteindelijke code kunnen we opvragen in de MakeCode-editor door op de knop Javascript te klikken:

// Laat rode LED branden
pins.digitalWritePin(DigitalPin.P0, 1)
basic.pause(1000)

// Laat oranje LED branden
pins.digitalWritePin(DigitalPin.P1, 1)
basic.pause(1000)

// Laat groene LED branden
pins.digitalWritePin(DigitalPin.P2, 1)
basic.pause(2000)

// Alle LED's terug uit
pins.digitalWritePin(DigitalPin.P0, 0)
pins.digitalWritePin(DigitalPin.P1, 0)
pins.digitalWritePin(DigitalPin.P2, 0)

basic.forever(function () {

// Laat rode LED branden
pins.digitalWritePin(DigitalPin.P0, 1)
basic.pause(5000)

// Rode LED terug uit
pins.digitalWritePin(DigitalPin.P0, 0)

// Laat groene LED branden
pins.digitalWritePin(DigitalPin.P2, 1)
basic.pause(5000)

// Groene LED terug uit
pins.digitalWritePin(DigitalPin.P2, 0)

// Laat oranje LED branden
pins.digitalWritePin(DigitalPin.P1, 1)
basic.pause(1500)

// Oranje LED terug uit
pins.digitalWritePin(DigitalPin.P1, 0)

})

In plaats van de krokodillenklemmetjes rechtstreeks aan te sluiten op het verkeerslicht maken we gebruik van een breadbord en jumperkabeltjes/jumperwires. Op deze manier vermijden we dat de krokidillenkemmetjes onderling contact maken. Een breadboard is een plaatje met allerlei gaatjes om elektronische onderdelen (componenten) op vast te prikken. De gaatjes in zo’n breadbord zijn per rij onderling verbonden zodat de jumperkabeltjes het signaal doorgeven naar de aansluitingen van het verkeerslicht (zie foto onder). Meer info over de werking van een breadbord is te vinden via deze video. Jumerwires of jumperkabeltjes zijn kabeltjes die je in een breadbord kan inprikken om zo snel verbindingen te leggen tussen componenten. In de foto onder hebben we de kleuren van de krokodillenklemmen en draadjes zo gekozen dat ze overeenkomen met de kleur van LED die ze aansturen. Zwart is verbonden met GND (negatieve pool).

Uitbreiding: bouw de schakeling en het programma verder uit voor het volledige kruispunt. Als aan de ene straat de lichten op groen staan dan moet de andere straat van het kruispunt rood hebben en omgekeerd. Hou rekening met het feit dat verkeerslichten in 1 stap van rood naar groen springen maar om van groen naar rood te gaan moet ook de oranje LED tussentijds branden (enkel in die richting van het kruispunt). Bouw eventueel eerst het kruispunt waarbij ook bij de overgang van rood naar groen een oranje LED brandt op alle lichten van het kruispunt.

@ LIVOnet dot be