Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output...

9
Arduino Open source hardware and software Kimberley Kalkhoven/5VWO/Informatica/1 maart 2015 1 ARDUINO - KIMBERLEY KALKHOVEN

Transcript of Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output...

Page 1: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

Arduino Open source hardware and software!

Kimberley Kalkhoven/5VWO/Informatica/1 maart 2015!

!

�1ARDUINO - KIMBERLEY KALKHOVEN

Page 2: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

Wat is Arduino?!Arduino is een open-source electronica platform. Een soort microcontroller die je

kunt programmeren op een niet al te moeilijke manier. De Arduino heeft input en output poorten waarop je allerlei sensoren en actoren (berekenbare functies die een actie uitoefenen op hun input) kan aansluiten. Een sensor is bijvoorbeeld een schakelaar,, lichtsensor (LDR) of een bewegingsmelder. Een actor is bijvoorbeeld een relais (elektronische schakelaar) of een LED.!

Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp feller branden. Er zijn vele mogelijkheden. Het leuke van Arduino is dat iedereen het kan! Je kan heel simpel beginnen en tijdens het ontdekken van de Arduino leer je er steeds meer over. !

Wat zit er allemaal bij de Arduino Starter Kit?!

Wanneer je werkt met de Arduino Starter Kit dan zijn er verschillende onderdelen waarover je beschikt. Het is een echt beginners pakket want de spullen voor grotere projecten zitten er niet bij. Het lijstje hieronder laat zien wat er allemaal bij zit: * 1 Arduino Uno + USB kabel * 400-punts breadboard * 60 verbindingsdraadjes * 5 10K Ohm (Ω) weerstanden * 10 220 Ohm (Ω) weerstanden * 5 330K Ohm (Ω) weerstanden * 70 t/m 100K Ohm (Ω) LDR* 3 5mm rode led’s* 3 5mm groene led’s* 3 5mm gele led’s* 5 drukknopjes* 10K Ohm (Ω) potentiometer

�2ARDUINO - KIMBERLEY KALKHOVEN

Page 3: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

Let’s begin!!Om Arduino te leren kennen is het belangrijk om te weten welke functie elk

onderdeel heeft. Het meeste onderdelen spreken voor zich zoals de led, de draadjes en het werkbord. Echter zit er in het pakket ook een LDR, (Light Dependent Resistor) dit is een lichtgevoelige weerstand. Deze weerstand reageert op de hoeveelheid licht. !

In deze Arduino set wordt er veel met weerstanden gewerkt, er zitten ook 3 verschillende soorten weerstanden bij. Om te weten welke je moet gebruiken of welke weerstand welke waarde heeft is het de bedoeling om te kijken welke kleuren de weerstand heeft.!

De eerste ring (bijv. rood) geeft de waarde 2, de tweede ring (bijv. blauw) geeft de waarde 6, de voorlaatste ring is de vermenigvuldigingsfactor. Deze geeft aan hoeveel nullen er moeten worden toegevoegd aan het getal van de voorgaande ringen. Bijv. bruin geeft de waarde x 10^1 —> 26 x 10^1 = 260 Ω. De laatste ring is de tolerantie ring (bijv. goud) geeft de waarde 5% tolerantie.!

Let op! Het breadboard heeft koperen banen die slecht te zien zijn. Kijk hiermee uit dat je geen kortsluiting veroorzaakt. De - en de + baan lopen over de gehele lengte van het breadboard. !!

Kleuren 1e/2e/3e ena laatste (10^n) Tolerantie (laatste)

Zwart 0 n=0 Bruin = 1%

Bruin 1 n=1 Rood = 2%

Rood 2 n=2 Goud = 5%

Oranje 3 n=3 Zilver = 10%

Geel 4 n=4 Geen kleur = 20%

Groen 5 n=5

Blauw 6 n=6

Violet 7 n=-3

Grijs 8 n=-2

Wit 9 n=-1

�3ARDUINO - KIMBERLEY KALKHOVEN

Page 4: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

Voorbeeld 1!Om makkelijk te beginnen starten we met het aansluiten van een ledje dat om de 0,5

sec. aan-/uitgaat. Welke onderdelen zijn hier voor nodig? Led, 2 draadjes, weerstand 220Ω, breadboard, een Arduino Uno en het programma op je computer/laptop. !

Allereerst maak je een schets hoe je alle onderdelen moet aansluiten.!

Een belangrijk onderdeel dat je absoluut niet moet vergeten is om er een weerstand tussen te plaatsen anders blaas je de led op en kun je hem weggooien en dat is zonde. !

Omdat een led maar via één richting stroom doorgeeft is het belangrijk dat je de led goed aansluit anders doet je led het niet wanneer je opstelling wel goed is. Bij de led’s die in het pakket zitten, zit er een klein verschil in de lengte van de aansluitdraden, de één is + (lange) en de andere is - (korte). !

Wanneer je de Arduino voor je ligt heb je aan de 2 lange zijden poorten. Voor dit voorbeeld hebben we de digitale poorten nodig, deze staan genummerd van 0 t/m 13 en GND. GND staat voor ground en betekend in dit geval de min. !

