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!