Arduino cursus/Dag 2
Dag 2 - cursus Arduino
Input: sensoren
Signalen en events
We hebben te maken met verschillende soorten inputs: signalen en events.
Een signaal heeft op elk moment een waarde. Meestal is dit een weergave van een continu fysisch (of biologisch) verschijnsel.
- Enkele voorbeelden van signalen: geluid; elektrisch signaal van de hartslag; lichtniveau (via LDR); temperatuur;
Soms hebben we te maken met signalen met een herhalend patroon. We spreken dan over een periodiek signaal; de periode is de duur van het (kleinste) deel dat steeds herhaal wordt.
- Enkele voorbeelden van periodieke signalen: sinus; PWM-signaal (bijvoorbeeld voor het aansturen van een LED of van een motor);
Een signaal is continu - maar voor het werken met een signaal in een computer moet je dit discreet maken, door middel van bemonstering. Dit betekent dat je periodiek de waarde van het signaal meet. Als je dat vaak genoeg doet, kun je deze reeks waarden beschouwen als een betrouwbare benadering van het signaal.
- Hoe vaak is "vaak genoeg"? Dat hangt van het signaal af. Als een signaal snel verandert (met andere woorden: als het signaal hoge frequenties bevat), dan zul je dit sneller moeten bemonsteren. Voor een periodiek signaal geldt dat je dit tenminste tweemaal in een periode moet bemonsteren; in de praktijk doen we dat meestal iets vaker.
- voorbeeld: de temperatuur in een kamer hoeven we niet elke 1/10 seconde te bemonsteren: zo snel verandert deze niet. In een vriezer of in een koelkast zal de temperatuur nog minder snel veranderen (door de isolatie).
Een event is een gebeurtenis die op een bepaald moment plaatsvindt. In onze aanpak speelt de duur van een event geen rol: een event is "momentaan".
- Voorbeelden van de events: het indrukken van een toets; een muisklik; een val; een stap; een hartslag;
Ook events kunnen (semi-)periodiek zijn: denk bijvoorbeeld aan de stappen van iemand die loopt; of aan een reeks opeenvolgende hartslagen. In deze voorbeelden kan er een kleine variatie in de periode tussen de opeenvolgende events zitten.
Een event is soms een gebeurtenis die in een signaal herkend kan worden: bijvoorbeeld, in een ElectroCardioGram (ECG: hartsignaal) kunnen we de hartslagen herkennen. Of in het signaal van een 3D-versnellingsopnemer (accellerometer) kunnen we de stappen herkennen.
- Een eenvoudig voorbeeld hiervan: in het signaal van een drukknop kunnen we de overgang L->H herkennen: dit komt overeen met het indrukken van deze drukknop.
Sommige sensoren meten een signaal:
- temperatuursensor
- lichtsensor (LDR)
- potmeter
- versnellingsopnemer (accellerometer)
- microfoon
Andere sensoren meten een event:
- bewegingsmelder
Soms gebruiken we een stukje programma om een event in een signaal te herkennen:
- indrukken van een toets
- hartslag in een hartsignaal
Ook bij outputs kunnen we events en signalen onderscheiden.
Koppelen van input aan output
Directe koppeling
Koppeling via toestand (automaat)
Besturing met feedback
Meerdere taken "tegelijk"
- vermijden van blokkerende acties (zoals
delay
) - gebruik van timers (zie: "Blink without delay")
Timers
Opdrachten
bouwsteen | opdracht(en) | library | voorkennis |
---|---|---|---|
button (indrukken als event) |
|||
bewegingsdetector | LED | ||
afstandsdetector | display | ||
(software) timer | Blink without delay | Blink (LED) | |
directe koppeling met schaling |
LDR en buzzer (toonhoogte) | ||
directe koppeling met beslissing |
temperatuursensor met LED-indicatie | analoge input; schaling; | |
directe koppeling met schaling |
potmeter met kleur | analoge input; schaling | |
bewegingsdetector met lichtschakelaar (LED) |
veiligheidsverlichting | timers; LDR; (eventueel: relais/MosFET) |