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

Vergelijkbare documenten
Programmeren met Arduino-software

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

Arduino Programmeer handleiding

arduino programmeerboek Davy Wolfs

VAN HET PROGRAMMEREN. Inleiding

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

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

RCL Arduino Workshop 1

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Syntax- (compile), runtime- en logische fouten Binaire operatoren

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

Arduino Workshop 1 Zuid-Limburg

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

Online c++ leren programmeren:

int main() { int m; m = power(2,3) /* berekent 2^3 en geeft de resultaat naar m terug */ }

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

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

HOP9850. void sendfrequency(unsigned long frequency) zie SWEEP9850

Instructies en blokken

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Vakgroep CW KAHO Sint-Lieven

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

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

3 e jaars GameTech student C++ voor hobby, eerste programmeertaal Assistent bij een heleboel vakken

Lab Webdesign: Javascript 3 maart 2008

PYTHON REEKS 1: BASICS. Mathias Polfliet

Java. Basissyllabus. Egon Pas

Programmeren in Java les 3

Javascript oefenblad 1

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Arduino Opstartgids.

Werkbladen voor Arduino workshop 1

Jeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch)

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Deel 8: stappenmotoren en interrupts

De Arduino-microcontroller in de motorvoertuigentechniek (6)

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Arduino CURSUS. door Willy - 09-juni-2017

Arduino[4KIDS] Maak je eigen muziekinstrument!

ARDUINO IDE SCHOOLHANDLEIDING MET THEORIE, OEFENINGEN en EVALUATIETOOL

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Functies. <type> <functie naam> ( <type> <parameter naam> )

Modelleren en Programmeren

OEFENINGEN PYTHON REEKS 1

Vaak wil je een code schrijven, waar je verschillende acties uitvoeren voor verschillende beslissingen. Je kan daarbij keuzestructuren gebruiken.

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

EE1400: Programmeren in C BSc. EE, 1e jaar, , 2e college

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

Oefening 1 - Seriële communicatie via USB

// hier wordt de functie: ZegHallo aangeroepen

9 Meer over datatypen

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

17 Operaties op bits Bitoperatoren en bitexpressies

[8] De ene 1 is de andere niet

Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers

OEFENINGEN PYTHON REEKS 1

Variabelen en statements in ActionScript

Go: een snelle introductie

DEC SDR DSP project 2017 (2)

OEFENINGEN PYTHON REEKS 1

De keuzestructuur. Versie DD

Tweede workshop Arduino

Deeltentamen Grammatica s en ontleden 22 december 2005

Een korte samenvatting van enkele FORTRAN opdrachten

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

Small Basic Programmeren Text Console 2

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

van PSD naar JavaScript

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

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

Tentamen Programmeren in C (EE1400)

Software 1. php mysql. bachelor grafische en digitale media cross-media ontwerp & grafimediatechnologie academiejaar semester 1

DOC A. De Arduino programmeertaal. Versie 1.1

Modelleren en Programmeren

Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Jörg R. Hörandel Afdeling Sterrenkunde

Wat is Arduino? Arduino = microprocessor (Atmel)

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs

Lab Webdesign: Javascript 11 februari 2008

Workshop Arduino - deel 2

Tentamen Programmeren in C (EE1400)

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Java Les 3 Theorie Herhaal structuren

VBA voor Doe het Zelvers deel 20

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

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

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Tentamen Programmeren in C (EE1400)

Zelftest Inleiding Programmeren


Informatietechnologie 2. JavaScript. Inleidende les. Kristof Michiels

th_elt Hardware & Software

Instructies en blokken

slides12.pdf December 14,

extra oefening algoritmiek - antwoorden

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

Transcriptie:

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

Wat is een microcontroller

Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt in mogelijkheden (geheugen, snelheid, ) - Voorzien van I/O voor sturing - Alomtegenwoordig - Één toepassing - Honderden families, veel familieleden. (zie Wikipedia) - Programmeren high level low level

