ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

Like dokumenter
ARDUINO STUDIELABEN. Roger Antonsen INF februar 2012

ARDUINO STUDIELABEN PROGRAMMERING DIGITALE/ANALOGE INNDATA/UTDATA LYSDIODER FRITZING. Roger Antonsen INF januar 2012

Litt mer om Arduino. Roger Antonsen Sten Solli INF januar 2011

SUPER DISCLAIMER. Vi endrer opplegget litt fra år til år, og vi hører på dere!

WORKSHOP BRUK AV SENSORTEKNOLOGI

Prototyping med Arduino del 2

INF1510: Bruksorientert design

INF1510: Bruksorientert design

IN1060: Bruksorientert design

Ultralydsensor. Introduksjon. Litt om ultralydsensorer. Arduino. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Høgskoleni østfold EKSAMEN. Oppgavesettet består av 8 sider inklusiv denne forsiden og vedlegg.

INF1510: Bruksorientert design

Blinkende lysdiode Introduksjon Arduino Lærerveiledning

1. Arduino Bluetooth 2 HC-05 modul

består av 7 sider inklusiv denne forsiden og vedlegg. Kontroller at oppgaven er komplett før du begynner å besvare spørsmålene.

Steg 1: Installere programvaren

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

EKSAMEN. Informasjon om eksamen. Emnekode og -navn: ITD13012 Datateknikk. Dato og tid: timer. Fagansvarlig: Robert Roppestad

FORDYPNINGSEMNE 2012

7-Segment Display Nybegynner Arduino Lærerveiledning

En to-timers oppskrift for å bygge og programmere en Arduino-drevet strikk-

1. Arduino Bluetooth 4.0 Low Energy (BLE)

Prototyping med Arduino del 3

EKSAMEN (Del 2, våren 2015) Løsningsforslag

Eksamensoppgaven: Hele oppgavesettet består av 8 oppgaver. Hver oppgave har en %-angivelse som angir hvor mye den teller ved sensurering.

Emnenavn: Datateknikk. Eksamenstid: 3 timer. Faglærere: Robert Roppestad. Hele oppgavesettet består av 8 oppgaver, samt 1 vedlegg.

Exercise 1: Phase Splitter DC Operation

INF1510 Oblig #1. Kjetil Heen, februar 2016

Arduino bilen er en selvgående liten robot. Roboten består av:

LF - anbefalte oppgaver fra kapittel 2

Elektrolaboratoriet RAPPORT. Oppgave nr. 1. Spenningsdeling og strømdeling. Skrevet av xxxxxxxx. Klasse: 09HBINEA. Faglærer: Tor Arne Folkestad

Bruk av interrupt og Timer i Arduino-program.

Teknisk dokumentasjon for Ludosphaera

Marine Propulsion Control Systems 9000 Series Processor Feilsøking

INF1411 Obligatorisk oppgave nr. 3

LabVIEW seriekommunikasjon med mikrokontroller

Elektronikk og programmering av ubrukelige roboter

Del 1 En oversikt over C-programmering

IN uke 1. Komme i gang med programmering

WORKSHOP BRUK AV SENSORTEKNOLOGI

KROPPEN LEDER STRØM. Sett en finger på hvert av kontaktpunktene på modellen. Da får du et lydsignal.

C:\My Documents\Fagprove\Flashlite V25+\LED_Link.pas Printed at 16:06 on 17 Feb 2000 Page 1 of 6

Kapittel 1 En oversikt over C-språket

Teknisk Rapport HVASS

1 Innledning. 2 Virkemåte for kortet. Bli kjent med USB I/O kort K8055. NB! Ta med multimeter og lite skrujern!

Bruksanvisning Unitronics Vision

inf 1510: bruksorientert design

LAB 7: Operasjonsforsterkere

KYBERNETIKKLABORATORIET. FAG: Industriell IT DATO: OPPG.NR.: LV4. LabVIEW Temperaturmålinger BNC-2120

Et lite oppdrag i bakgrunnen

Elevverksted Elektronikk Bruk av transistor som bryter

VELKOMMEN INN I DITT NYE TV-UNIVERS. Foto: Jens Haugen / ANTI

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

super:bit-oppdraget Lærerveiledning Versjon 1, august 19.

for nybegynnere Innføring i grunnleggende elektronikk Av Torgeir Bull

Programmeringsspråket C Del 2. Hans Petter Taugbøl Kragset

IN uke 1. Komme i gang med programmering

Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

2. La det bli lys Ditt første Arduino program

TDT4110 IT Grunnkurs Høst 2016

Nybegynnerkurs i C. Øyvind Grønnesby. 14. oktober Introduksjon Typer Operatorer Kontrollstrukturer Pekere Makroer Lenker

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

