Arduino. Arduino UNO. Sam Decoster. CoderDojo Roeselare. Sam Decoster

Vergelijkbare documenten
Werkbladen voor Arduino workshop 1

RCL Arduino Workshop 1

Arduino Workshop 1 Zuid-Limburg

Programmeren met Arduino-software

Tweede workshop Arduino

1. Sluit de LED aan zoals afgebeeld 2. Sluit de USB-kabel aan op de Arduino 3. Klik op de knop uploaden 4. De LED begint te knipperen

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Oefening 1 - Seriële communicatie via USB

Arduino Workshop. door Geert Roumen (CC) BY-SA. lemio.nl/arduino/

Workshop Arduino - deel 2

KAEDU : Outputs en inputs

Meet the Arduino FAMILY

EM2 Microcontroller Project. LED cube

Wat is Arduino? Arduino = microprocessor (Atmel)

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meestal software of hardware.

Naam + Klas: Laptop Nr: Cijfer:

Workshop Arduino voor beginners. door TkkrLab Enschede

Arduino : Morse Voltmeter

Single Board computers. Ruud van der Meer (voor HCC d.d. 4 dec2017 Leiderdorp)

Arduino Programmeer handleiding

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

delay(1000); // Eén seconde pauze digitalwrite(pin, LOW); // zet 'pin' uit delay(1000); // Eén seconde pauze }

Arduino CURSUS. door Willy - 09-juni-2017

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meesta software of hardware.

Hand-out Introductieworkshop LED programmeren

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

Ar-doe-wie-no. Voorwoord

Arduino cursus. Eelco Dijkstra Steunpunt Informatica - Its Academy 24 september 2015

De hardware 11. De ontwikkelomgeving 13. Programmeren van de ATtiny 17

Arduino[4KIDS] Maak je eigen muziekinstrument!

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Workshop Arduino voor beginners deel 2

Workshop Arduino Uno. Touw dag 6 juni 2015 Harold Pootjes en Simon Pauw

ES1 Project 1: Microcontrollers

Boe-Bots - Arduino robots

MORSE aan een draadje

Programmeer-handleiding Easyboard MB

De Arduino-microcontroller in de motorvoertuigentechniek (6)

Deel 8: stappenmotoren en interrupts

Elektor Uno R4 Installatie & Test

Arduino. Workshop. 20 juni 2014 Peter Struwe Stichting De Jonge Onderzoekers Groningen

Programmeren met Arduino

A R D U I N O. addendum bij: Leren programmeren, meten en sturen met de Arduino. 3 e druk INHOUD

Gebruiksaanwijzing RGB(W) controller type LLD-10Z

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Tinyserir-RC5. Datasheet. Tinyserir-RC5 Page: 1 of 8

Inhoud Inhoud. Inleiding 1 Leerdoelen 1

Logo quiz Project Inleiding op de Logo!

Inleiding. Leerdoelen

ES1 Project 1: Microcontrollers

arduino programmeerboek Davy Wolfs

4x4x4 LED cube deel 2

Gebruikershandleiding. robotcar.nl

WORKSHOP ORANGE PI & PYTHON v september 2017

Arduino Zuid-Limburg Workshop 2

Arduino Opstartgids.

Je kunt de mbot ook draadloos programmeren via Bluetooth of met 2.4G Wireless. Bekijk de instructies op mbot draadloos.

Technology, Innovation & Society Delft

Project DTMF ATV Repeater besturing voor PI6HLM

Ringspiraal Stalen zenuwen en Arduino als scheidsrechter

Over Betuwe College. Lego Mindstorm project

De Arduino-microcontroller in de motorvoertuigentechniek (3)

BBR programmeren met Ardublock

Temperatuur Les 8 Leerkrachtenhandleiding. Basis

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Handleiding Alma Rally & Alma Rally Off-road

Arduino. C.F.J. Pols.

B3C 70cm converter besturing. v PE5PVB bar.net bar.net

Handleiding HCS VB5224

INHOUD. 1. DOEL p SOFTWARE p WORKFLOW p EXTRA p TROUBLESHOOT p Arduino 2.2. Pronterface 2.3. Slic3r 2.4.

Infographic De infographic geeft in grove lijnen het overkoepelend concept weer Your home remotely controlled Zie de infographic hier naast.

ES1 Project 1: Microcontrollers

1. Programmeerblokken

Handleiding EMDR Lightbar

Handleiding HCS VB5238

modellering met Arduino mini module

