LED-Pixel Pong

Pong is voor zover ik me kan herinneren de allereerste videogame uit mijn jeugd. Een kastje met twee draaiknoppen dat je kon aansluiten op de antenne ingang van je zwart-wit TV. Je kon er mee ping-pongen maar dan elektronisch. Voor die tijd heel bijzonder, en heel verslavend :-).

Onlangs zocht ik een leuke CT-opdracht voor het Arduino practicum van onze CMD studenten. Iets wat ook realiseerbaar moet zijn met hun beperkte voorkennis van elektronica en programmeren en met een beperkt aantal lesuren. En omdat de meeste CMD studenten vooral visueel ingesteld zijn leek mij dat het iets moest worden met LEDs. Ik had al eens een elektronische dobbelsteen gemaakt. Da’s eenvoudig te maken, maar de lol is daar na 1 keer spelen wel van af. Iets pong-achtigs dacht ik, maar dan moderner. Zoiets moest het worden.

Al speurende viel mijn oog op “LED-pixels”,¬†een snoer met 25 RGB pixels. (o.a. te koop in de webshop van CMD collega Pieter Floris). Iedere pixel is voorzien van een WS2801 chip; a 3-Channel Constant Current LED Driver With Programmable PWM Outputs. Hiermee is iedere pixel individueel dimbaar (8 bits per pixel). Aansluiten is ook eenvoudig. De WS2801¬†beschikt over een seriele (SPI-achtige) interface.

Twee draadjes (‘Data’ op pin11 en ‘Clk’ op pin13) zijn voldoende om de LED-pixels aan te sluiten op een standaard Arduino.

Let wel op; de 5[V] van LED-pixels is niet beschermd. Dus een te hoge spanning of foutief aansluiten van + en – heeft tot direct gevolg dat de elektronica onherstelbaar defect en het snoer dus onbruikbaar geworden is. Verder is het handig om een universele adaptor bij de hand te hebben en die aan te sluiten op de externe adapter ingang van de Arduino. Een LED-pixel verbruikt ca 60[mA] (bij volledig wit) en wanneer alle 25 LED-pixels volledig aan staan is het totaalverbruik zo’n 1,5[A] en dat kunnen de meeste USB poorten niet leveren. Zorg er wel voor dat de uitgangsspanning van de adaptor niet hoger staat dan 9[V] want anders wordt de 7805 spanningsregulator op het Arduino boardje te heet.

Programmeren is ook kinderlijk eenvoudig omdat je gebruik kunt maken van de SPI library zoals die tegenwoordig bij de Arduino ontwikkeltools standaard inbegrepen is. Een LED looplichtje maken is daarmee kinderspel en met een paar uurtjes programmeren is de stap naar een spel als LED-Pixel Pong snel gemaakt. Het bleek uiteindelijk heel simpel; 1 Arduino Uno, 1 LED pixelsnoer, 2 drukschakkelaars, 1 buzzer, een 6-tal 5mm LEDjes, en tenslotte <500 regels code zijn voldoende gebleken om het spel te bouwen. De flowchart van het spel is hiernaast gegeven (klik erop voor een grote weergave), de bijbehorende Arduino broncode is middels deze link te downloaden.

P.s. bovenstaande schema’s zijn gemaakt met FRITZING, een bijzonder handig tooltje van de University of Applied Sciences in Potsdam Dld.

Bonus:

De Arduino code stuurt de score informatie via de USB interface (Serial.println) naar buiten zodat ook een PC applicatie daarvan gebruik kan maken. Als voorbeeld hiervan heb ik een eenvoudige “Processing” sketch bijgevoegd die de score op het beeldscherm weergeeft middels “pinguins” die van plek verschuiven en van kleur veranderen, zie figuur hiernaast. De broncode van de “Processing” sketch is middels deze link te downloaden.

HaVe FuN!