Nu gaan we de software schrijven. Open het programma van Arduino. Je begint met het initialiseren van je poorten bijv. rood (van rode led) = 3 (poort 3). Daarna komt je setup, hiermee kun je aangeven welke poort de output of input in, in dit geval een output. Nu ga je de opdracht schrijven, digitalWrite geeft aan dat je een verandering laat plaatsvinden in één van de digitale poorten, in het voorbeeld rood. Met het commando HIGH zet je de led aan en met het commando LOW zet je de led uit. Delay staat voor pauze en tussen de haakjes kun je aangeven hoeveel ms ertussen zit voor de volgende opdracht. Met // kun je commentaar toevoegen. Vergeet de accolades niet!!

int rood = 3; ! ! ! ! //Rode led in poort 3!void setup() !{ pinMode (rood, OUTPUT);! //Poort 3 is output }!void loop() !{ digitalWrite (rood, HIGH); ! //Rode led aan!delay (500); ! ! ! //Pauze in ms!digitalWrite (rood, LOW); !! //Rode led uit!delay (500); ! ! ! //Pauze in ms }

�4ARDUINO - KIMBERLEY KALKHOVEN

Page 5: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

Opdrachten!!Opdracht 1

In deze opdracht ga je een verkeerslicht programmeren, wat heb je hiervoor nodig? Rode/gele/groene led, draadjes, weerstanden, Arduino Uno en het programma op je laptop. Let goed op dat je het verkeerslicht op de juiste manier laat verlopen. * Maak een schets van de opstelling * Bekijk goed hoe je alles moet aansluiten.* Voordat je je model aansluit op je computer laat je de leraar controleren of je alles juist hebt aangesloten . * Schrijf het programma op de computer en upload je programma naar je microcontroller. * Maak een filmpje van het werkende programma.!!Opdracht 2

Deze opdracht is een uitbreiding van opdracht 1, in de vorige opdracht heb je een verkeerslicht gemaakt. Nu ga je verder met dit verkeerslicht alleen nu komt er een tweede verkeerslicht bij je moet ervoor moet zorgen dat de twee verkeerslichten niet tegelijk op groen staan. Samen regelen ze het verkeer zonder ongelukken. * Maak een schets van de opstelling. * Bekijk goed hoe je alles moet aansluiten. * Laat het model controleren door je leraar. * Schrijf het programma op de computer en upload je programma naar je microcontroller. * Maak een filmpje van het werkende programma.!!!!

�5ARDUINO - KIMBERLEY KALKHOVEN

Page 6: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

Eigen opdracht!!Nadat ik verschillende modellen heb gemaakt met Arduino wilde ik ook graag de

LDR gaan gebruiken. Dit heb ik in een opdracht verwerkt met een pijl die reageert op de hoeveelheid licht dat de LDR meet.!

Allereerst heb ik een schema gemaakt van het model (hardware).!

Mijn idee over de werking van de pijl is geïnspireerd op de pijlen die op de snelweg staan wanneer er bijv. wegwerkzaamheden zijn. De pijl wordt vanaf de steel opgebouwd tot het puntje, daarna knippert het de hele pijl 2x en dan begint het programma weer overnieuw. De pauzes tussen de processen worden beïnvloed door de waardes die de LDR meet. Natuurlijk werkt een pijl met wegwerkzaamheden niet met een LDR, een voorbeeld waarbij je dit model zou kunnen toepassen is in bijv. een bejaardentehuis, wanneer daar de stroom uitvalt dan gaat de pijl knipperen om je naar de nooduitgang te wijzen (noodstroom).!!

Link naar de video:!http://youtu.be/boC7LFjSFrc!!

!!!!

�6ARDUINO - KIMBERLEY KALKHOVEN

Page 7: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

!Software:!

//Pijl met beïnvloeding van een LDR - Kimberley Kalkhoven//!!//Naam geven aan poort programmer //!int groen1 = 2; //Groene led op poort 2!int groen2 = 3; //Groene led op poort 3!int groen3 = 4; //Groene led op poort 4!int groen4 = 5; //Groene led op poort 5!int groen5 = 6; //Groene led op poort 6!int groen6 = 7; //Groene led op poort 7!int ldr = 0; //LDR op analoge poort 0!!void setup() ! //Definieren vd poorten!{! pinMode(groen1, OUTPUT); //Groen1 output ! pinMode(groen2, OUTPUT); //Groen2 output! pinMode(groen3, OUTPUT); //Groen3 output! pinMode(groen4, OUTPUT); //Groen4 output! pinMode(groen5, OUTPUT); //Groen5 output! pinMode(groen6, OUTPUT); //Groen6 output!}!!void loop() //Loop oneindig!{! ldr = analogRead(0)*5; //LDR aflezen! digitalWrite (groen1, HIGH); //Groen1 aanzetten! ldr = analogRead(0)*5; //LDR aflezen! delay (ldr); //Pauze! digitalWrite (groen2, HIGH); //Groen2 aanzetten! ldr = analogRead(0)*5; //LDR aflezen! delay (ldr); //Pauze! digitalWrite (groen3, HIGH); //Groen3 aanzetten! ldr = analogRead(0)*5; //LDR aflezen! delay (ldr); //Pauze! digitalWrite (groen4, HIGH); //Groen4 aanzetten! ldr = analogRead(0)*5; //LDR aflezen! delay (ldr); //Pauze! digitalWrite (groen5, HIGH); //Groen5 aanzetten! ldr = analogRead(0)*5; //LDR aflezen! delay (ldr);! ! ! ! ! //Pauze! digitalWrite (groen6, HIGH);!! //Groen6 aanzetten!