ABC GIDS Jouw gids voor de Arduino Beginners Cursus met Arduino Uno

MBLOCK + MBOT. is een project van

Een verkeerslicht met Arduino

Ontvanger met GSM-transmissie GSM 700

Bouwbeschrijving UniSAI

Handleiding HCS VB5248

programmeren leeromgeving

Docentenhandleiding Arduino. Handleiding voor bij de module Arduino UNO kit

Microcontrollers Labo

PROJECT 5: PLANT MONITOR

Keuzevak Slimme Technologie De slimme Regenmeter

modellering met Arduino extra module

AN0021-NL. Een trigger- en actieregel maken. Overzicht. Een Trigger- en actieregel creëren

Bouw je eigen minicomputer

Proteus EEC 2505 / 3000 / 3005

Bouw je eigen minicomputer

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (3)

G. Schottert Handleiding Freekie 1. Nederlandse handleiding. Freekie DMX ADRES INSTELLINGEN 1

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

BEGINNER JAVA Inhoudsopgave

Het µclab voor Arduino UNO, NANO en Arduino UNO pincompatible

Technisch ontwerp positiebepaling Smart Blocks

Simon de schildpad J van Weert 1

Transcriptie:

Arduino Arduino UNO Sam Decoster CoderDojo Roeselare Sam Decoster

Inleiding Arduino is een open-source ontwikkelbord, waarmee het mogelijk wordt om informatica te koppelen aan fysieke objecten. Het is dus een apparaat om fysische informatica makkelijk en toegankelijk te maken. De Arduino wordt dan ook door verschillende groepen gebruikt, hij is oorspronkelijk ontworpen voor designers om in hun kunst interactie te kunnen verwerken. Daarna zijn ook andere hobbyisten, en Industrial Designers de Arduino gaan gebruiken. Hij wordt nu zelfs door elektrotechnici gebruik omdat hij zo gemakkelijk werkt, en er heel veel uitbreidingen te vinden zijn op het internet. Het is dus eigenlijk een kleine computer die fysieke componenten kan aansturen. Je kunt er dus hele robots mee bouwen, of ermee het internet op gaan. Eigenlijk is het dus een makkelijk te programmeren stukje hardware die vrijwel alles kan. Van een vliegtuig aansturen tot het brein zijn van een 3D printer. CoderDojo P. 2 Sam Decoster

Pinmap CoderDojo P. 3 Sam Decoster

Arduino Software De open-source Arduino omgeving maakt het gemakkelijk om een code te schrijven en deze uploaden naar de i/o board. Het draait op Windows, Mac OS X en Linux. Het programma is geschreven in Java en gebaseerd op de verwerking, avr-gcc, en andere open source software. Door gebruik te maken van de Arduino Software (Arduino IDE) is het dus mogelijk om op een simpele manier een programma te schrijven voor een micro-controller zonder kennis te hebben van programmeren in C of andere complexere software. In deze cursus zal het gebruik van deze Arduino IDE stap voor stap uitgelegd worden. Achter elk onderdeel die uitgelegd wordt in deze cursus zijn er ook noch oefeningen zodat je direct aan de slag kunt met het aanleren van het programmeren in Arduino. Aan de linkerkant ziet u een voorbeeld van de ontwikkelomgeving van het Arduino programma. Hierin zal je het programma schrijven die je vervolgens zult uploaden in het Arduino bordje. We merken op dat een basisprogramma in Arduino bestaat uit 2 grote dellen, namelijk: void setup() en void loop() De setup lus wordt slechts 1 keer doorlopen bij het inschakelen van de Arduino. De loop lus wordt continu herhaald. Afbeelding: Arduino Software CoderDojo P. 4 Sam Decoster

Gebruik digitale uitgang Zoals je kunt zien op P.3 beschikt het Arduino UNO bordje over 14 digitale pinnen. Deze digitale pinnen kunnen zowel gebruikt worden als ingang en als uitgang. We gaan momenteel leren hoe deze pin kan gebruikt worden als uitgang. Een uitgang kan een logische waarde hoog 1 bezitten of een logische waarde laag 0 bezitten. Aangezien dat het Arduino bordje werkt op een spanning van 5V is een logische 1 gelijk aan 5V en een logische 0 gelijk aan 0V. Stel nu dat je een LED wil doen oplichten, hebben we een logische 1 nodig (+5V). Dit kunnen we doen door een bepaalde digitale pin van ons bordje een logische 1 toe te kennen en daar een led op aan te sluiten zoals op onderstaande afbeelding. De uitgang 13 (digitale pin 13) is hier via een weerstand verbonden met de Anode van de LED. De Kathode van de led is op zijn beurt verbonden met de GND (massa of 0V). Als we nu een programma schrijven die zegt dat de digitale pin 13 een hoog signaal moet hebben (+5V dus) dan zal de led beginnen oplichten. Schematische voorstelling CoderDojo P. 5 Sam Decoster

