ladyLein startpagina


Start

Software Installeren

Serie en Parallel

Gegevens Arduino en onderdelen

Basis programmeren

Arduino project 01
Onderdelen uitrekenen: lampjes laten knipperen

Arduino project 02
Interactie: drukknop en sirene met zwaailicht (buzzer met blauw ledje)

Arduino project 03
Drukknop met sirene (buzzer) en zwaailicht (blauwe led)

Een buzzer die een hoog-laag geluid maakt en een blauwe led die knippert als je op de drukknop drukt.
Versie 1: het werkt als je de knop ingedrukt houdt.
Versie 2: het werkt als je even op de knop drukt en stopt als je weer even op de knop drukt. (zie verder op)
Alleen de code is verschillend.

Hoe werkt het



Zet de drukknop over de brede opening van het steekbord.
De knop zit met wit draadje op de 5 volt pin. Die heeft continu stroom.
Met de knop indrukken of loslaten gaat de stroom wel niet lopen:
De logica van de knop.
De knop heeft een weerstand van 10K nodig.
Terug naar aarde GND met zwarte draadje.

Let bij de buzzer op de + en de - kant.
De buzzer levert zelf voldoende weerstand.
De led heeft een weerstand afhankelijk welke led je gebruikt.

Je maakt eigenlijk twee cirquits.
De knop heeft een eigen cirquit, en de buzzer met led hebben een cirquit.
De info over de knop-status geef je door via pin 5 van het ene aan het andere cirquit.

De sketch voor de buzzer sirene met zwaailicht led versie 1

#define gebruikt minder geheugen om een pin te declareren. Daarom voortaan deze.
Let op: #define is de enige opdracht waarbij er geen ; achter staat.

Met digitalRead(pin) leest de Arduino de waarde van de pin, in dit voorbeeld KNOPINFO pin 5.
Deze is 1 als er stroom op staat en 0 als er geen stroom op staat.
Dat kan je ook HIGH en LOW noemen (hoofdletters).

Met if { en ook weer sluiten met }, kan je een vraag stellen.
Wat je vergelijkt staat tussen ()
Je gebruikt daarvoor == en niet =.
== betekent vergelijk (en dat doe je bij if)
= betekent een waarde toekennen (dat doe je bij een variabele een waarde geven)
Als het antwoord ja is dan doet hij de code die tussen { en } staat.

De buzzer maakt geluid met tone(pin, frequentie). Je geeft aan op welke pin hij zit (pin 2 de buzzer) en hoe hoog de toon moet klinken.
Met noTone (let op hoofdletter T) zet je de buzzer weer uit.



#define BUZZER 2
#define LEDBLAUW 3
#define KNOPINFO 5
boolean KnopWaarde = 0 ;


void setup() {
pinMode(BUZZER,OUTPUT);
pinMode(LEDBLAUW,OUTPUT);
pinMode(KNOPINFO,INPUT);
}

void loop() {
KnopWaarde = digitalRead(KNOPINFO);
if (KnopWaarde == 1) {
    digitalWrite(LEDBLAUW,HIGH);
    tone(BUZZER,400);
    delay(700);
    tone(BUZZER,200);
    digitalWrite(LEDBLAUW,LOW);
    delay(700);
    KnopWaarde == 0;
    noTone(BUZZER);
    }
}
// buzzer pin 2 (serieweerstand niet nodig)
// blauwe led op pin 3
// info over knop op pin 5
// voor de info over de knop
// 0 = niet ingedrukt, 1 = ingedrukt


// geeft stroom
// geeft stroom
// ontvangt stroom (info)



// lees of de knop is ingedrukt
// als knop ingedrukt is dan ...
// led aan
// maak lage toon freq 40
// wacht
// maak hoge toon freq 200
// led uit
// wacht
// waarde terug naar start
// buzzer stil zetten (let op de hoofdletter)
// einde if

De sketch voor de buzzer sirene met zwaailicht led versie 2

Door de variabele Doe een waarde te geven als je de knop indrukt kan je zeggen dat hij door moet gaan.
Deze waarde blijft terwijl de waarde die de knop geeft weer op uit gaat als je de knop los laat. "Doe = 1 - Doe" kan bij programmeren. Doe krijgt dan een nieuwe waarde.
Doe is 0 --> 1-0=1 --> Doe wordt 1.
Doe is 1 --> 1-1=0 --> Doe wordt 0.

#define BUZZER 2
#define LEDBLAUW 3
#define KNOPINFO 5

boolean KnopWaarde = 0 ;
boolean OnthoudKnopwaarde = 0 ;
boolean Doe = 0 ;

void setup() {
pinMode(BUZZER,OUTPUT);
pinMode(LEDBLAUW,OUTPUT);
pinMode(KNOPINFO,INPUT);
}

void loop() {
KnopWaarde = digitalRead(KNOPINFO);
if ((KnopWaarde == 1) && (OnthoudKnopwaarde == 0)) {
Doe = 1 - Doe;
delay(10);
}

OnthoudKnopwaarde = KnopWaarde ;

if (Doe == 1) {
digitalWrite(LEDBLAUW,HIGH);
tone(BUZZER,400);
delay(700);
tone(BUZZER,200);
digitalWrite(LEDBLAUW,LOW);
delay(700);
KnopWaarde == 0;
noTone(BUZZER);
}
}
// buzzer pin 2 (serieweerstand niet nodig)
// blauwe led op pin 3
// info over knop op pin 5

// voor de info over de knop 0 = niet ingedrukt, 1 = ingedrukt
// bewaar de knopwaarde zodat je de knop kunt loslaten
// Doe = 1 dan doe actie, bij 0 doe niets


// geeft stroom
// geeft stroom
// ontvangt stroom (info)



// lees of de knop is ingedrukt
// dan is de knop ingedrukt om te starten
// Zet de waarde van Doe
// even wachten omdat je hand op de knop wiebelt


// Onthoud de waarde van de knop

// dan doe actie
// led aan
// maak lage toon freq 40
// wacht
// maak hoge toon freq 200
// led uit
// wacht
// waarde terug naar start
// buzzer stil zetten (let op de hoofdletter T )
// einde if