�7ARDUINO - KIMBERLEY KALKHOVEN

Page 8: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

ldr = analogRead(0)*5;! ! ! //LDR aflezen! delay (ldr);! ! ! ! ! //Pauze ! ldr = analogRead(0)*5; //LDR aflezen!! digitalWrite (groen1, LOW); //Groen1 uitzetten! digitalWrite (groen2, LOW); //Groen2 uitzetten! digitalWrite (groen3, LOW); //Groen3 uitzetten! digitalWrite (groen4, LOW); //Groen4 uitzetten! digitalWrite (groen5, LOW); //Groen5 uitzetten! digitalWrite (groen6, LOW); //Groen6 uitzetten!! delay (ldr); //Pauze! ldr = analogRead(0)*5; //LDR aflezen!! digitalWrite (groen1, HIGH); //Groen1 aanzetten! digitalWrite (groen2, HIGH); //Groen2 aanzetten! digitalWrite (groen3, HIGH); //Groen3 aanzetten! digitalWrite (groen4, HIGH); //Groen4 aanzetten! digitalWrite (groen5, HIGH); //Groen5 aanzetten! digitalWrite (groen6, HIGH); //Groen6 aanzetten!! delay (ldr); //Pauze! ldr = analogRead(0)*5; //LDR aflezen!! digitalWrite (groen1, LOW); //Groen1 uitzetten! digitalWrite (groen2, LOW); //Groen2 uitzetten! digitalWrite (groen3, LOW); //Groen3 uitzetten! digitalWrite (groen4, LOW); //Groen4 uitzetten! digitalWrite (groen5, LOW); //Groen5 uitzetten! digitalWrite (groen6, LOW); //Groen6 uitzetten! ! delay (ldr); //Pauze! ldr = analogRead(0)*5; //LDR aflezen!! digitalWrite (groen1, HIGH); //Groen1 aanzetten! digitalWrite (groen2, HIGH); //Groen2 aanzetten! digitalWrite (groen3, HIGH); //Groen3 aanzetten! digitalWrite (groen4, HIGH); //Groen4 aanzetten! digitalWrite (groen5, HIGH); //Groen5 aanzetten! digitalWrite (groen6, HIGH);!! //Groen6 aanzetten! delay (ldr);! ! ! ! ! //Pauze! ldr = analogRead(0)*5; //LDR aflezen!

�8ARDUINO - KIMBERLEY KALKHOVEN

Page 9: Arduino - Informatica '13/'14/'15/'16 · Met de Arduino kun je op basis van een input een output regelen. Bijv. als er weinig licht wordt geconstateerd in een ruimte, gaat de lamp

! digitalWrite (groen1, LOW); //Groen1 uitzetten! digitalWrite (groen2, LOW); //Groen2 uitzetten! digitalWrite (groen3, LOW); //Groen3 uitzetten! digitalWrite (groen4, LOW); //Groen4 uitzetten! digitalWrite (groen5, LOW); //Groen5 uitzetten! digitalWrite (groen6, LOW); //Groen6 uitzetten! delay (ldr); //Pauze! ldr = analogRead(0)*5; //LDR aflezen!! digitalWrite (groen1, HIGH); //Groen1 aanzetten! digitalWrite (groen2, HIGH); //Groen2 aanzetten! digitalWrite (groen3, HIGH); //Groen3 aanzetten! digitalWrite (groen4, HIGH); //Groen4 aanzetten! digitalWrite (groen5, HIGH); //Groen5 aanzetten! digitalWrite (groen6, HIGH); //Groen6 aanzetten! delay (ldr); //Pauze! ldr = analogRead(0)*5; //LDR aflezen!! digitalWrite (groen1, LOW);! ! //Groen1 uitzetten! digitalWrite (groen2, LOW);! ! //Groen2 uitzetten! digitalWrite (groen3, LOW);! ! //Groen3 uitzetten! digitalWrite (groen4, LOW);! ! //Groen4 uitzetten! digitalWrite (groen5, LOW);! ! //Groen5 uitzetten! digitalWrite (groen6, LOW);! ! //Groen6 uitzetten! delay (ldr);! ! ! ! ! //Pauze! ldr = analogRead(0)*5;! ! ! //LDR aflezen!}!!!

�9ARDUINO - KIMBERLEY KALKHOVEN