Programma Wanneer we hiervoor een programma willen schrijven ziet dit er als volgt uit: /* Maker: Sam Decoster Programma: Brandende LED Datum: 07/02/2014 */ int led = 13; //maak een variabele met de naam "led" die gelinkt is met pin 13 void setup() { pinmode(led, OUTPUT); //zeg dat "led" bedoeld is als uitgang void loop() { digitalwrite(led, HIGH); //plaats de toestand van pin 13 op "1" (+5V) Het controleren en uploaden van het programma We zien links bovenaan enkele blauwe icoontjes staan. Met deze icoontjes kan je je programma controleren of er fouten in je code zitten waardoor het Arduino bordje het programma niet zal kunnen lezen, een icoontje om het programma te uploaden naar het Arduino UNO bordje. 1 2 Knop 1: dient om je programma dat je geschreven hebt te uploaden. Knop 2: dient om je programma te verzenden naar je Arduino UNO bordje. Opmerking: Zorg ervoor dat je bij het versturen van je programma naar Arduino, het juiste Arduino bordje hebt geselecteerd! Het type bord kun je selecteren bij: Werktuigen => Board => Arduino UNO Indien je een ander bordje gebruikt dan de UNO moet je het juiste bordje aanklikken in de lijst CoderDojo P. 6 Sam Decoster

Het resultaat Wanneer je dit alles hebt uitgevoerd kun je zien dat de led zal gaan branden. Dit was een basis uitleg over hoe je een digitale pin kan sturen. In het volgend stuk gaan we gebruik maken van tijd, hiermee kunnen we de led dus laten aan en weer uit gaan (knipper) met een ingestelde tijd. Moest het zijn dat er ergens een fout in je programma zit, zal deze tijdens het controleren gedetecteerd worden en zie je de locatie waar de fout ongeveer zit. LET OP! Arduino is Hoofdletter gevoelig, kijk dus goed of je een hoofdletter plaatst waar nodig we merken ook op dat elke programma regel gesloten wordt met een puntkomma ; CoderDojo P. 7 Sam Decoster

Gebruik maken van een delay Een delay is een regel in je programma waar de microcontroller een bepaalde tijd zal wachten tot hij de volgende regel van het programma leest en uitvoert. De code die we moeten plaatsen in Arduino om tegen de controller te zeggen dat hij even moet pauzeren is het volgende: delay(1000); Het getal dat tussen hakjes staat is de tijd in mille seconden (ms) dat de controller moet wachten Het laten flikkeren van een LED Als we nu een led willen doen laten knipperen moeten we een digitale pin op 1 plaatsen dan een tijdje wachten en vervolgens die pin op 0 plaatsen dan weer een tijdje wachten, Dit moet blijven herhaald worden. Als we dit in een programma gieten, ziet dit er als volgt uit: /* Maker: Sam Decoster Programma: Knipperende LED Datum: 07/02/2014 */ int led = 13; //maak een variabele met de' naam "led" die gelinkt is met pin13 void setup() { pinmode(led, OUTPUT);//zeg dat "led" bedoeld is als uitgang void loop() { digitalwrite(led, HIGH); // plaats de toestand van pin 13 op "1" (+5V) delay(1000); // wacht 1 seconde digitalwrite(led, LOW); // plaats de toestand van pin 13 op "0" (0V) delay(1000); // wacht 1 seconde CoderDojo P. 8 Sam Decoster

Tekening van de schakeling In het programma hebben we gezegd dat de digitale pin 13 zal moeten gaan knipperen 1 -> 0 -> 1 -> 0 CoderDojo P. 9 Sam Decoster

Opdracht 1. Probeer nu een looplichtje te maken van 6 led s 2. Een kleine uitbreiding hierop is het maken van een Knight Rider looplichtje. Dit lichtje zal dan heen een weer gaan lopen. CoderDojo P. 10 Sam Decoster