GYRO MED SYKKELHJUL. Forsøk å tippe og vri på hjulet. Hva kjenner du? Hvorfor oppfører hjulet seg slik, og hva er egentlig en gyro?

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Forelesning nr.2 INF 1411 Elektroniske systemer. Effekt, serielle kretser og Kirchhoffs spenningslov

CodevisionAVR. Start CodevisionAVR. Velg Settings Terminal og sett opp kommunikasjonsparametrene som figur 1 viser. avrlab07a.doc HVE RI Arnfinn Lunde

CLS. DMX16 16 kanals DMX Lys mikser. Bruksanvisning 2001 V1.0 Laget i Norge av Compact Light System AS office@cls.no

Kjenn din PC (Windows 7)

Forelesning nr.2 INF 1411 Elektroniske systemer. Effekt, serielle kretser og Kirchhoffs spenningslov

Studere en Phase Locked Loop IC - LM565

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

UNIVERSITETET I OSLO

TDT4110 IT Grunnkurs Høst 2015

Invarianter, +lstander og li1 mer seman+kk

EKSAMEN Løsningsforslag Emne: Fysikk og datateknikk

Elektronisk termostat med spareprogram. Lysende LCD display øverst på ovnen for enkel betjening.

HONSEL process monitoring

TDT4110 IT Grunnkurs Høst 2014

INF2270 Datamaskinarkitektur

Løsningsforslag for obligatorisk øving 1

BIBSYS Brukermøte 2011 Live Rasmussen og Andreas Christensen. Alt på et brett? -om pensum på ipad og lesebrett

Øvingsforelesning 5 Python (TDT4110)

Sprettball Erfaren ComputerCraft PDF

PATIENCE TÅLMODIGHET. Is the ability to wait for something. Det trenger vi når vi må vente på noe

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF2270 Datamaskinarkitektur

Start Here USB *CC * *CC * USB USB

Øvingsforelesning 5 Python (TDT4110)

Metoder med parametre, løkker og arrayer

Compello Fakturagodkjenning Versjon 10.5 As a Service. Tilgang til Compello Desktop - Regnskapsføring og Dokument import

Input og beslutninger

I oppgave 2 og 3 brukes det R 2R nettverk i kretsene. Det anbefales å gjøre denne forberedelsen før gjennomføring av Lab 8.

INF1411 Oblig nr. 4 Vår 2011

Han Ola of Han Per: A Norwegian-American Comic Strip/En Norsk-amerikansk tegneserie (Skrifter. Serie B, LXIX)

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Løsningsforslag til EKSAMEN

Transkript:

ARDUINO SERIELL KOMMUNIKASJON ELEKTRONIKKSYMBOLER SPENNINGSDELERE PROGRAMMERINGSTIPS SERVOMOTORER MER OM LYSDIODER RESSURSER SONE NETTSTEDER / RESSURSER ÅPEN ÅPEN SONE FOR EKSPERIMENTELL INFORMATIKK ÅPEN SONE FOR EKSPERIMENTELL INFORMATIKK STUDIELABEN Roger Antonsen INF1510 6. februar 2012

Arduino Cookbook, Michael Margolis Denne boken inneholder det meste man trenger å vite. Flere av illustrasjonene og eksemplene i denne forelesningen er tatt derfra. Making Things Talk, Tom Igoe En mer avansert, men veldig bra, bok!

SERIELL KOMMUNIKASJON http://arduino.cc/en/reference/serial

SERIELL KOMMUNIKASJON

SERIELL KOMMUNIKASJON Seriell kommunikasjon kan brukes for å la Arduinokortet kommunisere med andre enheter på en enkel måte.

SERIELL KOMMUNIKASJON Seriell kommunikasjon kan brukes for å la Arduinokortet kommunisere med andre enheter på en enkel måte. Pinnene 0 (RX receive for å motta) og 1 (TX transmit for å sende) er konfigurert for dette.

SERIELL KOMMUNIKASJON Seriell kommunikasjon kan brukes for å la Arduinokortet kommunisere med andre enheter på en enkel måte. Pinnene 0 (RX receive for å motta) og 1 (TX transmit for å sende) er konfigurert for dette. Vi kan også bruke Serial Monitor for sende til og fra Arduinokortet via USB, men da kan ikke 0 og 1 brukes til digital input/output.

SERIELL KOMMUNIKASJON Seriell kommunikasjon kan brukes for å la Arduinokortet kommunisere med andre enheter på en enkel måte. Pinnene 0 (RX receive for å motta) og 1 (TX transmit for å sende) er konfigurert for dette. Vi kan også bruke Serial Monitor for sende til og fra Arduinokortet via USB, men da kan ikke 0 og 1 brukes til digital input/output. Forrige gang viste jeg hvordan vi kunne bruke dette til feilsøking.

SETTE RIKTIG HASTIGHET

SETTE RIKTIG HASTIGHET Serial.begin(speed)

