Table of Contents
LED bedienen via Serial
In één van de vorige hoofdstukken ging de LED telkens AAN en weer UIT.
Ditmaal gaan we de LED aan- en uitschakelen via Serial.read().
ALS DAN ANDERS vergelijking
Hiervoor gebruiken we een ALS DAN ANDERS:if ( ) {<br><br>}<br>else if ( ) {<br><br>}<br>else {<br><br>}
Tussen de haakjes kan een vergelijking uitgevoerd worden zoals is gelijk aan (==), is ongelijk aan (!=), kleiner- of groter dan (< of >) en kleiner/groter en gelijk aan (<= of >=)Bijvoorbeeld:<br>if (vandaag == "maandag") {<br> // doe iets op maandag<br>}<br>else if (vandaag != "zaterdag") {<br> // dit wordt alleen uitgevoerd als het geen maandag is aangezien deze bij de IF al gekozen is<br> // en ook geen zaterdag is<br>}<br>else {<br> // dit gebeurd in alle gevallen die hierboven niet zijn uitgevoerd<br>}
Merk op de dat de else if kan worden weggelaten, maar er kunnen ook nog meer else if regels toegevoegd worden.
Bekijk de code hieronder en bekijk ook de commentaarregels om te begrijpen wat er gebeurd:
void setup() { // maak van pin 13 een uitgang pinMode(13,OUTPUT); // start de seriele poort Serial.begin(9600); // zorg ervoor dat de LED uit is digitalWrite(13,LOW); } void loop() { if (Serial.available()) { // als er een letter/cijfer ontvangen wordt sla deze dan op als state char state = Serial.read(); if (state == '1') { // als de ontvangen letter/cijfer gelijk is aan '1' dan gaat de led aan digitalWrite(13, HIGH); Serial.println("LED ON"); } else if (state == '0') { // als de ontvangen letter/cijfer gelijk is aan '0' dan gaat de led uit digitalWrite(13, LOW); Serial.println("LED OFF"); } else { // in alle andere gevallen gebeurd er niks } }
Als bovenstaande code is geupload naar de Arduino kun je een 1 of een 0 versturen om de led aan of uit te zetten.
Kun je de code zo aanpassen dat als de gebruiker een verkeerde letter of cijfer verstuurd er en melding verschijnt in het serial venster?
Een andere toepassing van seriële communicatie is het communiceren tussen bepaalde sensoren of andere apparaten. In het vvolgende hoofdstuk gebruiken we 2 Arduino’s die met elkaar kunnen communiceren via de seriële poort.
Seriële comunicatie tussen 2 Arduino’s
Seriële communicatie is zeer geschikt om te communiceren tussen 2 verschillende apparaten. In dit voorbeeld gebruiken we 2 Arduino’s die via serial met elkaar kunnen communiceren:
De verbinding is erg simpel. Verbind de aarde (Gnd) van beide Arduino’s met elkaar. Verbind vervolgens pin 0 (Rx) van de ene Arduino met pin 1 (Tx) van de andere Arduino en herhaal dat andersom ook voor de 2e Arduino zoals hierboven is weergegeven.
De Rx pin is de ontvang pin, de R staat voor receive wat Engels is voor ontvang, en de Tx is de verzend pin, de T komt van het Engelse woord Transmit.
Goed ezelsbruggetje om te onthouden voor het aansluiten van seriële communicatie tussen 2 apparaten is dat je altijd de mond (Tx) verbind met het oor (Rx) want met je mond kun je wel praten maar niet luisteren…
Als elektronische apparaten met elkaar worden verbonden is het belangrijk om de Gnd van de ene te verbinden met de Gnd van het andere apparaat!
Hierboven wordt dat gedaan met de blauwe verbinding tussen de twee Arduino’s
Daarnaast is het ook van belang om in de gaten te houden of beide apparaten hetzelfde voltage gebruiken. In het geval van de Arduino is dat 5V maar bijvoorbeeld een Micro:bit gebruikt 3.3V en die zou zomaar kapot kunnen gaan van 5V.
Onderstaande code is voor de verzendende Arduino en zorgt ervoor dat iedere seconde een 1 of een 0 verzonden wordt.
void setup() { Serial.begin(9600); } void loop() { Serial.print(1); delay(1000); Serial.print(0); delay(1000); }
Gebruik voor de andere Arduino de code uit de vorige oefening waarbij via serial de led aan en uit wordt gedaan.
Bekijk wat er gebeurd als beide Arduino’s aan staan. Je zult zien dat het ledje op de 2e Arduino aan en uit gaat door de 0 en de 1 die de andere Arduino verzend.