Hvorfor & Hvordan lære. at programmere Arduinoer

Relaterede dokumenter
Hvorfor & Hvordan lære Elever At programmere Arduinoer

Hvorfor & Hvordan lære Elever At programmere Arduinoer

CANSAT & ARDUINO step by step

Start på Arduino og programmering

Arduino kursus lektion 3:

CANSAT & ARDUINO step by step

TinkerCad - Arduino simulator

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor.

Fra programmering til mikroprocessor

Arduino kursus lektion 4:

Arduino Programmering

const int disponibel_10= 10; const int disponibel_11= 11; const int disponibel_12= 12; const int blinkled = 13; // pin 13 er LED på NANO

Lektion 6 / Analog Arduino

Alt elektronik heri er købt via og arduino udviklingssoftware er hentet fra

Internt interrupt - Arduino

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Microcontroller, Arduino

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering...

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Programmering i C. Lektion september 2009

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

ARDUINO PROGRAMMERING

Lær Python dag 1 - modul 1

Qwpikkemandtyuiopåasdfghjklæøzxc vbnmqwertyuiopåasdflortefissezxcvb nmqwertyuiopåasdfghjklæsupernørd mqwertyuiopåasdfghjklæøzxcvbnmq

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

Microcontroller, Arduino

Arduino Programmering

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 05/ Arduino, Loops, løkker, programfunktioner mm.

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Intro til AVR. Mads Pedersen, OZ6HR

BASAL ARDUINO SÅDAN KOMMER DU IGANG MED ARDUINO, OG FORBEREDER DIG TIL KURSERNE MBHOBBY.COM AFHOLDER.

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Brug af digitale ind og udgange

Modeljernbane elektronik for begyndere...og dem der vil igang med at bygge deres egne dekodere

2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.

Morse med micro:bit. Morse med micro:bit

Programmeringskursus Kursusaften 3. Programmering for begyndere Brug af Arduino. Display. Kursusaften 3 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK

Demonstration af transitmetoden

QUICKVEJLEDNING til multiguard DIN6. Montering

Video Projector Controller. Brugermanual

QUICKVEJLEDNING til multiguard DIN9. Montering

// Definition af porte og funktioner

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

Fable Kom godt i gang

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 08/ Arduino, Loops, løkker, programfunktioner mm.

Delay(100); Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter.

Mircobit Kursus Lektion 1

Måle og test I. Lasse Kaae 2012

Programmering for begyndere Lektion 2. Opsamling mm

Programmering i C. Kursusintroduktion. Lektion september Målgruppe 2 Indhold 3 Form 4 Materiale. Målgruppe Indhold Form Materiale

Vejledning til at tjekke om du har sat manuel IP på din computer.

Optimering af fraværsregistrering

Netværk & elektronik

QUICK GUIDE. Besøg hvis du vil have Quick Guiden på andre sprog.

Brugermanual. 2GB MP3 afspiller

Kom godt i gang med Fable-robotten

Dette korte foredrag er opdelt i 3 dele: 1. ARDUINO i flere versioner, hvad er det? 2. DEMO-video 3. Din fremtidige Oscillator, SI5351A 4.

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

#AlleKanKode. Lektion 3 - Operatorer

Sådan får du e-bøger på læseren

QUICKVEJLEDNING til multiguard DIN4. Montering

Fable Kom godt i gang

Eksamens spørgsmål i Teknologi (Digital) 3. Semester (i)

QUICK START Updated:

ECE 551: Digital System * Design & Synthesis Lecture Set 5

Python 3 kursus lektion 1:

AVR 용 USB-ISP V03 ( Model : AD-USBISP V03(-L) )

Analoge indgange og A/D konvertering. Analoge udgange

WT-1675B-8 GSM Alert and Monitoring System 9 inputs, 1 relay

Forelæsning Uge 2 Torsdag

QUICK START Updated: 18. Febr. 2014

Spørgsmål: Hvordan kan jeg sætte routeren op uden brug af CD en? Svar: Routeren kan sættes op manuelt iht. step by step guiden nedenfor!