Arduino Is een verzamelnaam voor een ontwikkelplatform en dus geen microcontroller. Komt in verschillende versies: UNO : originele versie (ATmega168, later ATmega 328p) Leonardo : ATmega32U4 Lillypad: ATmega168V of ATmega328V (low power)

Structuur en syntax

Programma C-taal Opgebouwd uit functies Twee basisfuncties: setup() en loop() void setup() { statements; } void loop() { statements; }

Wat is een functie? [Type teruggegeven waarde] functienaam ([parameters]) { code; } Voorbeeld: void setup() { } Mag ook: void setup() {}

basisstructuur Terug naar basisstructuur van een Arduino programma: void setup() { statements; } void loop() { statements; } Void (=leegte) : betekent dat deze functie geen enkele waarde teruggeeft.

Voorbeeldprogramma: Blink.ino void setup() { pinmode(13, OUTPUT); } void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); }

Syntax Accolades: { } geven begin en einde van een programmacodeblok aan. Dit kan in een functie void loop() { statements; } Maar ook in een instructie zoals een for-instructie for (int i=0;i<10;i++) { statements; } puntkomma: ; is scheidingsteken tussen twee of meer statements. digitalwrite(13, HIGH); delay(1000);

commentaar /* */ blok commentaar. Alles tussen /* en */ wordt genegeerd tijdens compilatie. // regel commentaar. Alles na // op deze regel wordt genegeerd tijdens compilatie.

variabelen

Wat is jouw type? Een variabele wordt gekenmerkt door zijn type, zijn waarde en zijn scope (bereik). Het type van de variabele bepaalt welke waarden er kunnen worden in opgeslagen, en hoe de waarde precies opgeslagen wordt. Byte: 8 bit (=1 byte). Bereik van 0-255. Int: 16-bit (=2 byte). Standaard signed: bereik -32.768 tot +32.767 unsigned: bereik 0 tot 65.537 Long: 32-bit (=4 byte). standaard signed: bereik -2.147.483.648 tot 2.147.483.647 unsigned: bereik 0 tot 4.294.967.295 Float: 32-bit (=4 byte). Zie single precision floating point (digitale elektronica) Double: 64-bit (=8 byte). Zie double precision floating point (digitale elektronica) Opmerking: float en double bewerkingen: traag!!!

Type (vervolg) Char: 8 bits (=1 byte). Bevat ASCII code van een karakter. Opgepast: char is signed, dus bereik van -128 tot +127. Toekenning gebruikt single quotes of numerieke waarde. Char k = A ; Char k = 65; Beide toekenningen zijn evenwaardig. String: variabele lengte, afhankelijk van hoeveel tekens. Toekenning met double quotes. Nullterminated, dus 1 byte meer dan aantal letters. Opgepast: type string <> klasse String. (zie later). Arrays: reeks van waarden van hetzelfde type. Zero-indexed: eerste element [0]. int myarray[] = {waarde0, waarde1, waarde2...} myarray[2] = 17;

Scope? Een variabele is gedefinieerd binnen een bepaalde scope (bereik) van het programma. Het bestaan van de variabele beperkt zich tot deze scope. Erbuiten bestaat deze variabele niet. De scope is het codeblok waarbinnen de variabele gedefinieerd werd. We kunnen hierbij het boxmodel gebruiken: Het programma = hoofdbox Elke functie = subbox Elk instructie = subbox

Opgelet: 2 verschillende variabelen met zelfde naam binnen het programma. De ene sega heeft waarde 5 binnen setup(). De andere sega heeft waarde 4 binnen de loop().

Nog erger: SegA met waarde 5 gedefinieerd over volledig programma, dus ook in functie loop(). Binnen loop() echter 2 e sega gedefinieerd met waarde 4. Deze lokale variabele heeft voorrang.

Waar komt hier een foutmelding?

bewerkingen

