Arduino cursus/Dag 2: verschil tussen versies

Uit Lab
Naar navigatie springen Naar zoeken springen
Regel 249: Regel 249:
|}
|}


=== Multitasking ===
=== Timers en multitasking ===


{| class="wikitable"
{| class="wikitable"
! bouwsteen !! opdracht(en) || library || voorkennis  
! bouwsteen !! opdracht(en) || library || voorkennis  
|-
|-
| button  <br> (indrukken als event)
| timer
|  
| LED: symmetrisch knipperen
|  
|  
|
|
|-
|-
| bewegingsdetector
| timer
|  
| LED: PWM (o.a. voor dimmer)
|
|
| LED
| LED
|-
|-
| hartslagsensor <br> detecteren van hartslag
| tikker
|  
| tikker (met actieve buzzer)
|
|
| display; LED
| timer
|-
|-
| (software) timer
| timer: oneshot (delay)
| Blink without delay
| LED (voorbereding nachtlamp) - evt. met button
|
|
| Blink (LED)
| Button
|-
| directe koppeling <br> met schaling
| LDR en buzzer (toonhoogte)
|
|
|-
| directe koppeling <br> met beslissing
| temperatuursensor met LED-indicatie
|
| analoge input; schaling;
|-
| directe koppeling <br> met schaling
| potmeter met kleur
|
| analoge input; schaling
|-
|-
| bewegingsdetector <br> met lichtschakelaar (LED)
| bewegingsdetector <br> met lichtschakelaar (LED)
Regel 293: Regel 278:
|
|
| timers; LDR; (eventueel: relais/MosFET)
| timers; LDR; (eventueel: relais/MosFET)
|-
| (mini-project)
| afstandssensor met tikker
|}
|}
NB: we hebben zowel simpele opdrachten - om een bouwsteen te leren kennen; met enkele variaties, ook voor een beter begrip. En we hebben (mini)projecten waarin we enkele bouwstenen combineren.
In latere projecten zullen we meerdere bouwstenen combineren.

Versie van 15 nov 2017 21:20

Dag 2 - cursus Arduino

Input: sensoren

Signalen en events

We hebben te maken met verschillende soorten inputs: signalen en events.

Een signaal is continu: het heeft op elk moment een waarde. Meestal is dit een weergave ("spoor") van een fysisch proces..

Enkele voorbeelden van signalen: geluid; elektrisch signaal van de hartslag; lichtniveau (via LDR); temperatuur; snelheid; versnelling;

Periodieke signalen

Sommige signalen bestaat uit een herhalend patroon. We spreken dan over een periodiek signaal; de periode is de duur van het (kleinste) deel dat steeds herhaald wordt.

Enkele voorbeelden van periodieke signalen: sinus (toon); PWM-signaal (bijvoorbeeld voor het aansturen van een LED of van een motor);

Discretisatie van een signaal

Een signaal is continu: 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 via een A/D omzetter: het resultaat van zo'n meting is een getal. Een signaal beschrijf je dan door een reeks getallen. Als je zo'n bemonstering vaak genoeg doet, kun je deze reeks waarden beschouwen als een betrouwbare benadering van het oorspronkelijke 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).
  • Hoorbaar geluid heeft frequenties tot ca. 15 kHz; dit zul je dan met tenminste 30 kHz moeten bemonsteren.

Events

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.

Sensoren

Sommige sensoren meten een signaal:

  • temperatuursensor
  • lichtsensor (LDR)
  • potmeter
  • versnellingsopnemer (accellerometer)
  • microfoon
  • afstandssensor

Andere sensoren meten een event:

  • bewegingsmelder
  • deursensor (openen/sluiten van een deur)

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

  • koppelen van signaal aan output
    • met schaling

Voorbeelden van inputs en outputs die direct gekoppeld kunnen worden. Sommige combinaties zijn nuttig, andere vooral creatief.

input         output
potmeter buzzer (toonhoogte)
LDR (lichtniveau) LED (helderheid)
temperatuur RGB-LED (kleur)
kracht/gewicht display (waarde)
oriëntatie (kompas) motor (snelheid)
versnelling servo (hoek)
geluidsniveau ...
afstand ...
... ...

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

Niet alle combinaties van inputs en outputs zijn geschikt. Sommige zijn nuttig; andere vooral creatief.

(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)


Signalen met directe koppeling naar output

input (sensor) output (actuator) opdracht(en) library voorkennis
hartslagsensor serial plotter; LED
afstandssensor serial plotter; LED; RGB-LED (met schaling); RGB-LED
LDR (lichtsensor) serial plotter; buzzer (tone) display
temperatuursensor serial plotter; display (met schaling) display
potmeter servo

Nog wat ideeën:

  • afstandssensor met buzzer (kliksnelheid - vgl. parkeersensor?)
  • afstandssensor met servo
  • afstandssensor met buzzer (tone)
  • potmeter met RGB-LED (kleur)

Events en event-detection

Sensor detectie output opdracht(en) library voorkennis
button indrukken van button LED LED met aan- en uit-button
bewegingsdetector beweging LED
hartslagsensor hartslag (signaalniveau)
directe koppeling
met beslissing
temperatuursensor met LED-indicatie analoge input; schaling;
bewegingsdetector
met lichtschakelaar (LED)
veiligheidsverlichting timers; LDR; (eventueel: relais/MosFET)

Automaat - met input

bouwsteen opdracht(en) library voorkennis
button
(indrukken als event)
bewegingsdetector LED
hartslagsensor
detecteren van hartslag
display; LED
(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)

Timers en multitasking

bouwsteen opdracht(en) library voorkennis
timer LED: symmetrisch knipperen
timer LED: PWM (o.a. voor dimmer) LED
tikker tikker (met actieve buzzer) timer
timer: oneshot (delay) LED (voorbereding nachtlamp) - evt. met button Button
bewegingsdetector
met lichtschakelaar (LED)
veiligheidsverlichting timers; LDR; (eventueel: relais/MosFET)
(mini-project) afstandssensor met tikker

NB: we hebben zowel simpele opdrachten - om een bouwsteen te leren kennen; met enkele variaties, ook voor een beter begrip. En we hebben (mini)projecten waarin we enkele bouwstenen combineren.

In latere projecten zullen we meerdere bouwstenen combineren.