SETTE RIKTIG HASTIGHET Serial.begin(speed) Setter overføringshastigheten (baud bit per sekund) til å være speed. Hvis man vil kommunisere med datamaskinen, så må dette matche programmets innstilling; for Arduino, enten 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 eller 115200.

Å SENDE DATA

Å SENDE DATA Serial.print(verdi) og Serial.println(verdi)

Å SENDE DATA Serial.print(verdi) og Serial.println(verdi) Sender data til seriellporten som menneskelesbar ASCII-tekst.

Å SENDE DATA Serial.print(verdi) og Serial.println(verdi) Sender data til seriellporten som menneskelesbar ASCII-tekst. Serial.print(78) gir 78 Serial.print(1.23456) gir 1.23 Serial.print('N') gir N Serial.print("Hello world.") gir Hello world.

Å SENDE DATA Serial.print(verdi) og Serial.println(verdi) Sender data til seriellporten som menneskelesbar ASCII-tekst. Serial.print(78) gir 78 Serial.print(1.23456) gir 1.23 Serial.print('N') gir N Serial.print("Hello world.") gir Hello world. Den returnerer antall byte som ble sendt.

Serial.print(verdi,format)

Serial.print(verdi,format) Ved å angi format så kan vi velge format.

Serial.print(verdi,format) Ved å angi format så kan vi velge format. For heltall kan vi velge base mellom BIN, OCT, DEC og HEX.

Serial.print(verdi,format) Ved å angi format så kan vi velge format. For heltall kan vi velge base mellom BIN, OCT, DEC og HEX. Serial.print(78,BIN) gir 1001110 Serial.print(78,OCT) gir 116 Serial.print(78,DEC) gir 78 Serial.print(78,HEX) gir 4E

Serial.print(verdi,format) Ved å angi format så kan vi velge format. For heltall kan vi velge base mellom BIN, OCT, DEC og HEX. Serial.print(78,BIN) gir 1001110 Serial.print(78,OCT) gir 116 Serial.print(78,DEC) gir 78 Serial.print(78,HEX) gir 4E For flyttall spesifiserer format antall desimaler.

For de ekstra nysgjerrige: hvordan ser kildekoden ut? size_t println(const FlashStringHelper *); size_t println(const String &s); size_t println(const char[]); size_t println(char); size_t println(unsigned char, int = DEC); size_t println(int, int = DEC); size_t println(unsigned int, int = DEC); size_t println(long, int = DEC); size_t println(unsigned long, int = DEC); size_t println(double, int = 2); size_t println(const Printable&); size_t println(void);

Serial.write(verdi)

Serial.write(verdi) Sender verdi som en enkel byte.

Serial.write(verdi) Sender verdi som en enkel byte. Serial.write(str)

Serial.write(verdi) Sender verdi som en enkel byte. Serial.write(str) Når str er en streng, så sendes den som en sekvens av byte.

Serial.write(verdi) Sender verdi som en enkel byte. Serial.write(str) Når str er en streng, så sendes den som en sekvens av byte. print og write brukes litt forskjellig; når vi vil gjøre om til strenger som er lesbare, så bruker vi print, men når vi vil ha mer kontroll, og sende byte, så bruker vi write.

byte verdi = 65; Serial.print(verdi); resultat: 65

byte verdi = 65; Serial.print(verdi); resultat: 65 byte verdi = 65; Serial.write(verdi); resultat: A

byte verdi = 65; Serial.print(verdi); resultat: 65 byte verdi = 65; Serial.write(verdi); resultat: A Det blir samme resultat med int.

byte verdi = 65; Serial.print(verdi); resultat: 65 byte verdi = 65; Serial.write(verdi); resultat: A Det blir samme resultat med int. int verdi = 65; Serial.print(verdi); resultat: 65

byte verdi = 65; Serial.print(verdi); resultat: 65 byte verdi = 65; Serial.write(verdi); resultat: A Det blir samme resultat med int. int verdi = 65; Serial.print(verdi); resultat: 65 int verdi = 65; Serial.write(verdi); resultat: A

byte verdi = 65; Serial.print(verdi); resultat: 65 byte verdi = 65; Serial.write(verdi); resultat: A Det blir samme resultat med int. int verdi = 65; Serial.print(verdi); resultat: 65 int verdi = 65; Serial.write(verdi); resultat: A Det er fordi verdien 65 tolkes som ASCII-tegnet A.

byte verdi = 65; Serial.print(verdi); resultat: 65 byte verdi = 65; Serial.write(verdi); resultat: A Det blir samme resultat med int. int verdi = 65; Serial.print(verdi); resultat: 65 int verdi = 65; Serial.write(verdi); resultat: A Det er fordi verdien 65 tolkes som ASCII-tegnet A. Med char, så får vi A uansett.

char verdi = 65; Serial.print(verdi); resultat: A

char verdi = 65; Serial.print(verdi); resultat: A char verdi = 65; Serial.write(verdi); resultat: A