Type van resultaat y = y + 3; x = x - 7; i = j * 6; r = r / 5; Resultaat afhankelijk van type. Bv.: int a,b; a=9; b=2; println(a/b); Geeft 4 i.p.v. 4.5 omdat beide variabelen integers zijn. Bewerking met 2 verschillende types: resultaat krijgt grootste type. Opgepast voor overflow: byte a = 250; a=a+50; Kan niet meer in de byte.

Samengestelde bewerkingen: x++ // is hetzelfde als x = x + 1, of verhoog x met +1 x-- // is hetzelfde als as x = x - 1, of verlaag x met -1 x+= y // is hetzelfde als as x = x + y, of verhoog x met +y x-= y // is hetzelfde als x = x - y, or of verlaag x met -y x*= y // is hetzelfde als x = x * y, of vermenigvuldig x met y x/= y // is hetzelfde als x = x / y, of deel x met y Vergelijkingen: x == y x!= y x < y x > y x <= y x >= y // x is gelijk aan y // x is niet gelijk aan y // x is kleiner dan y // x is groter dan y // x is kleiner of gelijk aan y // x is groter of gelijk aan y

Logische bewerkingen: Logische AND: if (x > 0 && x < 5) // waar alleen als beide vergelijkingen waar zijn Logische OR: if (x > 0 y > 0) // waar als één van de twee vergelijkingen waar zijn Logische NOT: if (!x > 0) // alleen waar als vergelijking niet waar is Bitwise bewerkingen: & (bitwise and) (bitwise or) ^ (bitwise xor) ~ (bitwise not) << (bitshift left) >> (bitshift right)

constanten

Constante? Een constante is voor Arduino hetzelfde als een variabele, alleen verandert de waarde nooit. Er zijn enkele voorgedefinieerde constanten (altijd hoofdletters): Booleaans: TRUE (!=0) en FALSE (=0) HIGH en LOW Pindefinitie: HIGH en LOW Zelf constanten definiëren: const float pi = 3.14; Alternatief: werken met #define (niet aangeraden!) #define pi 3.14

programmastructuren

Sequentie: De instructies worden in een blok na elkaar geplaatst, gescheiden door puntkomma. Een programmablok wordt geplaatst tussen accolades. { } digitalwrite(3,high); digitalwrite(4,low); digitalwrite(5,high); digitalwrite(3,high) digitalwrite(4,low) digitalwrite(5,high)

Selectie: Een codeblok wordt uitgevoerd indien voldaan wordt aan een voorwaarde If() { statements indien waar; } else { statements indien onwaar; } waar voorwaarde onwaar

Selectie: Een codeblok wordt uitgevoerd indien voldaan wordt aan een voorwaarde switch (var) { case 1: //do something when var equals 1 break; case 2: //do something when var equals 2 break; default: // if nothing else matches, do the default // default is optional break; }

Iteratie: Een codeblok wordt herhaald (zolang voldaan wordt aan een voorwaarde) for (variabele; conditie; expressie) { doeiets; } Voorbeeld for (int i=0; i<20; i++) // declareer i, en test of het kleiner is { // dan 20, I wordt met 1 opgehoogd digitalwrite(13, HIGH); // zet pin 13 aan delay(250); // 1/4 second pauze digitalwrite(13, LOW); // zet pin 13 uit delay(250); // 1/4 second pauze }

iteratie for (int i=0; i<20; i++) { instructie1; instructie2; } i=0 i<20 onwaar waar instructie1 instructie2 i=i+1

Iteratie: while (somevariable?? value) { doe iets; } Doe iets zolang aan de voorwaarde voldaan is. do { doe iets; } while (somevariable?? value); Idem, maar doordat de voorwaarde onderaan staat, wordt doe iets zeker 1x doorlopen.

while (i < 10) { instructie1; instructie2; } do { instructie1; instructie2; } while (i<10); i<10 onwaar instructie1 waar instructie2 instructie1 instructie2 i<10 onwaar waar