Serial monitor en plotter
Serial Monitor
In de voorgaande oefeningen zagen we vaak onmiddellijk of onze code werkte doordat een led bijvoorbeeld op een bepaalde manier begon te pinken.
Echter, in sommige gevallen wil je dat de Arduino met je communiceert. Dit kan via de Serial Monitor.
Opdracht 1
// Deel 1: declaratie en initialisatie
// Deel 2: setup
void setup() {
Serial.begin(9600); // Start de seriële communicatie.
}
// Deel 3: loop
void loop() {
Serial.print("Hello world"); // Print de boodschap Hello world
delay(1000); // Wacht 1 seconde
}
Selecteer code en kopieer deze in een nieuwe Arduino sketch. Stuur de code door naar de Arduino of start de simulatie met Tinkercad en kijk naar het resultaat.
Klik hiervoor op het vergrootglas in Arduino IDE of op "Serial Monitor" in Tinkercad.
1. Is dit hoe je de boodschap wil zien? Vervang de functie Serial.print() door Serial.println().
2. Pas nu de code aan om een boodschap van 2 regels herhalend te printen:
Hallo ik ben (jouw naam)
Ik ben (jouw leeftijd) jaar.
Serial.begin(), Serial.print() en Serial.println()
Lees de documentatie van het commando Serial.begin().
Serial.begin() wordt gedefinieerd door 1 parameter, de snelheid van communiceren (uitgedrukt in baud).
Serial.begin(snelheid van communiceren)
- Je geeft de snelheid van communiceren in bits per seconden in (baud). Voor Arduino Uno is dit 9600.
Lees de documentatie van de commando's Serial.print()
en Serial.println().
Serial.print() en Serial.println() worden gedefinieerd door 1 of 2 parameters: waarde en eventueel formaat.
Serial.print(waarde) of Serial.print(waarde, formaat)
Serial.println(waarde) of Serial.println(waarde, formaat)
- Je geeft de waarde die je wilt printen in. Een getal en variabelenaam kan je gewoon typen, een tekst moet je "tussen aanhalingstekens plaatsen".
- Met de optionele parameter "formaat" kan je een waarde laten omzetten in een binair of hexadecimaal getal. Dit doe je door BIN of HEX als tweede parameter in te geven.
Debuggen met de Serial Monitor
Status van een digitale pin weergeven
Opdracht 2
Neem het Blink programma er opnieuw bij en pas de code aan zodat er ook geprint wordt naar de serial monitor wanneer de pin hoog of laag geschreven wordt.
Zo kan je met de serial monitor volgen waar je zit in de code.
Telkens wanneer je led aan ziet verschijnen, zou je fysieke led ook moeten aanspringen.
Deel 1: declaratie en initialisatie
Declareer en initialisieer de variabele die bepaalt hoe lang de led zal blijven branden.
Mogelijk oplossing
Hier hoeft niets veranderd te worden.
Deel 3: loop
- Laat de led elke seconde aan- en uitgaan.
- Laat in de serial monitor verschijnen of de led aan of uit is.
Mogelijk oplossing
Status van een analoge pin weergeven
Op dezelfde manier kan je de serial monitor gebruiken om gemeten sensorwaardes weer te geven.
Opdracht 3
Een fotoresistor is een elektronische component waarvan de elektrische weerstand verandert afhankelijk van de intensiteit van het licht dat erop valt.
In het donker is de weerstand van een fotoresistor hoog, terwijl deze sterk daalt bij meer licht, zoals zonlicht.
Deze eigenschap maakt fotoresistors nuttig in toepassingen die detectie of regeling op basis van lichtniveaus vereisen,
zoals automatische straatverlichting en lichtgevoelige alarmen.
Maak deze schakeling met de fotoresistor en print de waarde die de fototransistor meet.
Maak en nieuwe sketch en schrijf je code.
Deel 1: declaratie en initialisatie
- Maak een constante variabele aan voor de pin waaraan je fototransistor verbonden is (A0). Dit kan een constante zijn omdat deze waarde niet zal
wijzigen.
- Maak een variabele aan om de lichtwaarde in te stockeren, stel de waarde ervan gelijk aan 0.
Mogelijk oplossing
Deel 2: setup
- Met pinMode() zet je de pin als INPUT. We meten namelijk waarden die de fotoresistor ons levert.
- Start de seriële communicatie met Serial.begin().
Mogelijk oplossing
Deel 3: loop
- Met analogRead() lees je de sensorwaarde telkens opnieuw in, sla op in de variabele lichtwaarde.
- Met Serial.println(), print je de analoge waarde.
Ga op zoek naar de minimum en maximum waarde die je kan meten. Bedek hiervoor de sensor of schijn er op met een fel licht. Waar komt dit getal vandaan?
Tip: lees de analogRead() documentatie na op de Arduino Reference.
Mogelijk oplossing
analogRead()
Lees de documentatie van het commando analog.Read().
analogRead dient om de de waarde van een analoge sensor uit te lezen. De functie analogRead() wordt gedefinieerd door 1 parameter namelijk de pin.
analogRead(pin)
- Bij pin geef je het pinnumer in waaraan de sensor verbonden is die je wilt uitlezen. Waardes tussen 0 en 1023 worden ingelezen.
Serial Plotter
Opdracht 4
Werk verder met voorgaande schakeling en print de waarde die de fototransistor meet. Zorg dat je enkel getallen print, niet voorafgegaan door tekst.
Open zowel in Arduino als in Tinkercad de plotter omgeving. Bij Arduino klik je rechtstreeks op het grafiek symbool. Bij Tinkercad klik je eerst op Serial monitor en dan het grafiek symbool.
Dit is een andere manier om de waardes weer te geven.