Hvorfor & Hvordan lære Elever At programmere Arduinoer



Relaterede dokumenter
Hvorfor & Hvordan lære. at programmere Arduinoer

Hvorfor & Hvordan lære Elever At programmere Arduinoer

CANSAT & ARDUINO step by step

Start på Arduino og programmering

CANSAT & ARDUINO step by step

Arduino kursus lektion 3:

TinkerCad - Arduino simulator

Fra programmering til mikroprocessor

Arduino kursus lektion 4:

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

Arduino Programmering

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

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Microcontroller, Arduino

Lektion 6 / Analog Arduino

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

Internt interrupt - Arduino

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

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

Programmering i C. Lektion september 2009

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

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

Microcontroller, Arduino

ARDUINO PROGRAMMERING

Lær Python dag 1 - modul 1

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

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Arduino Programmering

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

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

Demonstration af transitmetoden

Intro til AVR. Mads Pedersen, OZ6HR

Brug af digitale ind og udgange

#AlleKanKode. Lektion 3 - Operatorer

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

Video Projector Controller. Brugermanual

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

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

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

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.

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

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!

QUICKVEJLEDNING til multiguard DIN6. Montering

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

Analoge indgange og A/D konvertering. Analoge udgange

Fable Kom godt i gang

Programmering for begyndere Lektion 2. Opsamling mm

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

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.

// Definition af porte og funktioner

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

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

Optimering af fraværsregistrering

Mircobit Kursus Lektion 1

Kom godt i gang med Fable-robotten

Netværk & elektronik

Micro:Bit Indbygget sensorer og Monk Makes sensorbord

Fable Kom godt i gang

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

QUICK START Updated:

QUICK START Updated: 18. Febr. 2014

Brugermanual. 2GB MP3 afspiller

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

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET

Eksempel: Skat i år 2000

Måle og test I. Lasse Kaae 2012

QUICKVEJLEDNING til multiguard DIN9. Montering

QUICKVEJLEDNING til multiguard DIN4. Montering

GSM REMOTE CONTROL AND MONITORING SYSTEM Model: GSM-220

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.

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

USB-kabler og drivere

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

WT-1011RC Programmer User Guide

QUICK MANUAL - HUAWEI E3276

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

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

Med Fokus på Fremtiden

Bits DM534. Rolf Fagerberg, 2012

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

Forelæsning Uge 2 Torsdag

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

Projekt Træningsmaskine

WT-1011RC Programmer User Guide

Tour Mate. Page 1 of 7

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

Programmering i C. Lektion december 2008

EKSEMPEL PÅ ELEVOPGAVE TIL ARBEJDET MED PROGRAMMERING AF ARDUIONO MED LED BÅND

Python programmering. Per Tøfting. MacFest

uprocessorens hardware

Installationsmanual. 2 Installering Installering SMS sender Installering PSTN/GSM sender Installering PSTN GSM konverter...

Kom godt igang med DS-101g+ Disk Station. (installations vejledning)

DM-44TE 45 sek. Anti Shock bærbar CD-afspiller

QUICKMANUAL til multiguard Technic IO. Montering

MB-001 DCC/MM Udviklingsmodul

Python 3 kursus lektion 1:

GSM SMS Modem MODEL: SA RTU-1 V1.01

#AlleKanKode. Lektion 4 - Kontrol flow

Transkript:

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

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

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.3

Lærer/elevrollen Alle er i elevrollen her på Andøya 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.4

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.5

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

Xtremene Learning Eliminer muligheden for at gemme sig! Eller giv alle mulighed for succes Ingen skal kunne gemme sig Hold størrelse 2-3 Hvert hold sin Arduino Hvert hold en PC :-) Dreng-pige diskussion Rene drenge og piger grupper Extremene Programming er en operational udviklings metode JDN / No.7

Mål og delmål og indsats CANSAT konkurrence Lokalt Alle er deltagere :-) National Et antal gymnasier er deltagere International Et antal lande er deltagere PR Intra/lokalt/region/landsdækkende/... Hvad er jeres mål for succes? Hvad sælger i som succes kriterier til eleverne? JDN / No.8

Hvorfor forrige slide? Fordi succes kriterier tildels afspejles i hvad der skal læres. Fordi det giver hvor meget tid der skal bruges på det i skolen. Korrekt afvejet får de fleste forhåbentlig en succes med hjem JDN / No.9

Hvad er programmering? Programmeringssprog Udviklingsomgivelser Testomgivelser Afviklingsomgivelser Interface med omverden Digitale signaler Analoge signaler Kommunikation ( GPS (NMEA 0183) I2C,TWI,SPI,... JDN / No.10

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.11

JDN / No.12

Før vi starter Grupper og HW 2 prs pr gruppe rene dreng og pige grupper som udgangspunkt 1 Arduino/cansat pr gruppe 1 Arduino kan fås til 200 NOK/DKK + USB kabel Find super users i klassen Dem der kan hjælpe de andre med de første step Prøv det selv fra bunden af på ren maskine Logbogen... JDN / No.13

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

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.15

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

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

! 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.18

Dett var dagens lektion Eller? JDN / No.19

kodning Er som udgangspunkt faktisk ret svært C: http://www.control.aau.dk/~jdn/kernels/krnl/include/krnl2.h #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) JDN / No.20

Step 1 STRUKTUR JDN / No.21

Step 1 STRUKTUR start JDN / No.22

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

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.24

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.25

Invented @??? JDN / No.26

Invented @ NTNU!!! JDN / No.27

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.28

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.29

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.30

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 JDN / No.31

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.32

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.33

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

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.35

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.36

De ulineære ntc case JDN / No.37

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.38

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.39

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.40

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.41

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.42

Analog input JDN / No.43

! 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.44

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.45

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

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

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.48

telemetri som begreb JDN / No.49

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

PAUSE JDN / No.51

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

JDN / No.53

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.54

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

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

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

differentiering jeps! JDN / No.58