communiceren met de Arduino

Het programmeren van de Arduino gebeurt via een USB->serieel omzetter die ingebouwd zit in het systeem. Datzelfde kanaal kunnen we in het programma gebruiken om communicatie tot stand te brengen tussen de Arduino en de aangesloten PC/laptop.

Het gebruik is super eenvoudig. Het begint met het initialiseren van het Serial-object in de setup() functie. De enige parameter die moet meegegeven worden is de baudrate (zie theorie). Een veelgebruikte baudrate is 9600, maar we kunnen gaan tot 115200. De initialisatie gebeurt dus als volgt:

Serial.begin(115200);

Daarna kan in de loop-functie gebruik worden gemaakt van het Serial-object om bijvoorbeeld via de instructie

Serial.println("Hello World");

de tekst "hello world" naar de PC/laptop te sturen.

Uiteraard kunnen ook waarden van variabelen geprint worden, en kan zelfs gebruik gemaakt worden van een extra parameter om de waarde in een bepaald formaat weer te geven.

Zo zal

Serial.println(100,HEX);

de waarde 100 (decimaal) in hexadecimale vorm doorsturen via het serieel kanaal.

hoe te zien?

Hoe kunnen we op de PC/laptop zien wat de Arduino ons stuurt? Dat kan via het terminal venster van de Arduino software. Rechtsboven staat een knop met een vergrootglas. Wanneer je daarop klikt opent het terminalvenster, en wordt verbinding gemaakt met dezelfde seriële poort als deze die ingesteld staat om mee te programmeren.


 

In dit venster zal de tekst die door de Arduino gestuurd wordt zichtbaar worden in het grote venster. In de bovenste invoerregel kan tekst geplaatst worden. Wanneer men op de knop "verzenden" drukt zal deze tekst door de PC/laptop naar de Arduino gezonden worden. Ook voor het lezen van data heeft het Serial-object een aantal functies.

opgelet!

communiceren kost tijd! Kort door de bocht gerekend kunnen we aan een baudrate van 115200 baud 11520 karakters/seconde doorsturen. Dat wil zeggen dat een simpele boodschap als "Hello World" dat uit 11 karakters bestaat, zal aangevuld worden met een carriage return en een linefeed karakter (nieuwe regel en naar het begin van de regel opschuiven) waardoor het totaal te verzenden bytes op 13 komt. Dit zal dus minstens 13/11520 = 1,128ms tijd in beslag nemen, waardoor de timing van het ganse programma gewijzigd wordt.

Hou dus altijd rekening met de vertraging door communicatie.

Meer info en voorbeelden over het Serial-object vind je uiteraard op https://www.arduino.cc/en/Reference/Serial