Eksempel: Skat i år 2000

Lektion 5 / Arduino intro. Mogens Jacobsen / moja@itu.dk

MB-001 DCC/MM Udviklingsmodul

Mircobit Kursus Lektion 3 (Du skal her vælge Lets Code Og nederst Microsoft Block Editor.)

Test at det virker ved at sende SMS med beskeden 1234, Status til din CTSmall modtager du IKKE en bekræftelse på SMS, så gå tilbage til punkt 1.

Programmering i C. Lektion december 2008

Forelæsning Uge 2 Mandag

Bits DM534. Rolf Fagerberg, 2012

Opera Ins. Model: MI5722 Product Name: Pure Sine Wave Inverter 1000W 12VDC/230 30A Solar Regulator

Projekt rapport. for. Zigbee kommunikation

QUICKVEJLEDNING til multiguard DIN6. Montering

QUICKVEJLEDNING til multiguard Master IO. Montering

QUICKVEJLEDNING til 9-moduler. Montering

QUICKMANUAL til multiguard Technic IO. Montering

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses.

WIO200A INSTALLATIONS MANUAL Rev Dato:

Python programmering. Per Tøfting. MacFest

QUICK MANUAL - HUAWEI E3276

"# $%$ " # $ % $ $ " & ( ) *+!,! Sum_Cost >= 5000SirName = Beltov Continue = %!- + ( ( - True) Continue *! If Antal <= 20 Then EnhedsOmk = 1.

uprocessorens hardware

QUICKMANUAL til multiguard Technic IO. Montering

01 tilt/shift:theaestheticofselection Boluk,LeMieux,Tankersley 02

XVR optager med 8 kanaler (1080N) Varenr

Teknisk information. ( Hvad skal der bruges? ) Porten som Puls : Evt. Solid-Stat relæ Omron (G3R-OA202SZN) Evt. Solid-Stat relæ Omron (G3R-OA202SZN)

Transkript:

Hvorfor & Hvordan lære Jens Dalsgaard Nielsen at programmere Arduinoer JDN / No.1

http://es.aau.dk/staff/jdn/edu/courses/14-2/ars mine slides alle kodeeksempler Et C/arduino kursus http://es.aau.dk/staff/jdn/edu/courses/14-2/imperativ/ JDN / No.2

Teknologi konkurrencen IPADs, mobilos, HTC'er Medicentre JDN / No.3

IPAD, Iphone, HTC,... 1000 Mhz 8000000 kbyte Arduino 16 Mhz 8 kbyte Faktor 100 i processeringshastighed Faktor 1 million i hukommelsesstørrelse Hvor ligger imponator effekten? Hvor er aha oplevelsen? Næææh en gang far og mor var børn da... JDN / No.4

Lærer/elevrollen Alle er i elevrollen her idag Der er hjælp at få Der er støtte fra de andre elever (gruppearbejdet) De fleste her har gået mindst 15 år i skole ;-) Man er lidt svær at skubbe af pinden håber jeg JDN / No.5

Læring af eleverne Helt anden situation Nu er I læreren! Det største problem er at få et drive i eleverne Alle sammen :-) JDN / No.6

Vejen mod målet KISS Der skal være en succes historie i hver time! osse her :-) Need to know approach HW SW... JDN / No.7

TV køkken Ready to fill in dokumenter/templates Et rigtigt eksempel til at lære af Dropbox,skole IT,... ENKELT! Arduino Allerede færdige eksempler JDN / No.8

Imperativ programmeringssprog C,C++,java,... Programmer byder programmet at udføre hvad der skal udføres JDN / No.9

JDN / No.10

Milestone 1 Installer Arduino SW Start Arduino SW Se at det virker Note: Windows XP, Vista, 7 MAC OS Linux Muligheder for driver cirkus på windows/mac OS med gamle boards. Se http://arduino.cc/en/guide/guide JDN / No.11

Hvad betyder at det virker? Open for comments... JDN / No.12

Milestone 2 Få forbindelse til cansat/arduino via USB-seriel JDN / No.13