char verdi = 65; Serial.print(verdi); resultat: A char verdi = 65; Serial.write(verdi); resultat: A Det spiller heller ingen rolle hvordan vi tilordner verdien.

char verdi = 65; Serial.print(verdi); resultat: A char verdi = 65; Serial.write(verdi); resultat: A Det spiller heller ingen rolle hvordan vi tilordner verdien. char verdi = A ; Serial.print(verdi); resultat: A

char verdi = 65; Serial.print(verdi); resultat: A char verdi = 65; Serial.write(verdi); resultat: A Det spiller heller ingen rolle hvordan vi tilordner verdien. char verdi = A ; Serial.print(verdi); resultat: A char verdi = A ; Serial.write(verdi); resultat: A

char verdi = 65; Serial.print(verdi); resultat: A char verdi = 65; Serial.write(verdi); resultat: A Det spiller heller ingen rolle hvordan vi tilordner verdien. char verdi = A ; Serial.print(verdi); resultat: A char verdi = A ; Serial.write(verdi); resultat: A Med print, så kan vi også få andre formater.

char verdi = 65; Serial.print(verdi); resultat: A char verdi = 65; Serial.write(verdi); resultat: A Det spiller heller ingen rolle hvordan vi tilordner verdien. char verdi = A ; Serial.print(verdi); resultat: A char verdi = A ; Serial.write(verdi); resultat: A Med print, så kan vi også få andre formater. int verdi = 65; Serial.print(verdi, BIN); resultat: 1000001

Å TA IMOT DATA

Å TA IMOT DATA Arduinokortet kan også ta imot data.

Å TA IMOT DATA Arduinokortet kan også ta imot data. Serial.available() gir antall byte som er klar for lesing.

Å TA IMOT DATA Arduinokortet kan også ta imot data. Serial.available() gir antall byte som er klar for lesing. Serial.read() gir første byte som er ledig (eller -1 hvis det ikke er noe å lese) og fjerner det fra bufferen.

Å TA IMOT DATA Arduinokortet kan også ta imot data. Serial.available() gir antall byte som er klar for lesing. Serial.read() gir første byte som er ledig (eller -1 hvis det ikke er noe å lese) og fjerner det fra bufferen. Serial.peek() gir første byte som er ledig (eller -1 hvis det ikke er noe å lese), men fjerner det ikke.

EKSEMPEL

EKSEMPEL int inndata = 0;

