Stop navigatie

Arduino

Grove beginner kit for Arduino

De Arduino kit for beginners bestaat uit 1 paneel met een microcontroller en 10 verschillende actuatoren. Alle verbindingen zijn reeds gemaakt, er hoeven dus geen kabeltjes te worden verbonden.

  • Seeeduino Lotus - Microcontroller (Arduino Uno clone) uitgerust met pinheaders en Grove connectoren.
  • Diverse actuatoren
    • LED - D4
    • Buzzer - D5
    • 0.96" OLED scherm - I2C adres 0x78
    • drukknop - D6
    • potentiometer - A0
    • Lichtsensor - A6
    • Geluidssensor - A2
    • DHT22 - temperatuur en relatieve luchtvochtigheid - D3
    • Luchtdruk (BMP280)- I2C adres 0x77
    • 3 DOF accelerometer (LIS3DHTR) - I2C adres 0x19

Grove beginner kit for Arduino overview

Oefening 00 - Minimum hoeveelheid code

Leerdoelstellingen:

  • Minimale hoeveelheid code
  • Gebruik van de Setup() functie
  • Gebruik van de Loop() functie

Theorie

Wanneer je het Arduino IDE start zie je reeds enkele coderegels. Om je programma succesvol te compileren moeten de setup() en loop() functie altijd aanwezig zijn, ook al zijn ze leeg. Als een van deze functies ontbreekt dan compileert je programma niet.

Setup() functie

De setup-functie wordt opgeroepen wanneer het programma start. De functie zal maar 1 keer uitgevoerd worden nadat de microcontroller wordt opgestart of gereset.

Deze functie wordt gebruikt om:

  • Variabelen te initialiseren
  • Pinmodes in te stellen
  • Bibliotheken te starten

Loop() functie

Na de setup-functie wordt de loop gestart. Deze wordt telkens herhaald wanneer de laatste regel code is uitgevoerd. De setupfunctie wordt hierbij niet opnieuw doorlopen. 

Deze functie bezit het eigenlijke programma.

Resultaat

void setup(){
  //Hier initialiseren we de variabelen
  //stellen we pinnen in
  //en starten we bibliotheken
  //Deze functie wordt maar 1 keer uitgevoerd
}

void loop(){
  //Deze functie bevat je programma
  //Deze zal telkens opnieuw uitgevoerd worden
}

Arduino noodzakelijke code

Conclusie

Elk Arduino programma moet een minimale hoeveelheid code bevatten om gecompileerd te kunnen worden. De setup() en loop() functies moeten altijd aanwezig zijn, zonder deze functies compileert je programma niet.

Oefening 01 - knipperen van een led

Leer doelstellingen

  • Wat zijn digitale signalen?
  • Digitale pinnen als uitgang configureren
  • Een hoge of lage waarde naar een digitale pin schrijven die als uitgang geconfigureerd is.
  • Een vertraging inbouwen

Materialen

In dit voorbeeld maken we gebruik van:

  • De microcontroller
  • De leduitbreiding (D4)

Oef 1 - te gebruiken onderdelen

Indien je niet gebruik maakt van de Grove kit kan je gebruik maken van een Arduino Uno of variant om volgende schakeling op te bouwen.

Hiervoor heb je de volgende materialen nodig:

  • Arduino Uno/Nano/...
  • Breadboard
  • 220Ω weerstand
  • Led
  • jumper kabels

Led module

Digitale signalen

Analoge vs digitale signalen

Digitale signalen veranderen enkel op bepaalde momenten en kunnen slecht bepaalde waarden aannemen tussen een onder- en bovengrens. We zeggen daarom dat ze gekwantiseerd zijn en discreet in de tijd.

Discreet: discrete signalen kunnen slechts veranderen op bepaalde momenten. Bij digitale elektronica wordt dit aangegeven met behulp van clockpulsen. Bij elke puls gebeurt er een bewerking en kan het signaal veranderen. Er is geen data beschikbaar over de toestand van het signaal tussen 2 clockpulsen.

Gekwantiseerd: digitale signalen worden voorgesteld door binaire data. De kleinste waarde die kan veranderen is de waarde die 1 bit voorstelt. 
vb. een arduino heeft ingebouwd een 10bit ADC. De kleinste waarde 0V wordt dus voorgesteld door 0000000000, de grootste waarde door 1111111111. De kleinste verandering die gemeten kan worden is de verandering van de minst beduidende bit (meest rechtse 000000000X).
Om van 0000000000-->0000000001 moet er dus een bepaalde spanning overschreden worden.
resolutie = 5/1023 = 4.88mV
Een arduino kan dus enkel veelvouden meten van 4.88mV

Code

//Constante om de ledPin bij te houden
const int ledPin = 4;

void setup(){

   //Start de seriële poort tegen 9600 bps
   Serial.begin(9600);
   //Stel ledPin in als uitgang

   pinMode(ledPin, OUTPUT);

}

void loop(){

   //Zet de ledPin hoog
   digitalWrite(ledPin, HIGH);
   //Wacht 1s

   delay(1000);
   //Zet de ledPin laag

   digitalWrite(ledPin, LOW);
   //Wacht 1 seconde

   delay(1000);

}

setup()

pinMode(pinnr, OUTPUT) digitale pin als uitgang instellen

loop()

digitalWrite(pinnr, HIGH/LOW) digitale waarde naar een digitale uitgangspin schrijven
delay(miliseconden) vertraging van een aantal miliseconden. Gedurende deze tijd doet de microcontroller niks, ook niet luisteren naar ingangen of userinput.

Conclusie

  • Digitale signalen zijn discreet en gekwantiseerd
  • pinMode stelt de pin in als in-/uitgang
  • digitalWrite schrijft een digitale waarde naar een digitale uitgangspin
  • delay bouwt een vertraging in waarbij de microcomputer niks meer doet.

Oefening 02 - Lichtknop

Menemene

Btn en led modules

Oefening 03 - Potentiometer

menemene

Grove potentiometer en led modules

Oefening 04 - sdf

sdf

Oefening 05 - dsf

sdf

Oefening 06 - dfg

dfdfg

Oefening 07 - sdf

dfg

Oefening 08 - sdfsdf

dfdfg

Oefening 09 - dfgdfgsd

sdf

Oefening 10 - dgfdfg

dfgsdfg

Dit artikel valt onder de licensiebepalingen van Creative Commons Naamsvermelding Gelijk delen Licentie 4.0