Het lezen van digitale ingangen Het is niet enkel mogelijk om de digitale pinnen (0 tot en met 13) te gebruiken als uitgang, deze pinnen kunnen ook gebruik worden als uitgang. De ingang aan zo n digitale pin kan dan een logische 1 zijn (+5V) of een logische 0 (massa of 0V). We moeten hierbij wel opletten dat we voor een nul wel degelijk de pin verbinden aan de massa, anders zou het kunnen dat de microcontroller in de Arduino UNO, de ingang als een logische 1 bekijkt i.p.v. een 0. Het maken van zo n 1 en 0 kunnen we doen met een weerstand en een drukknop, (zie onderstaand schema) Wanneer de drukknop niet is ingedrukt, is de ingang verbonden met de massa via de weerstand, dit is dus een logische 0 Wanneer de drukknop wel is ingedrukt, zal er een spanning van 5V over de weerstand staan, en is de ingang dus verbonden met de +5V klem, dit wil zeggen dat we een logische 1 bekomen. Hoe in het programma een digitale ingang gebruiken? Eerst en vooral moet in het deel setup de pin niet als uitgang geplaatst worden maar als ingang. Dit gebeurt met volgende regel: pinmode(inpin, INPUT); De waarde van deze ingang moet dan noch kunnen openslagen worden. Dit kunnen we doen in een variabele, een variabele is een naam dat je zelf kunt kiezen die een bepaalde waarde bezit. De toestand van de ingang kun je dan in de variabele steken met deze code: variabele = digitalread(inpin); tussen de haakjes komt de naam van de pin die je hebt toegekend. De waarde van de variabele kan je dan vervolgens plaatsen op een digitale uitgang, dit gebeurt met volgende code: digitalwrite(ledpin, val); voor de komma tussen de haakjes plaats je de naam van de uitgang die je hebt toegekend als uitgang. Achter de komma plaats je de variabele die de waarde bezit. CoderDojo P. 11 Sam Decoster

Programma Wanneer we nu een programma willen schrijven die de toestand van de ingang inleest en vervolgens deze toestand plaatst op een andere uitgang kommen we volgend programma uit: /* Maker: Sam Decoster Programma: drukknop Datum: 07/02/2014 */ int ledpin = 13; // noem pin 13 "ledpin" int inpin = 7; // noem pin 7 "inpin" int variabele = 0; // maak een variabele en ken de waarde toe void setup() { pinmode(ledpin, OUTPUT); // zeg dat "ledpin" een uitgang is pinmode(inpin, INPUT); // zeg dat "inpin" een ingang is void loop() { variabele = digitalread(inpin); // lees de toestand van de "inpin" (7) digitalwrite(ledpin, variabele); // zet de toestand op de "ledpin" (13) CoderDojo P. 12 Sam Decoster

Voorbeeldtekening Op deze tekening kun je duidelijk zien hoe een drukknop en weerstand geschakeld moet worden. De ingang die hier gebruikt wordt is Pin 2. CoderDojo P. 13 Sam Decoster

AnalogWrite() AnalogRead() Het schrijven van een analoge waarde (PWM signaal) op een pin, kan gebruikt worden om een LEDlicht op verschillende helderheden te laten werken, of om een motor op verschillende snelheden te kunnen laten draaien. Na een oproep analogwrite() zal de pin een blokgolf genereren met een gekozen inschakeltijd (duty cycle). De frequentie van dit PWM signaal is meestal 490Hz, de Pin 5 en 6 hebben een frequentie van 980Hz (wanneer we deze gebruiken voor een PWM signaal). Een PWM signaal bij Arduino UNO kan gegenereerd worden op pin 3, 5, 6, 9, 10 en 11. Op de Arduino mega is dit pin 2 tot en met 13 en 44 tot en met 46. Bij oudere Arduino bordjes die een ATmega8 bezitten kan de functie analogwrite() enkel gebruikt worden op pin 9, 10 en 11. De PWM-uitgangen gegenereerd op pennen 5 en 6 hebben een hogere dan verwachte duty cycles. Dit komt door interactie met de millis () en vertragingsfuncties (), die dezelfde interne timer gebruikt om deze PWM output genereren delen. Dit zal vooral worden opgemerkt op low duty-cycle instellingen (bv. 0-10) en kan een waarde van 0 niet volledig uitschakelen van de uitgang op pennen 5 en 6. Duty Cycle De waarde van de duty Cycle kan gekozen worden tussen 0 (altijd uit) en 255 (altijd aan) analogwrite(pin, DutyCycle) CoderDojo P. 14 Sam Decoster