! Arduino program kan startes Man kan identificere USB serial port der tilhører Arduino Hint: ryk stik ud se hvilken der forsvinder Blink virker Virker bare der er strømforsyning på arduino JDN / No.14

Dett var dagens lektion Eller? JDN / No.15

kodning Er som udgangspunkt faktisk ret svært :-( #define K_set_fatal_err_hook(ahook) \ ((krnl_err (*)(void (*)(krnl_err (*fatal_hook) \ (krnl_err e, int sinner)))) \ (*(*pk_call_vector) \ [ak_set_fatal_err_hook])) (ahook) men Arduino platform gør det let(tere) JDN / No.16

Step 1 STRUKTUR JDN / No.17

Step 1 STRUKTUR start JDN / No.18

setup loop loop loop loop loop... Så hurtig som muligt! Dvs tid er noget I skal styre hvis I feks vil måle 2 gange i sekundet JDN / No.19

To typer ting man kan Udføre fremmed kode husk imperativ vi kommanderer Lave egen kode Tilføje egne kommentarer i kode Udføre... Data/info til funktion Serial.begin(9600); delay(1000); // vent i 1000 millisek JDN / No.20

Første program /* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinmode(13, OUTPUT); } void loop() { digitalwrite(13, HIGH); delay(1000); digitalwrite(13, LOW); delay(1000); } // set the LED on // wait for a second // set the LED off // wait for a second JDN / No.21

void setup() { pinmode(13, OUTPUT); } void prik() { digitalwrite(13, HIGH); // set the LED on delay(100); // wait for 0,2 sec digitalwrite(13, LOW); // set the LED off Delay(1000); // vent 1 sek } void streg() { digitalwrite(13, HIGH); // set the LED on delay(600); // wait for 0,2 sec digitalwrite(13, LOW); // set the LED off Delay(1000); // vent 1 sek } void loop() { prik(); prik(); prik(); streg(); streg(); streg(); prik(); prik(); prik(); } Andet program - morse JDN / No.22

Funktions kald Kald: navn(parameter) ; ; er sætningens punktum Serial.begin(9600); delay(1000); pinmode(13,output); Man kan næsten snakke koden ( på bydeform: imperativ prog...) JDN / No.23

Egen kode lighedstegnet X = 3; // ikke en ligning!!! // husk imperativ // vi byder x at holde // værdien 3 x = 3; x = x + 3; // er helt lovligt Højresiden regnes ud Venstresiden sættes lig resultat Så x er lig 6 efter ovenstående kode JDN / No.24

Datatyper desværre nødvendigt int : heltal 32768, 32767,...,0,1,2,32767 typiske fejl: x = 32767; x = x+1; hvad er x?? x er 32768 16 bit heltal : ( JDN / No.25

heltal regneri int i; int j; int k; void loop() { j = 10; i = 20; k = j/i; k = k * 1000; k = (j/i)*1000; k = (1000 * j)/k ;... JDN / No.26

heltal regneri dagens resultat int i; int j; int k; void loop() { j = 10; i = 20; k = j/i; k = k * 1000; // k er nu 0 heltalsdivision k = (j/i)*1000; // 0 k = (1000 * j)/k ; // k er nu 500!!!... JDN / No.27

Heltal Addition,,Subtraktion, division og multiplikation er FARLIG! hvad kan man så... tænke sig lidt om! Reducer formler inden de kodes JDN / No.28

Fra jord til bord I naturen: fysisk værdi (temperatur,tryk, acceleration,..) sensor representation: typisk analog spænding Analog til digital converter 10 bit 0-5V 0,1,2,3,...1023 (1024 værdier) 0 svarer til [0-5/(1023)[ 1: [5/1023 2*5/1023[... 0: 0V 1: 5/1023 V 2: 2*5/1023 V //hm men ok JDN / No.29

Fra jord til bord II Måletal (0..1023) skal nu omfattes tilbage til fysisk enhed (SI?!?) temp[c] = (måletal *5/1023) /0,010 [C] husk igen på trunkering heltal: måletal*5/1023 Altid 0 sålænge måletal < 1023/5... I telemetri: send også rådata hjem JDN / No.30

De ulineære ntc case JDN / No.31

De intelligente serial interface: Serial.read()... GPS NMEA telegrammer $GPRMC,213513.200,A,0441.4187,N,07401.6579,W,0.56,59.66,280411,,,A*4C $GPGGA,213513.400,0441.4187,N,07401.6579,W,1,7,1.28,2636.9,M,3.2,M,,*4C $GPRMC,213513.400,A,0441.4187,N,07401.6579,W,0.56,59.66,280411,,,A*4A $GPGGA,213513.600,0441.4187,N,07401.6579,W,1,7,1.28,2636.9,M,3.2,M,,*4E JDN / No.32

Temperatur sensor // sensor: 20 mv pr grad C 0..85 grader ca // 0V ~= 0C // 0,400V ~= 20C 0,020 *20 int raatemp,temp;... raatemp = analogread(a0); // vi maalte temp = raatemp * 5/1023 * 0.020 ; NB : anglikansk kodning: i decimaltal. JDN / No.33

Temperatur sensor int raatemp,temp;... raatemp = analogread(a0); // vi maalte temp = raatemp * 5/1023 * 0.020 ; // FEJL FJEL FEJL FJELL FEJL temp er heltal højreside er kommatal!!! hvorfor? JDN / No.34

Temperatur sensor nu med kommatal int raatemp; float temp;... raatemp = analogread(a0); // vi maalte temp = (raatemp * 5/1023) * 0.020 ; // FEJL FJEL FEJL FJELL FEJL temp er 0.0 hvorfor???!!! hvorfor? JDN / No.35

Temperatur sensor nu med kommatal int raatemp; float temp;... raatemp = analogread(a0); // vi maalte temp = raatempt; temp = (temp * 5/1023) * 0.020 ; NU VIRKER DET : ) hvorfor??? JDN / No.36

Analog input JDN / No.37

! De forrige 20 slides viser hvor nemt der går detalie i det... behov for 20 små enkle programmer der illustrerer det vi har set indtil nu hvem skriver dem... JDN / No.38

milestones installering af Arduino morse las analog sensor skriv den hjem til PC int, float, byte herunder 0 problematikken Gruppeproblematik 2 prs teams - hvad hvis der havde været 6 prs grupper her? JDN / No.39

Hvad mangler de for at kunne kode? Strenge løkker if then else? to ce keys JDN / No.40

Boolsk algebra if (a == b) { } else { } if ( a < b ) a og b er heltal IKKE floats JDN / No.41

void setup() { Serial.begin(9600); } void loop() { int kar; kar = Serial.read(); if (kar!= 1 ) { Serial.print( vi har laest... ); Serial.print(kar); } } JDN / No.42

telemetri som begreb JDN / No.43

PC USB how are you I'm fine Arduino Ren chat protokol JDN / No.44

PAUSE JDN / No.45

PC USB 1 2 Arduino Ren chat protokol send tal over returner værdi plus 1 JDN / No.46

JDN / No.47

Telemetri kapacitets problem Kommunikationslink feks 1200 baud ~ 100 Bytes/sec max! Protokol overhead i eks AX.25 effektivt måske 75 Bytes/sec klokken er nu 13:45 UTC pos er 72N 72W vandet er koldt 55 bytes som tager 55/75 sec = 0,74 sec void loop() { readnmeafragps(); sendtelemetrihjem(); delay(1000); } LOOPTID????? mindst 1,74 sek... JDN / No.48

Hvad mangler de for at kunne kode? Strenge løkker if then else? to ce keys JDN / No.49

int i1; int i2; void loop() { i1 = 3; i2 = 4; if (i2 < i1) // boolsk evaluering på heltal { } else { } JDN / No.50

if ()... while () { } boolske operatorer: <, > <=, >=, ==,!= && (and) (or) sammensatte udtryk er lovlig if ( ( (i1< i2 ) && (pp >=3) ) (isifryser == true) ) JDN / No.51

differentiering jeps! JDN / No.52