EKSEMPEL int inndata = 0; void setup() {

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600);

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); }

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() {

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) {

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { inndata = Serial.read();

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { inndata = Serial.read(); Serial.print("Jeg mottok: ");

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { inndata = Serial.read(); Serial.print("Jeg mottok: "); Serial.println(innData, DEC);

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { inndata = Serial.read(); Serial.print("Jeg mottok: "); Serial.println(innData, DEC); }

EKSEMPEL int inndata = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { inndata = Serial.read(); Serial.print("Jeg mottok: "); Serial.println(innData, DEC); } }

KONTROLL/OPPRYDDING

KONTROLL/OPPRYDDING Serial.flush() venter til alle utdata er sendt ferdig.

KONTROLL/OPPRYDDING Serial.flush() venter til alle utdata er sendt ferdig. Før Arduino 1.0 gjorde denne at alt i inn-bufferen ble fjernet.

KONTROLL/OPPRYDDING Serial.flush() venter til alle utdata er sendt ferdig. Før Arduino 1.0 gjorde denne at alt i inn-bufferen ble fjernet. Hvis vi vil fjerne alt fra inn-bufferen, så kan vi bruke følgende. while(serial.read() >= 0);

VENTE PÅ SERIELLE DATA

VENTE PÅ SERIELLE DATA Vi kan få noe til å skje nøyaktig når det kommer signaler inn ved å definere void serialevent().

VENTE PÅ SERIELLE DATA Vi kan få noe til å skje nøyaktig når det kommer signaler inn ved å definere void serialevent(). Alt i serialevent blir kjørt en gang per loop() hvis det er innkommende serielle data.

VENTE PÅ SERIELLE DATA Vi kan få noe til å skje nøyaktig når det kommer signaler inn ved å definere void serialevent(). Alt i serialevent blir kjørt en gang per loop() hvis det er innkommende serielle data. Vi ser på et eksempel!

ELEKTRONIKKSYMBOLER http://en.wikipedia.org/wiki/electronic_symbol

Jord Diode Bryter Spenningskilde + Motstand Transistor Potentiometer

SPENNINGSDELERE http://en.wikipedia.org/wiki/voltage_divider

V inn = 5 volt R 1 V ut R 2 JORD (GND)

V inn = 5 volt Her ser vi to motstander, R 1 og R 2. R 1 V ut R 2 JORD (GND)

R 1 V inn = 5 volt V ut Her ser vi to motstander, R 1 og R 2. Disse to gjør at spenningen V ut blir delt på en måte som avhenger av størrelsene til motstandene. R 2 JORD (GND)

R 1 R 2 V inn = 5 volt V ut Her ser vi to motstander, R 1 og R 2. Disse to gjør at spenningen V ut blir delt på en måte som avhenger av størrelsene til motstandene. Hvis R 1 = R 2, så vil V ut = 2,5 volt, for da er spenningen delt på midten. JORD (GND)

R 1 R 2 V inn = 5 volt V ut Her ser vi to motstander, R 1 og R 2. Disse to gjør at spenningen V ut blir delt på en måte som avhenger av størrelsene til motstandene. Hvis R 1 = R 2, så vil V ut = 2,5 volt, for da er spenningen delt på midten. Anta at R 1 = 4000 Ω og R 2 = 1000 Ω. Hva blir V ut? JORD (GND)

R 1 R 2 V inn = 5 volt V ut Her ser vi to motstander, R 1 og R 2. Disse to gjør at spenningen V ut blir delt på en måte som avhenger av størrelsene til motstandene. Hvis R 1 = R 2, så vil V ut = 2,5 volt, for da er spenningen delt på midten. Anta at R 1 = 4000 Ω og R 2 = 1000 Ω. Hva blir V ut? JORD (GND) Da blir V ut lik 1 volt!

V inn = 5 volt R 1 V ut R 2 JORD (GND)

V inn = 5 volt Generelt har vi følgende forhold. R 1 V ut R 2 JORD (GND)

V inn = 5 volt Generelt har vi følgende forhold. R 1 V ut V ut = V inn R 2 R 1 + R 2 R 2 JORD (GND)

V inn = 5 volt Generelt har vi følgende forhold. R 1 V ut V ut = V inn R 2 R 1 + R 2 R 2 Når R 1 = 4000 Ω og R 2 = 1000 Ω, så får vi følgende. JORD (GND)

V inn = 5 volt Generelt har vi følgende forhold. R 1 V ut V ut = V inn R 2 R 1 + R 2 R 2 Når R 1 = 4000 Ω og R 2 = 1000 Ω, så får vi følgende. V ut = 5 volt 1000 Ω 4000 Ω + 1000 Ω = 1 volt JORD (GND)

SÅ? SPILLER DET NOEN ROLLE?

SÅ? SPILLER DET NOEN ROLLE?

SÅ? SPILLER DET NOEN ROLLE? JA!

La oss se på flex-sensoren.

La oss se på flex-sensoren. Det står at den har en rekkevidde fra 25 kω (når den er flat) til 45-125 kω (når den bøyes).

La oss se på flex-sensoren. Det står at den har en rekkevidde fra 25 kω (når den er flat) til 45-125 kω (når den bøyes). For å kunne bruke den som en sensor, så må vi ha en spenningsdeler.

La oss se på flex-sensoren. Det står at den har en rekkevidde fra 25 kω (når den er flat) til 45-125 kω (når den bøyes). For å kunne bruke den som en sensor, så må vi ha en spenningsdeler. La oss bruke en motstand på 20 kω og se hva vi får!

La oss se på flex-sensoren. Det står at den har en rekkevidde fra 25 kω (når den er flat) til 45-125 kω (når den bøyes). For å kunne bruke den som en sensor, så må vi ha en spenningsdeler. La oss bruke en motstand på 20 kω og se hva vi får! Men, vi har ikke 20 kω i settet vårt...

La oss se på flex-sensoren. Det står at den har en rekkevidde fra 25 kω (når den er flat) til 45-125 kω (når den bøyes). For å kunne bruke den som en sensor, så må vi ha en spenningsdeler. La oss bruke en motstand på 20 kω og se hva vi får! Men, vi har ikke 20 kω i settet vårt... Ikke noe problem, det er bare å koble to stk. 10 kω i serie!

DATAARK FOR FLEXSENSOREN Når vi jobber med komponenter, så må vi se på dataarkene for å finne ut hvordan de funker!

Her står det hva motstanden er når sensoren er flat. Her står det hva motstanden er når sensoren er bøyd.

Når vi nå vet at rekkevidden på flex-sensoren er fra 25 kω (når den er flat) til 45-125 kω (når den bøyes), så kan vi faktisk regne ut hva slags verdier vi kan forvente å få i Arduino når vi bruker analogread();

Når vi nå vet at rekkevidden på flex-sensoren er fra 25 kω (når den er flat) til 45-125 kω (når den bøyes), så kan vi faktisk regne ut hva slags verdier vi kan forvente å få i Arduino når vi bruker analogread(); Litt regning tåler vi...

V inn = 5 volt R 1 V ut flex JORD (GND)

R 1 V inn = 5 volt V ut Hvis R 1 = 20 kω og flex = 25 kω, så får vi at V ut blir 5 volt (25 kω / 45 kω) = 2,77... volt. flex JORD (GND)

R 1 flex V inn = 5 volt V ut Hvis R 1 = 20 kω og flex = 25 kω, så får vi at V ut blir 5 volt (25 kω / 45 kω) = 2,77... volt. Da burde vi måle 1023 (2,77 / 5) = ca. 558 i Arduino. JORD (GND)

R 1 flex V inn = 5 volt V ut Hvis R 1 = 20 kω og flex = 25 kω, så får vi at V ut blir 5 volt (25 kω / 45 kω) = 2,77... volt. Da burde vi måle 1023 (2,77 / 5) = ca. 558 i Arduino. Hvis R 1 = 20 kω og flex = 125 kω, så får vi at V ut blir 5 volt (125 kω / 145 kω) = 4,310344828 volt. JORD (GND)

R 1 flex V inn = 5 volt V ut Hvis R 1 = 20 kω og flex = 25 kω, så får vi at V ut blir 5 volt (25 kω / 45 kω) = 2,77... volt. Da burde vi måle 1023 (2,77 / 5) = ca. 558 i Arduino. Hvis R 1 = 20 kω og flex = 125 kω, så får vi at V ut blir 5 volt (125 kω / 145 kω) = 4,310344828 volt. JORD (GND) Da burde vi måle 1023 (4,31 / 5) = ca. 882 i Arduino.

Regningen viser at vi kan forvente verdier mellom 558 og 882 når vi bruker analogread();

Regningen viser at vi kan forvente verdier mellom 558 og 882 når vi bruker analogread(); Nå må vi sjekke om det stemmer!

Regningen viser at vi kan forvente verdier mellom 558 og 882 når vi bruker analogread(); Nå må vi sjekke om det stemmer! Vi sjekker det med følgende, enkle program.

Regningen viser at vi kan forvente verdier mellom 558 og 882 når vi bruker analogread(); Nå må vi sjekke om det stemmer! Vi sjekker det med følgende, enkle program. void setup() { Serial.begin(9600); } void loop() { Serial.println(analogRead(A0)); }

NOEN TIPS TIL PROGRAMMERINGEN

KALIBRERING

KALIBRERING Hvis vi vet at innleste verdier varierer litt, så kan det være lurt å foreta en kalibrering for hver gang programmet kjøres.

KALIBRERING Hvis vi vet at innleste verdier varierer litt, så kan det være lurt å foreta en kalibrering for hver gang programmet kjøres. Et av eksemplene som følger med Arduino viser dette. http://arduino.cc/en/tutorial/calibration

KALIBRERING Hvis vi vet at innleste verdier varierer litt, så kan det være lurt å foreta en kalibrering for hver gang programmet kjøres. Et av eksemplene som følger med Arduino viser dette. http://arduino.cc/en/tutorial/calibration Merk at hvis vi gjør det slik, så bestemmes rekkevidden i løpet av kalibreringen i begynnelsen.

int sensormin = 1023; int sensormax = 0; while (millis() < 5000) { sensorvalue = analogread(sensorpin); if (sensorvalue > sensormax) { sensormax = sensorvalue; } } if (sensorvalue < sensormin) { sensormin = sensorvalue; } Da kan vi senere bruke følgende. sensorvalue = map(sensorvalue, sensormin, sensormax, 0, 255);

UTJEVNING AV INNLESING

UTJEVNING AV INNLESING Hvis innlesingene av sensorverdier hopper veldig, så kan vi ta gjennomsnittet av de siste innlesingene for å jevne det ut.

UTJEVNING AV INNLESING Hvis innlesingene av sensorverdier hopper veldig, så kan vi ta gjennomsnittet av de siste innlesingene for å jevne det ut. Et av eksemplene som følger med Arduino viser dette. http://arduino.cc/en/tutorial/smoothing

UTJEVNING AV INNLESING Hvis innlesingene av sensorverdier hopper veldig, så kan vi ta gjennomsnittet av de siste innlesingene for å jevne det ut. Et av eksemplene som følger med Arduino viser dette. http://arduino.cc/en/tutorial/smoothing I dette eksemplet ser man også fin bruk av arrayer.

UNNGÅ DELAY!

En uheldig virkning av å bruke delay() er at alt stopper opp en liten stund.

En uheldig virkning av å bruke delay() er at alt stopper opp en liten stund. Hvis du har lyst til å gjøre noe samtidig med noe annet, så funker ikke det.

En uheldig virkning av å bruke delay() er at alt stopper opp en liten stund. Hvis du har lyst til å gjøre noe samtidig med noe annet, så funker ikke det. Og løsningen er ikke å bruke enda et Arduinokort eller enda en datamaskin.

En uheldig virkning av å bruke delay() er at alt stopper opp en liten stund. Hvis du har lyst til å gjøre noe samtidig med noe annet, så funker ikke det. Og løsningen er ikke å bruke enda et Arduinokort eller enda en datamaskin. Det meste kan gjøre med smart bruk av millis().

En uheldig virkning av å bruke delay() er at alt stopper opp en liten stund. Hvis du har lyst til å gjøre noe samtidig med noe annet, så funker ikke det. Og løsningen er ikke å bruke enda et Arduinokort eller enda en datamaskin. Det meste kan gjøre med smart bruk av millis(). Se http://arduino.cc/playground/code/avoiddelay for et greit eksempel med to lys og to knapper.

FYSISK OUTPUT: BEVEGELSE!

Fysisk output kan være mange ting! SERVOMOTORER STEPPERMOTORER SOLENOIDER / RELEER DC-MOTORER

SERVOMOTORER

Slik ser en servomotor ut inni, men det trenger vi egentlig ikke å vite...

Den fungerer ved at den mottar pulserte signaler...

Servomotorer har tre ledninger, for spenning, jord og signal.

Servomotorer har tre ledninger, for spenning, jord og signal. Disse kobles til 5V, GND og en digital pinne.

Servomotorer har tre ledninger, for spenning, jord og signal. Disse kobles til 5V, GND og en digital pinne. Vi inkluderer Servo-biblioteket ved å skrive #include <Servo.h>

Servomotorer har tre ledninger, for spenning, jord og signal. Disse kobles til 5V, GND og en digital pinne. Vi inkluderer Servo-biblioteket ved å skrive #include <Servo.h> Når Servo-biblioteket brukes, så mister pinne 9 og 10 muligheten for analog ut (analogwrite()).

Servomotorer har tre ledninger, for spenning, jord og signal. Disse kobles til 5V, GND og en digital pinne. Vi inkluderer Servo-biblioteket ved å skrive #include <Servo.h> Når Servo-biblioteket brukes, så mister pinne 9 og 10 muligheten for analog ut (analogwrite()). Vi deklarerer at minservo er en Servo ved å skrive Servo minservo;

Hvis signalledningen er koblet til pinne pin, så vil minservo.attach(pin) gjøre at vi kan bruke servoen.

Hvis signalledningen er koblet til pinne pin, så vil minservo.attach(pin) gjøre at vi kan bruke servoen. Det er også mulig å spesifiserere hvilke pulslengder som svarer til 0 og 180 grader ved å bruke følgende syntaks, hvor max og min er pulslengdene i mikrosekunder (default er 544 og 2400). minservo.attach(pin, max, min)

Hvis signalledningen er koblet til pinne pin, så vil minservo.attach(pin) gjøre at vi kan bruke servoen. Det er også mulig å spesifiserere hvilke pulslengder som svarer til 0 og 180 grader ved å bruke følgende syntaks, hvor max og min er pulslengdene i mikrosekunder (default er 544 og 2400). minservo.attach(pin, max, min) Hvis vi så vil sette vinkelen til 90 grader, så kan vi skrive minservo.write(90).

Vi kan altså skrive følgende. #include <Servo.h> Servo minservo; void setup() { minservo.attach(9); minservo.write(90); }

LITT MER OM LYSDIODER

For å bruke lysdioder riktig og på best mulig måte, så trenger vi litt teori.

For å bruke lysdioder riktig og på best mulig måte, så trenger vi litt teori. En lysdiode vil ha et gitt spenningsfall (se dataarket: forward voltage), som er spesifisert for en gitt strøm (se dataarket: forward current) som lysdioden trenger for å funke.

For å bruke lysdioder riktig og på best mulig måte, så trenger vi litt teori. En lysdiode vil ha et gitt spenningsfall (se dataarket: forward voltage), som er spesifisert for en gitt strøm (se dataarket: forward current) som lysdioden trenger for å funke. Hvis det gitte spenningsfallet er lik spenningen i kretsen, så er det bare å koble lysdioden på

For å bruke lysdioder riktig og på best mulig måte, så trenger vi litt teori. En lysdiode vil ha et gitt spenningsfall (se dataarket: forward voltage), som er spesifisert for en gitt strøm (se dataarket: forward current) som lysdioden trenger for å funke. Hvis det gitte spenningsfallet er lik spenningen i kretsen, så er det bare å koble lysdioden på Men, hvis ikke, så må regne ut riktig motstand!

For å bruke lysdioder riktig og på best mulig måte, så trenger vi litt teori. En lysdiode vil ha et gitt spenningsfall (se dataarket: forward voltage), som er spesifisert for en gitt strøm (se dataarket: forward current) som lysdioden trenger for å funke. Hvis det gitte spenningsfallet er lik spenningen i kretsen, så er det bare å koble lysdioden på Men, hvis ikke, så må regne ut riktig motstand! For å gjøre det, må vi se på dataarket.

Her står det at 20 ma er maksimal anbefalt strøm. Her er spenningsfallet angitt.

Hvis strømmen gjennom lysdioden skal være 20 ma, så må vi begrense strømmen, og det bruker vi en motstand til.

Hvis strømmen gjennom lysdioden skal være 20 ma, så må vi begrense strømmen, og det bruker vi en motstand til. Vi vet også at spenningen over lysdioden skal være ca. 2 V.

Hvis strømmen gjennom lysdioden skal være 20 ma, så må vi begrense strømmen, og det bruker vi en motstand til. Vi vet også at spenningen over lysdioden skal være ca. 2 V. Det betyr at spenningen over motstanden må være 3 V.

Hvis strømmen gjennom lysdioden skal være 20 ma, så må vi begrense strømmen, og det bruker vi en motstand til. Vi vet også at spenningen over lysdioden skal være ca. 2 V. Det betyr at spenningen over motstanden må være 3 V. Vi kan bruke Ohms lov til å regne ut verdien til motstanden: motstand = spenning / strøm = 3 V / 0,02 A = 150 Ω.

Hvis strømmen gjennom lysdioden skal være 20 ma, så må vi begrense strømmen, og det bruker vi en motstand til. Vi vet også at spenningen over lysdioden skal være ca. 2 V. Det betyr at spenningen over motstanden må være 3 V. Vi kan bruke Ohms lov til å regne ut verdien til motstanden: motstand = spenning / strøm = 3 V / 0,02 A = 150 Ω. Som oftest er det lurt å runde motstandsverdiene opp.

RESSURSER / NETTSIDER

http://arduino.cc/

http://arduino.cc/en/tutorial/homepage

http://arduino.cc/en/tutorial/homepage

http://arduino.cc/en/reference/homepage

http://arduino.cc/en/reference/libraries

http://arduino.cc/en/hacking/homepage

http://arduino.cc/en/tutorial/links

http://arduino.cc/playground/

what is an arduino? microchip photocell led by Jody Culkin electronics prototyping platform. what does that mean? breadboard An Arduino contains a microchip, which is a very small computer that you can program. You can attach sensors to it that can measure conditions (like how much light there is in the room). It can control how other objects react to those conditions (room gets dark, led turns on). resources that can be used, redistributed or rewritten free of charge. often software or hardware. ON OFF a mouse is a common input device for a desktop computer, a monitor is a common output device. technology which makes use of the controlled motion of electrons through different media. an original Form that can serve as a basis or standard for other things. hardware architecture with software framework on which other software Can run. Or it can respond to something as simple as the press of a switch. Microcontrollers use inputs and outputs Like any computer. Inputs capture information From the user or the environment while Outputs do something with the information that has been captured. http://arduino.cc/playground/main/arduinocomic

http://www.ladyada.net/learn/arduino/index.html

http://www.kickstarter.com/

http://www.arduinobooks.com/

http://diydrones.com/

http://bildr.org/

http://blog.makezine.com/

http://makeprojects.com/

http://www.makershed.com/

http://www.instructables.com/

http://hackerspaces.org/wiki/hackerspaces

http://hackerspaces.org/wiki/norway

http://letsmakerobots.com/

http://tangible.media.mit.edu/

http://thefuntheory.com/

ÅPEN SONE FOR EKSPERIMENTELL INFORMATIKK Vårt eget studentlaboratorium og hackerspace og sted for å eksperimentere med faget! [På forelesningen sa jeg mye mer!]

THE GATHERING 2012 Informatikkstudentene og Åpen sone for eksperimentell informatikk skal til The Gathering, 4. 8. april, 2012 og representere Ifi! Vil du være med? Vil du vise frem et spennende prosjekt? Ta kontakt med meg for nærmere informasjon! [På forelesningen sa jeg mye mer!]

LYKKE TIL MED PROSJEKTARBEIDET

[Tenk over følgende spørsmål!] HVA VILLE DU LAGE OM DU KUNNE LAGE HVA SOM HELST?

[Vi så på flere videoer og tenke litt rundt hvor vi kan PROGRAMMERE TING!]

TING OG TANG VI IKKE RAKK :-(

TING OG TANG VI IKKE RAKK :-( Processing

TING OG TANG VI IKKE RAKK :-( Processing Shiftregistre og andre integrerte kretser

TING OG TANG VI IKKE RAKK :-( Processing Shiftregistre og andre integrerte kretser Interrupt-programmering

TING OG TANG VI IKKE RAKK :-( Processing Shiftregistre og andre integrerte kretser Interrupt-programmering Strenger

TING OG TANG VI IKKE RAKK :-( Processing Shiftregistre og andre integrerte kretser Interrupt-programmering Strenger Tranistorer og ekstra strømforsyning

TING OG TANG VI IKKE RAKK :-( Processing Shiftregistre og andre integrerte kretser Interrupt-programmering Strenger Tranistorer og ekstra strømforsyning... og mye, mye mer!