analogread() analogread(pin) de retourwaarde van een analogread() functie varieert tussen 0 en 1023. Deze waarde kunnen we dan plaatsen in een variabele door het volgende te doen: variabele = analogread(analogpin); Voorbeeldprogramma int ledpin = 9 ; / / LED aangesloten op digitale pen 9 int analogpin = 3 ; / / potentiometer aangesloten op de analoge pin 3 int val = 0 ; / / variabele om de gelezen waarde op te slaan void setup ( ) { pinmode ( ledpin, OUTPUT ) ; / / zet de pin als uitgang void loop ( ) { val = analogread ( analogpin ) ; analogwrite ( ledpin, val / 4 ) ; / / lees de input pin / / analogread waarden gaan 0-1023, analogwrite waarden van 0 255 Tekening CoderDojo P. 15 Sam Decoster

Oefening 1. Open de opdracht van pagina 10, en zorg ervoor dat de snelheid waarmee dat de led s zullen lopen bepaald wordt door een potentiometer. TIP: in plaats van een getal tussen de haakjes te plaatsen bij delay, kun je ook een variabele plaatsen. delay(15); Is ook gelijk aan: Int X; X = 15; delay(x); Je hoeft dus enkel maar de tijd te veranderen door een variabele en bij het begin van het programma de waarde van de potentiometer in deze variabele te plaatsen. 2. Probeer nu hetzelfde programma als hierboven, maar zorg er nu voor dat de tijd noch groter is, de variabele bezit namelijk een waarde tussen 0 tot en met 1023 bij het inlezen van de analoge pin. Zorg er dus voor dat de tijd kan variëren tussen 0 tot en met 4092. Tip: voer een rekenkundige bewerking uit na het inlezen van de analoge pin. CoderDojo P. 16 Sam Decoster

For loop Een for lus wordt gebruikt om een blok instructies een bepaald aantal keer te herhalen. Een for lus bestaat uit 3 grote delen. for (1; 2; 3 { code 1. Initialisatie: bestaat uit: int i = 0 dit gebeurt bij de eerste keer dat de for lus wordt gelezen. 2. Test/controle controlleert of de variabele voldoet aan een bepaalde waarde, indien niet wordt de for lus verlaten. vb: i < 100 3. Voert een bewerking uit met de initialisatie variabele. Iedere keer als de lus wordt herhaalt wordt deze bewerking gedaan. Vb: i++ (dit is gelijk aan i = i + 1) Voorbeeldprogramma Als voorbeeld gaan we een led laten dimmen op een bepaalde snelheid. int PWMpin = 10; //led wordt aangesloten op pin 10 (pwm pin) void setup() { pinmode(pwmpin, OUTPUT) void loop() { for (int i=0; i <= 255; i++){ analogwrite(pwmpin, i); delay(10); In dit programma zal de LED starten in toestand 0 = uit. Dan zal de uitgang geleidelijk stijgen naar 255 = volledig aan dit blijft herhaald worden. CoderDojo P. 17 Sam Decoster

Opdrachten 1. In het voorbeeldprogramma start de led op waarde 0, gaat dan geleidelijk stijgen naar 255, en gaat dan weer bruusk naar 0. Probeer nu een programmatje te schrijven dat de led start vanaf nul geleidelijk stijgt naar 255 en dan in plaats van direct naar 0 terug te keren geleidelijk terug naar 0 te gaan. TIP: in deze opdracht moet je gebruik maken van 2 for lussen. 2. In deze opdracht zullen we het een beetje moeilijker maken. We gaan nu gebruik maken van 2 led s deze 2 led s gaan alle twee traag aan en traag uit alleen willen we nu dat de 1ne led start met toestand 0 en de andere start met toestand 255. Dit wil zeggen dat de 1ne led helderder zal worden terwijl dat de andere led minder helde wordt, dit allemaal op hetzelfde moment TIP: Er moet hier ook gebruik gemaakt worden van 2 for lussen. + dat er een rekenkundige bewerking nodig is voor de 2 de led. 3. Nu je al goed gebruik kunt maken van het sturen van een PWM signaal, en gebruik kunt maken van een for lus, mag je eens je eigen creativiteit gebruiken. In plaats van een gewone led gaan we nu een RGB led gebruiken, dit is led die 3 verschillende kleuren bezit, deze 3 kleuren kunnen ook gedimd worden zodat we de kleuren zelf kunnen mengen. CoderDojo P. 18 Sam Decoster