Arduino opgaver Teknologi

Størrelse: px
Starte visningen fra side:

Download "Arduino opgaver Teknologi"

Transkript

1 : Hop til opgave: Blink, Blinkende lysdioder, Input fra knap, RGB-Kit, LED-Cube, LCD-Display, Debug-vindue, LED styret af Potentiometer, Mål temperatur, Ur-Program, Termoprinter, RF-ID, Servomotor, Timer-interrupt, Keypad, Kopier kode til Word med farve, I dette dokument er der inspiration til en række programmerings-opgaver til Arduino. Opgaverne bliver i nogen grad sværere og sværere. Opgaverne kan laves ved at opbygge kredsløb på et fumlebrædt. Eller ved at bruge en af de Kit, jeg har lavet. Kittene har en række komponenter, og gør det meget hurtigt at opbygge og teste forskellige forsøgsopstillinger. På Kittene er der et 4x20 karakter LCD-display, 8 lysdioder, et Keypad, et potentiometer, nogle trykknapper, og to lysdioder, koblet modsat hinanden. På version 2 er der kun 3 trykknapper, men til gengæld en LM35 temperatur-transducer og to lydgivere. Den ene skal blot have 5 Volt hvorefter den giver lyd på ca. 2 khz. Den anden skal have den frekvens, der skal høres. Start med de første opgaver, - og gå så fremad!! LCD, LED, Keypad, Pushbutton mm. Kit: For at kunne forbinde Kittene til Arduinoen, er der her gengivet kopier af deres printudlæg. Bemærk, at der er to versioner. De kan fx kendes på antal trykknapper i højre side. Side 1 af 48

2 1: 2: 2 har kun 3 trykknapper, Side 2 af 48

3 På 2 er der tilføjet 2 Buzzere under LCD-en. Den ene giver lyd på ca. 2 KHz blot der tilsluttes 5 Volt. Den anden skal have tilført en frekvens svarende til den frekvens, man vil høre. Brug evt. mit Arduino-kompendium til at lave opgaverne eller søg på nettet. Der findes der et hav af eksempler. Første øvelse: Hent sketchen Blink. Den blinker en lille lysdiode på bordet koblet til pin 13. Lav lidt om på blink-intervallet. Omskriv programmet, så der kommer 2 blink, efterfulgt af en pause. Få lysdioden til at blinke morse-tegnene FS som fyret på Kalk-grund. Blinkende Lysdioder Brug et kit, eller monter 8 LED på et fumlebrædt Husk også at forbinde 0 Volt mærket Gnd for Ground. Udvid Blinkprogrammet til at få alle 8 til at lyse i række, fx med 0,1 sekund imellem hver Brug fx pin 13 og ned til pin 6. Husk at definere alle pins som outputs!! Prøv at lave om på blinkfrekvensen. Side 3 af 48

4 Input fra knap Lav et program, der får en lysdiode til at lyse, hvis der er trykket på en knap: Her er der behov for, at programmet kan læse en kontakt. Her et eksempel på forbindelser. Bemærk, at der er trykknapper på mine kits. Kittet skal have 5 Volt, 0 Volt, og en forbindelse fra en pushbutton. Når der trykkes på knappen, bliver signalet højt. Forbindelser til Kittet laves sådan!! Nu skal der bruges en funktion der kan læse en pin. Side 4 af 48

5 Eksempler: // definer input pin int buttonpin=2; // Før Setup!! pinmode(buttonpin, INPUT); // I Setup!! // i setup eller i Loop: if (digitalread(buttonpin) == HIGH) // do something Her er der også brugt en if struktur!! Et andet eksempel: void loop() val = digitalread(inpin); digitalwrite(ledpin, val); // read the input pin // sets the LED to the button's value if (val == 1) // Do something Find fx koden her: void loop() while( digitalread(5) == 1 ) // while the button is pressed Side 5 af 48

6 //blink digitalwrite(3,high); delay(1000); digitalwrite(3,low); delay(1000); Eks: Brug af If Else Eksempel: // If - Else: Eksempel: if (x > 120) digitalwrite(ledpin1, HIGH); digitalwrite(ledpin2, HIGH); // If else if (x < 500) // action A Else // Else-delen kan udelades // action B Og så hele koden: /* Basic Digital Read, Kodeeksempel: * * * turns on and off a light emitting diode(led) connected to digital * pin 13, when pressing a pushbutton attached to pin 7. It illustrates the * concept of Active-Low, which consists in connecting buttons using a * 1K to 10K pull-up resistor. * * Created 1 December 2005 */ int ledpin = 13; // choose the pin for the LED Side 6 af 48

7 int inpin = 7; // choose the input pin (for a pushbutton) int val = 5; // variable for reading the pin status. Start value = 5 void setup() pinmode(ledpin, OUTPUT); // declare LED as output pinmode(inpin, INPUT); // declare pushbutton as input void loop() val = digitalread(inpin); // read input value if (val == HIGH) // check if the input is HIGH (button released) digitalwrite(ledpin, LOW); // turn LED OFF else digitalwrite(ledpin, HIGH); // turn LED ON // Bemærk: if ( val == HIGH ): hvis 1 lighedstegn bruges, får val værdien HIGH, - eller 1, Men bruges 2 lighedstegn, udføres en test, hvor det mellem kun udføres hvis udfaldet er sandt Afprøv ovenstående program.!! Omskriv nu programmet, så et kort tryk på en knap får en lysdiode til at lyse i 5 sekunder. Variabel Blinkfrekvens Nu skal der laves et program, hvor man ved hjælp af 2 knapper kan lave variabel pauselængde mellem blink i en lysdiode. Ideen er nu, at den ene knap skal kunne skrue op, og den anden knap ned for blink-frekvensen på en lysdiode. Monter 2 knapper på hver sin inputpin. Fx på pin 4 og 3. Husk formodstande for Lysdioder hvis de monteres på fumlebrædt. Husk også at definere dem som input. Strategi: Lad pauselængden være defineret i en variabel Variabelnavnet kan så bruges i programmet i stedet for en fast værdi for en pause. Side 7 af 48

8 /* Kodeeksempel: Programbeskrivelse: */ // Def af variable til at holde et pinnummer. const byte uppin = 4; // the number of the pushbutton pin const byte downpin = 3; // // Vi skal også bruge en variabel til at indeholde en værdi, der skal bruges i delay-funktionen! int delayvalue = 100; byte buttonstate = 0; // Startværdien er 100. en Integer kan højest være // // skal bruges til at læse værdien af en knap, om den er lav eller høj. void setup() pinmode(uppin, INPUT); pinmode(uppin, INPUT); // initialize the button pin as an input: // initialize the button pin as an input: // Og alle LED-Outputpins skal jo selvfølgelig være output. void loop() digitalwrite(13, HIGH ); delay(delayvalue); digitalwrite(13, LOW ); delay(delayvalue); buttonstate = (digitalread(uppin)); if (buttonstate == HIGH) delayvalue++; // adder 1 til værdien ( det same som delayvalue = delayvalue + 1 ) buttonstate = (digitalread(downpin)); if (buttonstate == HIGH) delayvalue--; // træk 1 fra værdien Side 8 af 48

9 Undersøg programmet og test det. RGB-Kit: Brug en RGB-kit. De kan bruges til eksperimenter med Røde, Grønne og Blå lysdioder. J Lysdiode-stripséne skal forsynes med 12 Volt. Brug fx en netadapter. Arduinoen skal styre indgangene på kittet. Et højt eller 1 på input R, G eller B tænder de respektive lysdioder i strippen, Røde, Grønne eller Blå. Husk også at forbinde Gnd til Arduino-boardet. Lav først et program, der tænder dioderne på skift. Herefter eksperimenteres med at tænde kombinationer!! Pulsbreddemodulering: Hvis man tænder og slukker - dvs. pulser en lysdiode med en høj nok frekvens, kan øjet ikke nå at registrere, at den blinker. Men selvfølgelig vil lysmængden blive begrænset, hvis dioden kun er tændt halvdelen af tiden. Begrebet kaldes Duty Cycle og beskriver i hvor mange procent af en periodetid, et signal er høj. Det kan bruges til at fade lyset i en lysdiode, og kaldes så for PulsBreddeModulation. PWM. Side 9 af 48

10 Det illustreres her: Bare det går hurtigt nok, kan det ikke ses på en LED. Den grønne graf illustrerer fint lysstyrken i en lysdiode, som den opleves ved pulsbreddemodulation. I Arduino verdenen er denne mulighed for at bruge PWM indbygget i boardet. Men kun på de output, der er mærket med ~. PWM-outputtene pulses automatisk med ca. 400 Hz, og dutycyclen styres ved at sende en værdi mellem 0 og 255 til en pin. Nu skal man i stedet for digitalwrite bruge analogwrite. analogwrite(pin, value); // Value kan have værdien fra 0 til 255. Denne funktion virker på et Uno-board på pin 3, 5, 6, 9, 10 og 11. Hvis R, G & B på kittet forbindes direkte til PWM-outputtene, kan man nu dæmpe lyset, eller fade dem. Side 10 af 48

11 Justerbar farve med trykknapper: Først skal der laves et program, hvor man på 3 knapper kan justere dutycyclen i de tre dioder Automatisk Farveskift: Man kan selvfølgelig bare skrive et program, der sender nogle værdier til 3 PWM-pins analogwrite(pwm_pin1, value1); // Value kan have værdien fra 0 til 255. analogwrite(pwm_pin2, value2); // Value kan have værdien fra 0 til 255. analogwrite(pwm_pin3, value3); // Value kan have værdien fra 0 til 255. Men det er ikke så spændende. I stedet vil vi prøve at lade et program tælle en variabel op fra 0 til 255, og imens sende værdierne til lysdioderne. Ideer: Brug af For-loop: En For løkke skal tolkes på følgende måde: X initialiseres til værdien 0, og koden mellem og udføres første gang. Herefter testes om x er < 100. Hvis det er tilfældet, incrementes, dvs. øges x med 1, og koden mellem og gentages. x++ kan også skrives: x = x+1. Værdien af variablen x kan så bruges i koden mellem og. Side 11 af 48

12 Her en anden forklaring!! Her et eksempel på en for-loop, der tænder en række af lysdioder. Et eksempel på, hvordan man kan bruge en for-loop til at definere pins som outputs, - og tænde dem i en løkke-struktur!! /* For Loop Iteration Demonstrates the use of a for() loop. Lights multiple LEDs in sequence, then in reverse. The circuit: * LEDs from pins 2 through 7 to ground created 2006 by David A. Mellis modified 30 Aug 2011 by Tom Igoe This example code is in the public domain. */ int timer = 100; // The higher the number, the slower the timing. void setup() // use a for loop to initialize each pin as an output: for (int thispin = 2; thispin < 8; thispin++) pinmode(thispin, OUTPUT); Side 12 af 48

13 void loop() // loop from the lowest pin to the highest: for (int thispin = 2; thispin < 8; thispin++) // turn the pin on: digitalwrite(thispin, HIGH); delay(timer); // turn the pin off: digitalwrite(thispin, LOW); // loop from the highest pin to the lowest: for (int thispin = 7; thispin >= 2; thispin--) // turn the pin on: digitalwrite(thispin, HIGH); delay(timer); // turn the pin off: digitalwrite(thispin, LOW); Koden kunne se således ud: // Fade an LED using a PWM pin int PWMpin = 10; // LED-kit or LED in series with 470 ohm resistor on pin 10 void setup() // no setup needed void loop() for (int i=0; i <= 255; i++) analogwrite(pwmpin, i); delay(10); // Fadning af lysdioder. Brug af analogwrite, // Værdi fra 0 til max 255!!! Side 13 af 48

14 // the setup function runs once when you press reset or power the board int PWMpin = 11; // choose the PWMpin for the LED void setup() pinmode(ledpin_1, OUTPUT); // declare LED as output void loop() int x = 1; for (int i = 0; i > -1; i = i + x) analogwrite(pwmpin, i); if (i == 255) x = -1; delay(10); // switch direction at peak Lav nu flere for loops, så alle værdier på både Rød, Grøn og Blå LED vises!!! Tip: Brug Nested For-loops for (int x = 0; x < 8; x++) for (int y = 0; y < 8; y++) // Do something; delay(100); LED_Cube Noget kompliceret program!! Diagrammet for LED-Cuberne ser således ud!! Side 14 af 48

15 R1 560 Søjle_1 Søjle_2 R2 560 D3 D2 D1 LED Søjle_3 R3 560 D6 D5 D4 LED 3 6 Søjle 9 Søjle_4 Søjle_5 Søjle_6 R4 560 R5 560 R6 560 D9 D8 D7 LED Søjle_7 R Søjle_8 Søjle_9 R8 560 R9 560 Q3 Q2 Q1 BC Ø M N gnd R12 2.7k R11 2.7k R10 2.7k 0 Dæk Øv erst Midt Nederst Nul Se fx: LCD. På mine kits er der lavet de forbindelser, der skal laves for at få et LCD display til at køre. Men på skitsen her vises hvordan forbindelserne skal laves til et LCDmodul. Det viste potentiometer bruges til at justere kontrasten på teksten på skærmen. Det skal kun bruges, hvis man selv opbygger et system på print. Med Potmeteret kan man justere spændingen på pin 3 fra 0 til 5 Volt. På kittene er der lavet kontrastjustering. Backlight er på LCD en lagt på pin 15 og 16. Det skal kun bruges, hvis man skal kunne se displayet i mørke. På kittene er der lavet mulighed for at tænde og slukke Backlight. ( På den ene LCD virker Backlight ikke ) Side 15 af 48

16 Muligvis er BackLight plus og minus ombyttet. Formodstanden for Backlight er vist for stor. Prøv med 47 ohm. Her er der et andet diagram. Det er ikke nødvendigt med backlight i dagslys! Pinnumre på LCD er fra venstre pin 1 til og 16 er til backlight. Husk formodstand, fx 47 ohm v. 5 Volt. Ang. egendefinerede karakterer på LCD: Se fx Der er vist et include-bibliotek til danske karakterer i Arduino-IDE-en. Ellers se min hjemmeside: Åben eksemplet: Fil > Eksempler > Liquid Christal > Hello World Her et uddrag: // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() // set up the LCD's number of columns and rows: lcd.begin(20, 4); // Print a message to the LCD. lcd.print("hello, world!"); Side 16 af 48

17 Læg mærke til, at der skal ændres i linjen hvor der defineres, hvor stor LCD, der er koblet på. Vore LCD er på 4 linjer a 20 karakterer. lcd.begin(20, 4); Bemærk også, at der default er regnet med at anvende pin 12, 11 osv. LiquidCrystal lcd(12, 11, 5, 4, 3, 2); De skal forbindes til kittets stik, men bemærk de to versioner: 1 2 RS skal til pin Arduino pin 12, Enable til pin 11, osv. RS skal til pin Arduino pin 12, Enable til pin 11, osv. Åben koden HelloWorld i eksempler: Find eksemplet her: Koden vises nedenfor: Arbejd nu lidt med koden, så der skrives på alle linjer, - og evt. efter en pause skrives 4 nye linjer tekst. Side 17 af 48

18 Her følger hele koden: // include the library code: #include <LiquidCrystal.h> // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() // set up the LCD's number of columns and rows: lcd.begin(20, 4); // Print a message to the LCD. lcd.print("hello, world!"); void loop() // set the cursor to column 0, line 1 // (note: line 0 to 3, and column 0 to 19 lcd.setcursor(0, 1); // print the number of seconds since reset: lcd.print(millis() / 1000); Flere kommandoer: // Flere kommandoer: lcd.clear(); // Clearer alle 4 linjer Se endvidere: 10/ , redigeret hertil!! Spænding fra Potentiometer vist på LCD-dispalay /* Analog pins: Lavet af Marcus: 1.z Sender spændingen målt på et Potentiometer til LCD-displayet */ int sensorpin = A0; float sensorvalue = 0.0; #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() Side 18 af 48

19 lcd.begin(20, 4); void loop() sensorvalue = analogread(sensorpin); sensorvalue = sensorvalue * 500; sensorvalue = sensorvalue / 1024; lcd.setcursor(2, 1); lcd.print("temp er "); lcd.setcursor(11, 1); lcd.print(sensorvalue); lcd.setcursor(17, 1); lcd.print("c"); delay(500); Brug debugvindue Arduionoen er jo koblet til PC-en via et USB-kabel. Arduinoen programmeres via kablet, men ud over dette, er der mulighed for at sende data både fra Arduinoen til PC-en i et program, og også fra PC-en ( Keyboardet ) til programmet, der kører på uc-en. I Arduino-IDE-en er der mulighed for at åbne et vindue, der viser de data, der sendes via USB-en til PC-en. Vinduet kaldes et Debug-vindue, da det er meget let at afluse dvs. fejlfinde et program ved at få skrevet værdier fra uc-programmet i debugvinduet. Side 19 af 48

20 Til højre er vist et sketcheksempel, og til venstre er debug-vinduet vist Bemærk at man ikke kan bruge pin 0 og 1 og samtidig bruge den serielle debug-monitor. For at starte kommunikationen fra Arduinoen skal der i setup-program-sektionen indføjes en ordre om at opstarte seriel transmission til PC-en. void setup() Serial.begin(9600); // start en seriel kommunikations-mulighed Eksempel: int x = 0; void setup() Serial.begin(9600); Serial.println("Hello world"); delay(2000);// Give reader a chance to see the output. void loop() Serial.println(x); // Send værdien af x delay(500); x=x+1; // Kan også skrives: x++; if (x>5) x=0;; Side 20 af 48

21 Data fra Debug Vinduet på PC-en til Arduino Ligesom man kan sende data fra Arduino til PC-en, kan man sende data modsatte vej. Det man vil sende, indskrives i øverste rude i Debugvinduet, og sendes serielt via USB-kablet. Her er et eksempler på, hvordan det kan bruges: Eksempel: int inbyte = 0; int outputpin = 13; // incoming serial byte void setup() Serial.begin(9600); // start serial port at 9600 bps: pinmode(outputpin, OUTPUT); void loop() if (Serial.available() > 0) inbyte = Serial.read(); // get incoming byte: if (inbyte == 'E') digitalwrite(outputpin, HIGH); else if (inbyte == 'F') digitalwrite(outputpin, LOW); else Side 21 af 48

22 Serial.print('H'); delay(1000); Serial.print('L'); delay(1000); For mere: Se speciel kompendium: Se fx Youtube: Lysdiode-styrke styret af potentiometer a) Monter et potentiometer til en analog indgang. Lad den læste værdi afgøre hvor hurtigt en lysdiode blinker. Obs: De værdier, der læses fra en analog indgang er fra 0 til 1023, dvs. der læses 10 bit. Men de værdier, der kan skrives til en PWM-udgang er kun på 8 bit. b) De læste værdier skal skrives på PC-skærmen i debug-vinduet. Brug Serial.Print. c) Hvis den læste spænding på potmeteren er lig 2,5 Volt, skal det markeres på PC-skærmen. Hvis > 4,5 Volt, så blink en anden LED 5 gange. ( Brug en For-løkke i en subrutine ) Hvis < 0,5 Volt, så skal en tredje LED lyse. Her er eksempler på, hvad der kan bruges af kode: const int analogindgang = A0; //Definer indgangnummer int analogvaerdi = 0; // definer en variable, giv den værdien 0 analogvaerdi = analogread(analogindgang); // læs værdi til variabel analogvaerdi = analogvaerdi / 4 // omregn til max 8 bit. analogvaerdi kan nu bruges i et program til fx at bestemme blinkfrekvens eller fade-value. Side 22 af 48

23 Mål analog spænding / temperatur Microcontrolleren ( Atmega328P ) der bruges på Arduinoboardet, har indbygget mulighed for at læse analoge værdier på nogle inputs, A0 til A5 Ordren til at indlæse en værdi er Variabel = analogread(analogindgang); Her er vist, hvordan man kan forbinde et potentiometer til indgang A2. Den spænding, der kan læses, er fra 0 til 5 Volt. Processoren kan jo ikke forstå analoge spændinger, så det, der sker, er, at den læste analoge værdi omsættes til et tal. Her er vist et princip. I Arduino ucontrolleren foregår det på den måde, at en analog spænding på 0 Volt omregnes til et tal med værdien 0. 5 Volt omsættes til og 2,5 Volt bliver så ca Altså: 0 til 5 Volt læses ind i en værdi som får værdien 0 til 1023 Skal man så udskrive den målte spænding på en skærm, er det nødvendigt at lave lidt beregning. Side 23 af 48

24 For det første er det vigtigt, at man vælger en variabel-type, der kan indeholde kommatal. Fx Float. En omregning kunne ske som følgende: int sensorvalue = analogread(a0); // Convert the analog reading (which goes from ) // to a voltage (0-5V): float voltage = sensorvalue * (5.0 / ); Serial.println(voltage); // print out the value you read: Eksempel: /* Program til at konvertere analog værdi og udskrive tilsvarende spænding. */ int sensorpin = A0; // select the input pin for the potentiometer float sensorvalue = 0.0; // variable to store the value coming from the sensor void setup() Serial.begin(9600); Serial.println("Test af kommunikation til debug Vindue"); void loop() sensorvalue = analogread(sensorpin); sensorvalue = sensorvalue * 5; sensorvalue = sensorvalue / 1023; Serial.println(sensorValue); // Send værdien af x delay(100); Et eksempel mere: /* Arduino Voltmeter */ // Konstanter const int analogindgang = A0; const unsigned int dtime = 500; const float gain = 204.6; Side 24 af 48

25 // Variabler int analogvaerdi = 0; float volt = 0.0; void setup() Serial.begin(9600); void loop() analogvaerdi = analogread(analogindgang); Serial.print("Vaerdi fra ADC = "); Serial.print(analogVaerdi); // Indsæt din beregning/konvertering her! volt = float(analogvaerdi); volt = volt / gain; Serial.print("\t Spaending = " ); Serial.println(volt); delay(dtime); Undersøg IC-en LM35. Lav programmet om, så der måles på signalet fra temperatur-sensoren LM35. Præsenter temperaturen i Debug-vinduet og eller på LCD Ps: Serial.println(volt, 2); Skriver 2 decimaler, hvis tallet er et kommatal. Ur-program Test følgende program! /* Ur-program Dette program anvender et delay til at holde øje med tiden. Men det tager jo også noget tid at udføre ordrer, så delayet skal jo ikke være 1000 ms. */ // Def af Konstanter const byte ledpin = 13; const unsigned int tdelay = 1000; // Konstant i ROM! // Def af Variabler byte sekundtaeller = 55; byte minuttaeller = 59; byte timetaeller = 23; // Startværdier, for test byte asekund = 59; // Alarm tidspunkt byte aminut = 59; byte atime = 23; void setup() Serial.begin(9600); Side 25 af 48

26 pinmode(ledpin, OUTPUT); digitalwrite(ledpin, LOW); void loop() printtid(); // Indsæt din kode her! if(sekundtaeller==asekund && minuttaeller==aminut && timetaeller==atime) digitalwrite(ledpin, HIGH); Serial.println(" ALARM! "); else digitalwrite(ledpin, LOW); sekundtaeller++; if (sekundtaeller >= 60) sekundtaeller = 0; minuttaeller++; if (minuttaeller >= 60) minuttaeller = 0; timetaeller++; if (timetaeller >= 24) timetaeller = 0; delay(tdelay); //##### SUBs ##### void printtid() Serial.print( "Tid: "); if(timetaeller < 10) Serial.print("0"); if(timetaeller < 1) Serial.print("0"); else Serial.print(timeTaeller, 1); // 1 Serial.print(":"); if(minuttaeller < 10) Serial.print("0"); if(minuttaeller < 1) Serial.print("0"); else Serial.print(minutTaeller, 1); betyder 1 decimal. Side 26 af 48

27 Serial.print(":"); if(sekundtaeller < 10) Serial.print("0"); if(sekundtaeller < 1) Serial.println("0"); else Serial.println( sekundtaeller, 1); // sekundtaeller, 1 /* Syntax Serial.print(val) Serial.print(val, format) */ // ##### Ikke flere SUBs ##### Keypad Se fx Cookbook ca. side 163 Kobl et Keypad til Arduinoen, - og skriv fx i debugvinduet på PC-en eller en LCD, hvilken tast, der trykkes. Hvordan virker et Keypad? Hvis et keypad ikke er konstrueret som et matrix, ville der til et 4x4 keypad skulle bruges en plus, og 16 ledninger til Arduinoen. Dette ville bruge alle pins, - og derfor bruges udelukkende matrixtyper. Et keypad på apparater kan typisk være konstrueret som vis på disse billeder. Når tasten trykkes, presses et ledende gummimateriale ned på et print og kortslutter to ledninger. Side 27 af 48

28 Her er en kontakt vist i skitse Her et keypad med matrix forbindelser. Vore keypads er fra Farnell, Varenummer ( 12 keys ) eller ( 16 keys ). Farnell Varenummer: Kolonner og rækker nummereres sådan: Venstre kolonne er kolonne, K1. - Øverste række er R1. Pins på 4x4 Keypad set forfra er fra venstre: K1, K2, K3, K4, R1, R2, R3, R4 ( Obs: set fra bagsiden! ) Side 28 af 48

29 Når der trykkes på en tast, vil der opstå en kortslutning mellem en ledning fra kolonnerne og fra rækkerne. Nu er det bare processorens opgave at aflæse hvilken det er, - men det er ikke så let. Det kan foregå efter følgende procedure: Processoren skal fx sætte HIGH på alle rækker, og definere alle søjler som inputs. Derefter skal der tjekkes om alle søjler er lave. Hvis, er der ikke trykket på en tast. Trykkes der en tast vil en af søjlerne blive høje. Men man kan jo ikke vide hvilken knap i søjlen det er. Det skal nu tjekkes.. Det kan ske ved kun at gøre én række høj af gangen, og for hver gang tjekke søjlen. På den måde kan man finde frem til den rigtige knap, der er trykket. På alle pins er der på kittene monteret en 10Kohm pulldown modstand. Test: Uden brug af bibliotek: Lineær program: /*Program demonstrating 4x4 Numeric Keypad interfacing with Arduino UNO Program Written by: Amit Biswal. Se kilde: Modificeret af Valle Thorø, d. til vore testkits Pins på 4x4 Keypad set forfra er fra venstre: C1, C2, C3, C4, R1, R2, R3, R4 Husk at der også skal forbindes et Gnd til kittet fordi alle 8 keypads-pins har Pull Down modstande. Side 29 af 48

30 Bemærk også, at programmet godt kan nå at gennemløbe flere omgange ved 1 tastetryk og at programmet godt lige kan have passeret test af den knap man trykker, hvorfor der vil opleves et delay. */ // Def af pins. Bemærk, at de analoge input pins er brugt!! int r1=a5; // Række 1 Øverste række??? int r2=a4; int r3=a3; // R = Row int r4=a2; int c1=a1; // Søjle 1 Venstre søjle??? int c2=a0; // c = Colmn int c3=10; int c4=11; void setup() Serial.begin(9600); pinmode(r1,output); pinmode(r2,output); pinmode(r3,output); pinmode(r4,output); pinmode(c1,input); pinmode(c2,input); pinmode(c3,input); pinmode(c4,input); // For test på debugskærm // Definer rækker som output // Definer søjler som input. void loop() int val; //setting the columns as high initially // digitalwrite(c1,high); // digitalwrite(c2,high); // digitalwrite(c3,high); // digitalwrite(c4,high); //checking everything one by one //case 1: row1 =1 while other col is 0 digitalwrite(r1,high); digitalwrite(r2,low); digitalwrite(r3,low); digitalwrite(r4,low); //checking each column for row1 one by one if(digitalread(c1)==1) // Tjek for høj Serial.println("key 1 pressed"); else if(digitalread(c2)==1) Serial.println("Key 2 pressed"); else if(digitalread(c3)==1) Side 30 af 48

31 Serial.println("Key 3 pressed"); else if(digitalread(c4)==1) Serial.println("Key F pressed"); //case 2: row2 =1 while other col is 0 digitalwrite(r1,low); digitalwrite(r2,high); digitalwrite(r3,low); digitalwrite(r4,low); //checking each column for row2 one by one if(digitalread(c1)==1) Serial.println("key 4 pressed"); else if(digitalread(c2)==1) Serial.println("Key 5 pressed"); else if(digitalread(c3)==1) Serial.println("Key 6 pressed"); else if(digitalread(c4)==1) Serial.println("Key E pressed"); //case 3: row3 =1 while other crow is 0 digitalwrite(r1,low); digitalwrite(r2,low); digitalwrite(r3,high); digitalwrite(r4,low); //checking each column for row3 one by one if(digitalread(c1)==1) Serial.println("key 7 pressed"); else if(digitalread(c2)==1) Serial.println("Key 8 pressed"); else if(digitalread(c3)==1) Serial.println("Key 9 pressed"); else if(digitalread(c4)==1) Serial.println("Key D pressed"); //case 4: row4 = 1 while other row is 0 digitalwrite(r1,low); digitalwrite(r2,low); Side 31 af 48

32 digitalwrite(r3,low); digitalwrite(r4,high); //checking each column for row4 one by one if(digitalread(c1)==1) Serial.println("key A pressed"); else if(digitalread(c2)==1) Serial.println("Key 0 pressed"); else if(digitalread(c3)==1) Serial.println("Key B pressed"); else if(digitalread(c4)==1) Serial.println("Key C pressed"); //giving delay between keypress delay(200); Her et program, hvor der er brugt løkker, - og selve test af keypad sker ved kald til en subrutine /* Keypad sketch prints the key pressed on a keypad to the serial port Modificeret d. 3/ by Valle Til Keypads med Pull Down-modstande. Pins: set forfra, fra venstre: Kolonne / Søjle K0, K1, K2, (K3), R0, R1, R2, R3 Programmet venter til en key er sluppet før subrutinen vender tilbage med keyværdien. Programmet testet - og virker d. 2/ */ const int numrows = 4; // number of rows in the keypad const int numcols = 3; // number of columns const int debouncetime = 20; // number of milliseconds for switch to be stable // keymap defines the character returned when the corresponding key is pressed Side 32 af 48

33 const char keymap[numrows][numcols] = '1', '2', '3', '4', '5', '6', '7', '8', '9', '*', '0', '#' ; // this array determines the pins used for rows and columns const int rowpins[numrows] = 2, 3, 4, 5 ; // Rows 0 through 3 const int colpins[numcols] = 6, 7, 8 ; // Columns 0 through 2 void setup() Serial.begin(9600); for (int row = 0; row < numrows; row++) pinmode(rowpins[row], INPUT); // Set row pins as input // digitalwrite(rowpins[row],high); // turn on Pull-ups for (int column = 0; column < numcols; column++) pinmode(colpins[column], OUTPUT); // Column pins as outputs digitalwrite(colpins[column], LOW); // Make all columns inactive void loop() char key = getkey(); if ( key!= 0) // if the character is not 0 then it's a valid key press Serial.print("Got key "); Serial.println(key); // returns with the key pressed, or 0 if no key is pressed char getkey() char key = 0; // 0 indicates no key pressed for (int column = 0; column < numcols; column++) digitalwrite(colpins[column], HIGH); // Activate the current column. for (int row = 0; row < numrows; row++) // Scan all rows for a key press. if (digitalread(rowpins[row]) == HIGH) // Is a key pressed? delay(debouncetime); // debounce while (digitalread(rowpins[row]) == HIGH) ; // wait for key to be released key = keymap[row][column]; // Remember which key was pressed. digitalwrite(colpins[column], LOW); // De-activate the current column. Side 33 af 48

34 return key; // returns the key pressed or 0 if none Termoprinter: Lav et program, der fx når der trykkes på en knap sender en tekst til termoprinteren. Baudrate = Protokol: ID = 8Ah, dernæst sendes tekst som ASCII, og der afsluttes med CR, Carriage Return, eller End of String. = 0Dh. /* Programeksempel til at skrive på termoprinteren The circuit: * RX is digital pin 10 (connect to TX of other device) * TX is digital pin 11 (connect to RX of other device) */ #include <SoftwareSerial.h> SoftwareSerial myserial(10, 11); // RX, TX ( myserial er blot et navn, der kan sagtens // laves flere virtuelle UARTS, ex: // SoftwareSerial portone(7,8); // SoftwareSerial porttwo(5,6); byte rx = 10; // byte tx = 11; void setup() // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) ; // wait for serial port to connect. Needed for Leonardo only // pinmode(rx,input); pinmode(tx,output); digitalwrite(tx,high); delay(500); Serial.println("Hej!"); // i Debug vinduet: myserial.begin(1200); // set the data rate for the SoftwareSerial port delay(500); myserial.write( 0x8A ); // ID for Termoprinter delay(100); myserial.write ("Davs"); // Skriv tekst delay(100); myserial.write( 0x0D ); // Terminate string og start skrivning Side 34 af 48

35 delay(100); Serial.println("Sendt"); // i debugvinduet void loop() // run over and over RF-ID Se Cookbook, ca. side 206. Se fx: RF-ID: Se: Når en tag kommer i nærheden af læseren, sender læseren 10 byte, dvs. 10 digit via dens UART til Arduinoens Rxd. Først sendes en start-karakter, dernæst 10 digit TAG-nummer, og endelig en end-karakter. ( måske er det flere bytes der sendes? ) Skriv tag-id på PC-skærmen i Debug-vinduet, eller på et LCD-display. Obs: der kan være forskel på benforbindelserne på de to modeller vi har af RDM630. Side 35 af 48

36 Forbindelserne til model RDM630: New! Interface Data output format for RF-ID læserne: bps,N,8,1 2. CHECKSUM: card 10byte DATA entire do XOR operation 02 10ASCII Data Characters Chechsum 03 Example: card number: 62E3086CED Output data:36h 32H 45H 33H 30H 38H 36H 43H 45H 44H CHECKSUM: (62h) XOR (E3h) XOR (08h) XOR (6Ch) XOR (EDh)=08h I nogle kilder ses at der kommer 14 byte. Dvs. at der fra RF-ID-en sendes 12 Byte. Byte nummer 1 er?? De næste 10 byte er kortets nummer. Hvert tal er gemt som ASCII. Dvs. at fx et 6-tal sendes som 36h. Sidste byte er en tjecksum, som giver læse-processoren mulighed for at tjekke, om den har læst korrekt. Sendes data til LCD hvordan skrives de så?? ( Char ) Side 36 af 48

37 RC-Servomotor Styr en servomotor fra sketch på PC-en. ( Cookbook side ca. 296 ) En servomotor kan normalt dreje maximalt ca. 180 grader fra side til side, men der findes også motorer, der kan rotere kontinuerligt. Benforbindelser: BLACK Ground WHITE Control pin RED +4.8V power supply (+5V works well ) Indmaden i servomotoren ser således ud! Side 37 af 48

38 Blokdiagram: Her er vist et blokdiagram over indmaden i en servomotor. På akslen ud af motoren er der monteret et potentiometer. Denne giver en spænding fra 0 til 5 Volt, afhængig motorens position. Herved kan elektronikken vide, hvor motoren står. Kilde: Elektronikken i motoren skal styres af en Controller, der sender en række pulser til motoren. Pulserne omformes i motorens elektronik til et positionssignal, og motoren kører til en stilling, så forskellen mellem den indbyggede potentiometers feedback-spænding, og den ønskede position er nul. Vha bredden på pulserne på controlledningen kan man bestemme motorens position. Pulserne skal gentages hver ca. 20 ms. Side 38 af 48

39 Motorens position styres af pulsbredden på signalledningen.. Motoren drejer fra den ene yderstilling til den anden hvis pulsernes bredde ændres fra 1mS til 2mS. Kilde: Brug det medfølgende Servo-motor-bibliotek til at styre servoer direkte. Mit Servokit kan evt. bruges. Det skal have data tilsendt serielt: Baud 1200 ID = 8Ch + 4 bytes. Motor 0 er venstre i bunden Motor 1 er venstre på armen Motor 2 er højre på armen Motor 3 er højre i bunden ( set fra uc-en. ) Data sendes som xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Hvor xxxxxxxx er værdier fra 1d til 180d. Data er: ID, Motor0, Motor1, Motor2, Motor3, Motor4 Servoerne starter med at bevæge sig ved Power_on. Men så snart der ankommer serielle data, går servoens uc over i et nyt program, der adlyder de modtagne kommandoer. Side 39 af 48

40 Hvis P3.5 er lav, hoppes direkte til styring kun med serielle data Hvis P3.4 er lav, køres alle motorer fra 1 til 180!! Interrupts: Følgende diagram er et forsøg på at lave et samlet diagram over en timer og interrupt-struktur Arduino Timer1 Interrupt-Opsætning CTC Mode Interrupt ( Clear Timer on Compare Match ) Enable Interrupt i TIMSK-reg: Timer Interrupt Mask register TIMSK1-Bit: [xxxx x, OCIE1B, OCIE1A, TOIE1] ATMEL AVR Enable Global Sei(); Interrupt interrupts (); Disable Cli(); nointerrupts (); ATMEGA328 ( Der er også en kanal B & C ) ( Kun Kanal A Clearer timeren ) Output Compare Register Timer Compare Value Eks: OCR1A = 15624; Timer Overflow Bit Flag TCNT1H Oscillator 16 MHz OCR1B Compare match: TIMSK1 = ( 1 << OCIE1A ); bitset(timsk1, OCIE1A); TIMSK1 = B ; OCR1A TCNT1L 16 Bit 16 Bit Timer/Counter 1H Timer/Counter 1L TCNT1 = 0; Preload: TCNT1 = 25324; Overflow: bitset(timsk1, TOIE1); TIMSK1 = B ; Frekvensdeler = Prescaler OCRnC OCRnB Bit Compare 1 TIMSK1 Sæt TOV1 Bit Reset Counter TIFR1 Sæt OCF1A bit Clock-pulser, f = ( osc / prescale ) Overflow Bit 0 Compare Bit 1 Timer/Counter Interrupt Flag Register Output Compare Interrupt Flag OCF1A og Overflov flag TOV1 cleares af hardware ved interrupt kald Ov erf low Vector ISR(TIMER1_OVF_vect) TCNT1 = 25324; Output Compare Vector ISR(Timer1_COMPA_Vect) Timer0 bruges til delay(); millis(); & micros(); Timer1 til servo(); Timer2 til tone(); Timer 0 & 2 er kun 8 bit Fra Pins TCCR1A TCCR1B Timer/Counter Control Register A/B Mode select registre [ CSxx = Clock Select bit ] [ WGMxx = Wave Generation Mode ] TCCR1B-Bit[xxxx WGM12, CS12, CS11, CS10 ] TCCR1B = ( 1 << WGM12 ); Turn on Compare ( CTC ) Mode TCCR1B = B ; ( Wave Generation Mode ) bitset(tccr1b, WGM12); bitset(tccr1b, CS10); // Vælg Prescaler bitset(tccr1b, CS12); TCCR1B = ( 1 << CS12 ) ( 1 << CS10 );// = 1024 TCCR1B = 0x05; // = 1024 [CS12, CS11, CS10] 000 Stop Timer 001 Divide by * Ekstern clock på T1 Definerede konstanter: CS10 = 0 CS11 = 1 CS12 = 2 WGM12 = 3 Rev: 14/ / Valle Eksempel på Counter Compare Match interrupt: /* Arduino timer/counter Compare Match "CTC" interrupt example Testet 8/ sek. Interrupt??? Valle */ Side 40 af 48

41 #define LEDPIN 13 void setup() pinmode(ledpin, OUTPUT); // initialize Timer1 cli(); // disable global interrupts TCCR1A = 0; // set entire TCCR1A register to 0 TCCR1B = 0; // same for TCCR1B OCR1A = 15624; // set compare match register to desired timer count: TCCR1B = (1 << WGM12); // turn on CTC mode: // Vælg prescaler og start timer // TCCR1B = (1 << CS10); // set prescaler to 1 // TCCR1B = (1 << CS11); // set prescaler to 8 // TCCR1B = (1 << CS11) (1 << CS10); // Set prescaler to 64 // TCCR1B = (1 << CS12); // set prescaler to 256 TCCR1B = (1 << CS12) (1 << CS10); // Set prescaler to 1024 TIMSK1 = (1 << OCIE1A); // enable timer compare interrupt: sei(); // enable global interrupts: void loop() // do some crazy stuff while my LED keeps blinking ISR(TIMER1_COMPA_vect) digitalwrite(ledpin,!digitalread(ledpin)); // toggle pin. Eksempel på Counter overflow interrupt. /* Eksempel på Interrupt ved timer overflow. Valle / 8/ */ Side 41 af 48

42 // #define ledpin 13 int timer1_startvalue; int sekund = 0; int minut = 0; int hun_delsekund = 0; volatile boolean flag = 0; //boolean flag = 0; void setup() // pinmode(ledpin, OUTPUT); Serial.begin(9600); while (!Serial) ; // wait for serial port to connect. Needed for Leonardo only // initialize timer1 nointerrupts(); TCCR1A = 0; TCCR1B = 0; // disable all interrupts // Set timer1_startvalue to the correct value for our interrupt interval timer1_startvalue = 64886; // preload timer MHz/256/100Hz //timer1_startvalue = 64286; // preload timer MHz/256/50Hz //timer1_startvalue = 34286; // preload timer MHz/256/2Hz // timer1_startvalue = 3036; // preload timer MHz/256/1Hz TCNT1 = timer1_startvalue; // preload timer TCCR1B = (1 << CS12); // 256 prescaler ( = betyder Bitwise or. ) TIMSK1 = (1 << TOIE1); // enable timer overflow interrupt interrupts(); // enable all interrupts ISR(TIMER1_OVF_vect) // interrupt service routine TCNT1 = timer1_startvalue; // gen-load timer1 // digitalwrite(ledpin, digitalread(ledpin) ^ 1); Toggle hun_delsekund++; flag = HIGH; if (hun_delsekund > 99) hun_delsekund = 0; sekund++; if (sekund > 59) sekund = 0; minut++; void loop() while(flag==low) // Wait til change!! Serial.print(minut); Side 42 af 48

43 Serial.print(':'); if(sekund<10) Serial.print('0'); Serial.print(sekund); Serial.print(':'); if(hun_delsekund<10) Serial.print('0'); Serial.println(hun_delsekund); flag=0; // delay(1000); Se flere eksempler: Eksempel på 2 Hz interrupt der bruger Counter Compare. /* Arduino: timer and interrupts Timer1 compare match interrupt example more infos: created by RobotFreak */ #define ledpin 13 void setup() pinmode(ledpin, OUTPUT); // initialize timer1 nointerrupts(); TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; // disable all interrupts OCR1A = 31250; // compare match register 16MHz/256/2Hz TCCR1B = (1 << WGM12); // CTC mode TCCR1B = (1 << CS12); // 256 prescaler TIMSK1 = (1 << OCIE1A); // enable timer compare interrupt interrupts(); // enable all interrupts ISR(TIMER1_COMPA_vect) // timer compare interrupt service routine digitalwrite(ledpin, digitalread(ledpin) ^ 1); // toggle LED pin void loop() // your program here... Side 43 af 48

44 Timer 1 overflow interrupt eksempel: 2 Hz /* * Arduino: timer overflow interrupts * Timer1 overflow interrupt example * more infos: * */ #define ledpin 13 void setup() pinmode(ledpin, OUTPUT); // initialize timer1 nointerrupts(); TCCR1A = 0; TCCR1B = 0; TCNT1 = 34286; TCCR1B = (1 << CS12); TIMSK1 = (1 << TOIE1); interrupts(); // disable all interrupts // preload timer MHz/256/2Hz // 256 prescaler // enable timer overflow interrupt // enable all interrupts ISR(TIMER1_OVF_vect) // interrupt service routine that wraps a user // defined function supplied by attachinterrupt TCNT1 = 34286; // preload timer digitalwrite(ledpin, digitalread(ledpin) ^ 1); // toggle LED pin void loop() // your program here... // timer example from electronicsblog.net #define LED 13 boolean x=false; void setup() pinmode(led, OUTPUT); TIMSK1=0x01; // enabled global and timer overflow interrupt; TCCR1A = 0x00; // normal operation page 148 (mode0); Side 44 af 48

45 TCNT1=0x0BDC; // set initial value to remove time error (16bit counter register) TCCR1B = 0x04; // start timer/ set clock ; void loop () digitalwrite(led, x); ; ISR(TIMER1_OVF_vect) TCNT1=0x0BDC; // set initial value to remove time error (16bit counter register) x=!x; Urprogram: Eksempel: Krystallets frekvens er 16 MHz. Der bruges en frekvensdeler på 1024, dvs. der kommer en frekvens på 16M / 1024 = Hz til tælleren. Dvs. når der talt pulser, er der gået 1 sekund. Så der skal indsættes en værdi på , ( fordi tælleren starter med 0 ) i et sammenligningsregister, og når tælleren kommer op på dette tal, udløses et interrupt, og tælleren nulstilles. Gennemgå programmet, - og tilføj manglende kommentarer!! Kodeeksempel: /* Arduino timer/counter Compare Match "CTC" interrupt example Urprogrammet er skrevet til 1.z og EUX til at styre tiden i forbindelse med lysstyring til krydderurter. Tiden vises på Debug-vinduet. Der udløses et interrupt hver 1 sekund. I en interruptrutine optælles sekunder, og der tjekkes for >= 60. Hvis tilfældet, nulstilles, og minutter øges med 1. Igen tjekkes for overløb. Osv. Der er lavet mulighed for at justere uret. Side 45 af 48

46 Der er plads til at man selv kan tilrette programmet, så der kan tilføjes temperaturstyring, - og / eller brug af LCD-display. Testet 18/ Valle */ #define LEDPIN 13 // for test // Definering af Variabler: byte sekundtaeller = 17; byte minuttaeller = 41; byte timetaeller = 17; byte inbyte; // Startværdier, for test void setup() pinmode(ledpin, OUTPUT); // for test // initialize Timer1 til interrupt cli(); // disable global interrupts TCCR1A = 0; // set entire TCCR1A register to 0 TCCR1B = 0; // same for TCCR1B OCR1A = 15624; // set compare match register to desired timer count: // Bit i TCCR1B: **** WGM12, CS12, CS11, CS10 TCCR1B = (1 << WGM12); // turn on CTC mode: // Vælg prescaler og start timer // TCCR1B = (1 << CS10); // set prescaler to 1 // TCCR1B = (1 << CS11); // set prescaler to 8 // TCCR1B = (1 << CS11) (1 << CS10); // Set prescaler to 64 // TCCR1B = (1 << CS12); // set prescaler to 256 TCCR1B = (1 << CS12) (1 << CS10); // Set prescaler to 1024 // Eller TCCR1B = 0x05; TIMSK1 = (1 << OCIE1A); // enable timer compare interrupt: sei(); // enable global interrupts: Serial.begin(9600); void loop() // Måske er det bedre at sætte display-håndteringen ned i Interrupt // delen. Så vil den kun skrive på vinduet, når der er gået 1 sekund. Serial.print("tiden er: "); Serial.print(timeTaeller); Serial.print(" : "); Serial.print(minutTaeller); Serial.print(" : "); Serial.println(sekundTaeller); Side 46 af 48

47 if (Serial.available() > 0) inbyte = Serial.read(); // get incoming byte: if (inbyte == 'T') // test for Byte timetaeller++; else if (inbyte == 't') timetaeller--; else if (inbyte == 'M') minuttaeller++; else if (inbyte == 'm') minuttaeller--; else if (inbyte == 's') sekundtaeller = 0; delay(500); ISR(TIMER1_COMPA_vect) // Interrupt service ( sub )rutine digitalwrite(ledpin,!digitalread(ledpin)); // toggle pin. sekundtaeller++; if (sekundtaeller >= 60) sekundtaeller = 0; minuttaeller++; if (minuttaeller >= 60) minuttaeller = 0; timetaeller++; if (timetaeller >= 24) timetaeller = 0; Kopier til word med farver, Pastie.org: Den kode, der ønskes kopieret til Word, fx for dokumentations-formål, kopieres, og pastes fx i rammen på hjemmesiden: Pastie.org Side 47 af 48

48 Vælg den syntax, der skal farvelægges efter. Det er C/C++ Tryk Create Paste Herefter vises en ny side: Highlight selve teksten med musen, dvs. man kan undgå at kopiere linjenumrene. C&P til Word Side 48 af 48

Arduino opgaver Teknologi

Arduino opgaver Teknologi : I dette dokument er der inspiration til en række programmerings-opgaver til Arduino. Opgaverne bliver i nogen grad sværere og sværere op gennem opgavenumrene. Opgaverne kan laves ved at opbygge kredsløb

Læs mere

Arduino opgaver Teknologi

Arduino opgaver Teknologi : Hop til opgave: Blink, Blinkende lysdioder, Input fra knap, RGB-Kit, LED-Cube, LCD-Display, Debug-vindue, LED styret af Potentiometer, Mål temperatur, Ur-Program, Termoprinter, RF-ID, Servomotor, Timer-interrupt,

Læs mere

Arduino opgaver. I dette dokument er der inspiration til en række programmerings-opgaver til Arduino.

Arduino opgaver. I dette dokument er der inspiration til en række programmerings-opgaver til Arduino. : Hyperlinks til forskellige opgaver: #Binære_tal, #Knightrider, #Dot_Matrix-display, #Fra_Debug_vindue_til_Ardu, #Hej_mor, #Pernille, #Interrupts, #Keypad, #LCD, #Morse, #Potentiometer, #RF_ID, #RGB,

Læs mere

Arduino opgaver. I dette dokument er der inspiration til en række programmerings-opgaver til Arduino.

Arduino opgaver. I dette dokument er der inspiration til en række programmerings-opgaver til Arduino. : Hyperlinks til forskellige opgaver: #Binære_tal, #Knightrider, #Dot_Matrix-display, #Fra_Debug_vindue_til_Ardu, #Hej_mor, #Pernille, #Interrupts, #Keypad, #LCD, #Morse, #Potentiometer, #RF_ID, #RGB,

Læs mere

Arduino opgaver. For at få hjælp til at lave opgaverne, brug Arduino-kompendiet, eller søg på nettet!

Arduino opgaver. For at få hjælp til at lave opgaverne, brug Arduino-kompendiet, eller søg på nettet! : Samlede opgaver til teknologi og El-teknik Hop til opgave: Find hjælp, Indledning, Kit Vers.1, Kit Vers.2, Blinkende lysdioder, Input fra knap, Intern Pullup, If Else, Variabel blinkfrekvens, For-Loop,

Læs mere

Fra programmering til mikroprocessor

Fra programmering til mikroprocessor Programmering for begyndere Brug af Arduino Fra programmering til mikroprocessor EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Programmerings kursus Sidste gang (Introduktion)

Læs mere

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

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 Styring_af_analog_repeater_OZ1LN_07-04-2018_v_1_07 device Arduino NANO fra v 1.06_j kræves Starttid bærebølge for valid pilottone ved start fra v 1.06_j kræves ResetTid uden bærebølge ved genstart efter

Læs mere

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

Example sensors. Accelorometer. Simple kontakter. Lysfølsomme. modstande. RFID reader & tags. Temperaturfølsomme. Flex Sensor. Simple kontakter Accelorometer Example sensors Lysfølsomme modstande RFID reader & tags Temperaturfølsomme modstande Flex Sensor Ultralyds afstandsmåler Piezo Pressure/vibration Piezo Sound/buzzer Peltier

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået

Læs mere

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

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 05/ Arduino, Loops, løkker, programfunktioner mm. Arduino, Loops, løkker, programfunktioner mm. Links til følgende i dokumentet: Trykknap If, If else, If Else If While, Do While For-Loop Break, PWM Serial Read Funktioner og subrutinerr Switch Case Random

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

LCD intro. LCD Character display-intro. Redigeret 4/6-2019

LCD intro. LCD Character display-intro. Redigeret 4/6-2019 LCD Character display-intro Parallel interface, Forbindelsesdiagram, Ram & Rom-struktur, Biblioteksfunktioner til at styre LCD-skærmen, Lcd.Print vs Lcd.Write, Selvdefinerede karakterer, herunder æ, ø

Læs mere

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

Delay(100); Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter. Funktionen delay() Funktionen delay() er ofte praktisk at bruge i et program i Arduino-verdenen. Man skriver fx blot delay(100); for at få Microcontrolleren til at vente 100 ms inden programmet fortsætter.

Læs mere

Arduino kursus lektion 3:

Arduino kursus lektion 3: Arduino kursus lektion 3: I denne lektion skal vi lave få en diode til at fade op og ned! Herefter skal denne diode bruges sammen med en lysføler til at lave en smart lysfølsom diode som selv justere lyset

Læs mere

ARDUINO PROGRAMMERING

ARDUINO PROGRAMMERING ARDUINO PROGRAMMERING Teknologisk Institut Opgaver i programmering af Arduino Indholdsfortegnelse Kapitel 1... 2 Arduino Uno mikrokontroller... 2 Digitalt signal... 3 Analogt signal... 3 Arduino Uno Specifikationer...

Læs mere

Microcontroller, Arduino

Microcontroller, Arduino Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se

Læs mere

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

Løkkestrukturer mm. Trykknap: Button, Se eksempler / Digital / Button. Decision: If: Version 08/ Arduino, Loops, løkker, programfunktioner mm. Arduino, Loops, løkker, programfunktioner mm. Links til følgende i dokumentet: Trykknap If, If else, If Else If While, Do While For-Loop PWM Serial Read Funktioner og subrutinerr Switch Case Random number,

Læs mere

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

Interrupt - Arduino. Programmering for begyndere Brug af Arduino. Kursusaften 6 EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Programmering for begyndere Brug af Arduino Programmeringskursus Interrupt - Arduino EDR Hillerød Knud Krogsgaard Jensen / OZ1QK Interrupts Programmeringskursus Genbrug Interrupts Betyder blot at man afbryder

Læs mere

TinkerCad - Arduino simulator

TinkerCad - Arduino simulator TinkerCad - Arduino simulator Dokument fra H.C.Ørsted Gymnasiet, delt i HTX-Strømspassergruppen. ( Lidt modificeret / Valle ) På tinkercad.com kan man både arbejde med 3D emner, men også elektroniske kredsløb.

Læs mere

Lektion 6 / Analog Arduino

Lektion 6 / Analog Arduino 1 Jeremiah Teipen: Electronic Sandwich BSPR11 Lektion 6 / Analog Arduino Mogens Jacobsen / moja@itu.dk Siden sidst 2 Har I fået nogle LEDs til at blinke? Har I brugt kontakter? Hvad har I eksperimenteret

Læs mere

LCD Character display Intro

LCD Character display Intro LCD Character display Intro Der findes flere typer af LCD karakter-displays, fra forskellige firmaer. Her er vist en type, der er blå. Pins: Nummer 1 fra venstre Her er vist en nærmere beskrivelse af de

Læs mere

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

Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... Indholdsfortegnelse Indledning... 2 Projektbeskrivelse... 2 Dette bruger vi i projektet... 2 Komponenter... 2 Software... 2 Kalibrering... 3 Kildekoden... 4 Variabler... 4 Setup... 4 Loop... 4 Indledning

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-2012 IT-vejleder: Karl G. Bjarnason

Læs mere

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

Ved indkøring påtrykkes en kendt amplitude (HUSK 50 ohms afslutning) og displayet aflæses. /* Power Meter 2012 /* Rettet den 13.februar 2013 /* Version 1.2 /* Input medie er en AD8307, som forsynes fra Arduino Uno stabiliserede 5 volt. A/D input er på Arduino analog input pin A0 AREF er tilført

Læs mere

Arduino Programmering

Arduino Programmering Microcontroller-programmering med Arduino I teknologi skal vi lære at lave programmer til en microcontroller for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal

Læs mere

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

GSM SMS Modem MODEL: SA RTU-1 V1.01 GSM SMS Modem MODEL: SA RTU1 V1.01 Brugervejledning Indgange: Der er fire indgange på modulet. De kan programmeres som normale indgange. De kan programmeres som tæller. Udgange: Der er en udgang på modulet

Læs mere

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

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

Læs mere

Analoge indgange og A/D konvertering. Analoge udgange

Analoge indgange og A/D konvertering. Analoge udgange Programmering for begyndere Brug af Arduino Programmeringskursus Analoge indgange og A/D konvertering Analoge udgange Knud Krogsgaard Jensen OZ1QK Oversigt Oversigt over i aften: A/D konvertering iterations

Læs mere

RF-ID Kompendium. RF-ID & Radio control. Dette kompendium indeholder materiale om RF-ID. Materialet er meget foreløbigt.

RF-ID Kompendium. RF-ID & Radio control. Dette kompendium indeholder materiale om RF-ID. Materialet er meget foreløbigt. Senest redigeret 8. april 2014 RF-ID Kompendium Dette kompendium indeholder materiale om RF-ID Materialet er meget foreløbigt. Derfor modtages rettelser og forslag meget gerne. ------------------------

Læs mere

danske karakterer på Lcd

danske karakterer på Lcd Arduino og LCD ( 16/3-13 ) Når Arduinoen kobles til et LCD-display, kan man ikke umiddelbart skrive de danske karakterer æ, ø og å. Bag hver karakterplads i LCD-en er der en 8-bit RAM. Hvis der skrives

Læs mere

Arduinostyret klimaanlæg Afsluttende projekt programmering C

Arduinostyret klimaanlæg Afsluttende projekt programmering C Arduinostyret klimaanlæg Afsluttende projekt programmering C Udarbejdet af: Mathias R W Sørensen, klasse 3.4 Udleverings-dato: 02-03-2012 Afleverings-dato: 11-05-2012 Programmeringvejleder: Karl G. Bjarnason

Læs mere

Indholdsfortegnelse:

Indholdsfortegnelse: Dataopsamling Klaus Jørgensen Gruppe. Klaus Jørgensen, Jacob Clausen Og Ole Rud Erhvervs Akademi Fyn Allegade 79 Odense C 5000 fra d 2/12-02 til d 20/12-02 Vejleder: SKH. Forord: Denne rapport omhandler

Læs mere

CANSAT & ARDUINO step by step

CANSAT & ARDUINO step by step CANSAT & ARDUINO step by step Jens Dalsgaard Nielsen SATLAB Aalborg Universitet Danmark jdn@space.aau.dk 1/51 Arduino CANSAT - MÅL At måle ved hjælp af sensor temperatur, tryk, acceleration, CO2, lys,...

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato: 14-05-2003 Side 1 af 8 Dato: 14-05-2003 Til Sigurd Som aftalt vil jeg her fremsende vores program til vores 80C535 kit og display. Det gik jo ud på at vi skulle starte med at få den til at intialiserer displayet,

Læs mere

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato:

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi C Opgave: Brev til Sigurd Lære: John Austin Side 1 af 13 Dato: Side 1 af 13 Dato: 03-06-03 Til Sigurd Som aftalt får du nu tilbygningen til 80C535 kittet, keyboard og programmet med programopdatering. Den sidste opgave her, gik så ud på at tilslutte et tastatur, og

Læs mere

Brug af digitale ind og udgange

Brug af digitale ind og udgange Programmering for begyndere Brug af Arduino Programmeringskursus Brug af digitale ind og udgange Oversigt over aftenen Digitale ind- og udgange Det er der ikke så meget i: Digitale indgange kan tænde og

Læs mere

Video Projector Controller. Brugermanual

Video Projector Controller. Brugermanual Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK l Video Projector Controller Brugermanual WWW.WAHLBERG.DK TELEPHONE +45 86 18 14 20 CELL PHONE +45 40 52 20 88 EMAIL: mads@wahlberg.dk Feb

Læs mere

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning

ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning ELCANIC A/S Counter Type CNT150 Version 2.00 Inkl. PC programmet: Cnt150 Version 3.00 Betjeningsvejledning Generelt: ELCANIC A/S COUNTER Type CNT150 er en microprocessor baseret tæller. Specielt designet

Læs mere

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.

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. APPETITVÆKKEREN OZ6YM, Palle A. Andersen Efteråret 2017 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. DEMO-video

Læs mere

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

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss Brugervejledning (side 2-6) Userguide (page 7-11) Bedienungsanleitung 1 - Hvordan forbinder du din E-PAD hængelås med din

Læs mere

CANSAT & ARDUINO step by step

CANSAT & ARDUINO step by step CANSAT & ARDUINO step by step Jens Dalsgaard Nielsen SATLAB Aalborg Universitet Danmark jdn@space.aau.dk 1/45 Arduino CANSAT - MÅL At måle ved hjælp af sensor temperatur, tryk, acceleration, CO2, lys,...

Læs mere

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling.

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling. Flowchart Et flowchart bruges til grafisk at beskrive et forløb. Det kan fx være en microcontrollers programafvikling. Der findes nogle gode programmer til at tegne flowcharts med, men de skal købes. Fx

Læs mere

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

Modeljernbane elektronik for begyndere...og dem der vil igang med at bygge deres egne dekodere 2015 Modeljernbane elektronik for begyndere...og dem der vil igang med at bygge deres egne dekodere Dette dokument giver en grundlæggende indføring i standard elektronik komponenter og deres virkemåde,

Læs mere

//--------------------------------- Definition af porte og funktioner -------------------------

//--------------------------------- Definition af porte og funktioner ------------------------- Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

Optimering af fraværsregistrering

Optimering af fraværsregistrering Journal Optimering af fraværsregistrering Eksamensprojekt i Programmering C, klasse 3.4, 2011 AFLEVERET 09-05-2014 Indhold Abstract... Fejl! Bogmærke er ikke defineret. Problemformulering... 2 Produktet...

Læs mere

Projekt - RoboNet Del Journal.

Projekt - RoboNet Del Journal. Projekt - RoboNet Del Journal. Udarbejdet af: Klaus Jørgensen. Gruppe: Jacob Clausen, Klaus Jørgensen og Ole Rud It og Elektronikteknolog, 2a Erhvervsakademiet Fyn Udarbejdet i perioden: 20/01-03 03/02-03

Læs mere

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Hvorfor & Hvordan lære Elever At programmere Arduinoer 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

Læs mere

IAI Quick Start Guide

IAI Quick Start Guide IAI Quick Start Guide Opsætning: Manualen til controllerene ligger i: Produkter\IAI\Manual\RoboCylinder\Controller\ Her ligger den i en undermappe alt efter hvilken type controller det er. Installer RCPC

Læs mere

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!)

Der er derfor, for at alle kan sende, kun tilladt, at sende intermitterende. Altså korte pakker. ( Dette skal dog verificeres!!) MHz KIT Rev: /- Det er ikke tilladt, at man bare udsender radiobølger på den frekvens, man ønsker. Forskellige frekvenser er udlagt til forskellige formål. Nogle til politiet, militæret, FM-radio-transmission,

Læs mere

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

I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET Mandag den 14 januar 2013 I 2 C BUSSEN KØRER MED ARDUINO IND I FORÅRET OZ1QK Knud Krogsgaard Jensen 1 ARDUINO I 2 C - BUSSEN ELLER?? Plan for I aften: Jeg siger noget i 10 minutter I fortæller lidt om

Læs mere

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax TM4 Central Station User Manual / brugervejledning K2070-EU STT Condigi A/S Niels Bohrs Vej 42, Stilling 8660 Skanderborg Denmark Tel. +45 87 93 50 00 Fax. +45 87 93 50 10 info@sttcondigi.com www.sttcondigi.com

Læs mere

Port & Bitmanipulation

Port & Bitmanipulation Port & Bit-manipulation i Arduino: Links til afsnit i dokumentet: Indledning Sammenhæng mellem Arduino pins og porte Portregistre Skriv_til_port / Variabel Læs port / SFR bitset bitclear bitwrite BitRead

Læs mere

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning

ELCANIC A/S. ENERGY METER Type ENG110. Version 3.00. Inkl. PC program: ENG110. Version 3.00. Betjeningsvejledning ELCANIC A/S ENERGY METER Type ENG110 Version 3.00 Inkl. PC program: ENG110 Version 3.00 Betjeningsvejledning 1/11 Generelt: ELCANIC A/S ENERGY METER Type ENG110 er et microprocessor styret instrument til

Læs mere

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

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2); /* OZ1HJR Program til styring af Mercury Motor SM-42BYG011-25 (ROB-09238) med EasyDriver V4.4 (ROB-10267). Når MS1 og MS2 begge er High, er et step (1.8 grader) opløst i 8 mikrostep. Et mikrostep svarer

Læs mere

Netværk & elektronik

Netværk & elektronik Netværk & elektronik Oversigt Ethernet og IP teori Montering af Siteplayer modul Siteplayer teori Siteplayer forbindelse HTML Router (port forwarding!) Projekter Lkaa Mercantec 2009 1 Ethernet På Mars

Læs mere

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk

Intro til AVR. Mads Pedersen, OZ6HR mads@oz6hr.dk Intro til AVR Mads Pedersen, OZ6HR mads@oz6hr.dk Projektidé Brug en AVR-microcontroller Mål temperatur vha. temperatursensor Vis på display Send til computer og vis temperatur Slide 2 Plan 27/10-2005:

Læs mere

RF-ID. Materialet er meget foreløbigt. Derfor modtages rettelser og forslag meget gerne Side 1 af 15. Redigeret 14/

RF-ID. Materialet er meget foreløbigt. Derfor modtages rettelser og forslag meget gerne Side 1 af 15. Redigeret 14/ Materialet er meget foreløbigt. Derfor modtages rettelser og forslag meget gerne. ------------------------ Side 1 af 15 RF ID står for Radio Frequency Identification. teknologien kendes fra fx Natløb.

Læs mere

MultiProgrammer Manual

MultiProgrammer Manual MultiProgrammer Manual MultiProgrammeren bruges til at læse og skrive værdier til ModBus register i LS Controls frekvensomformer E 1045. Dansk Version side 2 til 4 The MultiProgrammer is used for the writing

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

MP3 player med DMX interface.

MP3 player med DMX interface. Jægergårdsgade 152/05A DK-8000 Aarhus C DENMARK WWW.WAHLBERG.DK MP3 player med DMX interface. Funktion: En avanceret Mp3spiller med forskellige styringsmuligheder, velegnet til brug i museer, teatre, udstillinger

Læs mere

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9

Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9 PLC - analogteknik INDHOLDSFORTEGNELSE Opgaver - PLC - analogteknik - forbindelsesteknik...3 Opgaver - PLC - analogteknik - programmering...9 2-20 Rekv. 0 Prod. 20-11-2005-21:51 Ordre 000 EFU OPGAVER -

Læs mere

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007

Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Programmering i C Programmering af microcontroller i C (4 af 4) 12. april 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan i dag Afrunding af OZ3VB's program Fra "almindelig C" til "microcontroller C" Lighederne

Læs mere

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer

Projekt Når maskinen reagerer - Dataopsamling og aktuatorer Projekt Når maskinen reagerer - Dataopsamling og aktuatorer Af Nikki Mitchell og Jacob Thuesen Nikki Mitchell og Jacob Thuesen Side 1 af 20 08-02-2010 Indledning... 3 Formål... 3 Teori... 4 Arduino opgave

Læs mere

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller.

Flowchart og Nassi ShneidermanN Version. Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Flowchart Et flowchart bruges til grafisk at tegne et forløb. Det kan fx være et programforløb for en microcontroller. Et godt program til at tegne flowcharts med er, EDGE-Diagrammer, eller Smartdraw.

Læs mere

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde

SPIDER Quick guide. DATO: August 2017 FORHANDLER: WASYS A/S. Langebjergvænget Roskilde SPIDER Quick guide DATO: August 2017 FORHANDLER: WASYS A/S Langebjergvænget 18 4000 Roskilde +45 7221 7979 Indhold Om SPIDER... 3 Funktioner ved SPIDER... 3 Spændingsforsyning... 3 Installation og fysiske

Læs mere

I gang med dit Gamer: bit Arkade Kit Denne guide er oversat og en smule forenklet fra Sparkfuns Hook-Up guide

I gang med dit Gamer: bit Arkade Kit Denne guide er oversat og en smule forenklet fra Sparkfuns Hook-Up guide I gang med dit Gamer: bit Arkade Kit Denne guide er oversat og en smule forenklet fra Sparkfuns Hook-Up guide Gamer: Bit Carrier Board er en docking-station til micro:bit, som gør det nemt at anvende alle

Læs mere

Hvorfor & Hvordan lære. at programmere Arduinoer

Hvorfor & Hvordan lære. at programmere Arduinoer 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/

Læs mere

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen

TG 8. Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: Modtaget af: Søren Knudsen TG 8 EUC-Syd Sønderborg 6. Skoleperiode Elektronikmekaniker Indhold: TG8 - Kredsløbsbeskrivelse Gruppemedlemmer: Kim Andersen, Kasper Jensen & Thyge Mikkelsen Dato: 30 04-2002 Modtaget af: Søren Knudsen

Læs mere

Alt elektronik heri er købt via http://dx.com, og arduino udviklingssoftware er hentet fra http://arduino.cc.

Alt elektronik heri er købt via http://dx.com, og arduino udviklingssoftware er hentet fra http://arduino.cc. Få-tiden-til-at-gå-[DIGITAL]-ur =============================== Copyright 2013, Richard Jørgensen. Alle ophavsretlige rettigheder frafaldet 2015. (Kopier og brug som du har lyst.) Forord: ===== Denne vejledning

Læs mere

TranzX P ST PCB Kit Manual Vers ion C, D & E. Alle E-Fly. Vælg I2C. Vælg I2C PCB kit version og serienummer

TranzX P ST PCB Kit Manual Vers ion C, D & E. Alle E-Fly. Vælg I2C. Vælg I2C PCB kit version og serienummer Alle E-Fly. Vælg I2C Vælg I2C PCB kit version og serienummer Afmonter batteri før montering af tester Afmonter batteri og hold Tænd/on tasten nede, for at aflade systemet Monterings vejledning Forbind

Læs mere

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO Model: HN13549 Vejledning Funktioner 1. INFO/MENU 2. ALARM 3. NULSTIL 4. VÆLG 5. MODE 6. SCAN 7. VENSTRE ( ) 8. HØJRE ( ) 9. BÆREGREB 10. DOT-MATRIX

Læs mere

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

ECE 551: Digital System * Design & Synthesis Lecture Set 5 ECE 551: Digital System * Design & Synthesis Lecture Set 5 5.1: Verilog Behavioral Model for Finite State Machines (FSMs) 5.2: Verilog Simulation I/O and 2001 Standard (In Separate File) 3/4/2003 1 ECE

Læs mere

Hvorfor & Hvordan lære Elever At programmere Arduinoer

Hvorfor & Hvordan lære Elever At programmere Arduinoer 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

Læs mere

Mircobit Kursus Lektion 1

Mircobit Kursus Lektion 1 Mircobit Kursus Lektion 1 I denne lektie skal vi se nærmere på den lille mini computer kaldt microbit. Egentlig kræver det at man har en fysisk microbit men man kan også næsten lave det samme med den simulator

Læs mere

Bruger manual for SW 3.06

Bruger manual for SW 3.06 Ecco 101 VÆGTE & VEJESYSTEMER Power Tare Charge KG Max 200 Kg O T Bruger manual for SW 3.06 Nyskovvej 13 DK-6580 Vamdrup Tlf. +45 76 92 02 00 Fax +45 75 58 06 31 E-mail: scales@farmertronic.com www.farmertronic.com

Læs mere

Arduino. Processoren på kittet er fra Atmel, af AVR-familien, og hedder Atmega 328.

Arduino. Processoren på kittet er fra Atmel, af AVR-familien, og hedder Atmega 328. kompendium. Dette kompendium er ikke et forsøg på at være fyldestgørende, for at komme i gang med at programmere, men er en samling af informationer og tips. Og der er en række links til materialer på

Læs mere

Start af nyt schematic projekt i Quartus II

Start af nyt schematic projekt i Quartus II Start af nyt schematic projekt i Quartus II Det følgende er ikke fremstillet som en brugsanvisning der gennemgår alle de muligheder der er omkring oprettelse af et Schematic projekt i Quartus II men kun

Læs mere

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

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan

Læs mere

QUICK START Updated:

QUICK START Updated: QUICK START Updated: 24.08.2018 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get started

Læs mere

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund

AVR MP3 29-05-08 05576 Ingeniørhøjskolen i Århus Michael Kaalund AVR MP3 29-05-08 Indholdsfortegnelse 1 Introduktion...2 2 Udviklingsmiljø...2 3 Beskrivelse af systemet...3 3.1 VS1001k...3 3.2 MP3 file formatet...6 4 Konklusion...6 5 Litteratur liste...6 6 Illustrations

Læs mere

GSM REMOTE CONTROL AND MONITORING SYSTEM Model: GSM-220

GSM REMOTE CONTROL AND MONITORING SYSTEM Model: GSM-220 GSM REMOTE CONTROL AND MONITORING SYSTEM Model: GSM-220 For nyeste manual www.termalou.com Indholdsfortegnelse Intorduktion....... 4 Pakkens indhold......4 Enhedens design....5 Installations Diagram...5

Læs mere

QUICK START Updated: 18. Febr. 2014

QUICK START Updated: 18. Febr. 2014 QUICK START Updated: 18. Febr. 2014 For at komme hurtigt og godt igang med dine nye Webstech produkter, anbefales at du downloader den senest opdaterede QuickStart fra vores hjemmeside: In order to get

Læs mere

Quick Setup Guide SB168-ES og M7CL Dansk version

Quick Setup Guide SB168-ES og M7CL Dansk version Quick Setup Guide SB168-ES og M7CL Dansk version February, 2009 SB168-ES og M7CL Quick Setup Guide Beskrivelse af denne guide. Denne guide indeholder en hurtig og enkelt opsætning af M7CL med digital stagebox.

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO

STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO STEVISON BLUETOOTH USB MICRO SD DAB+ FM DIGITAL RADIO Model: HN13549 Vejledning Funktioner 1. INFO/MENU 2. ALARM 3. NULSTIL 4. VÆLG 5. MODE 6. SCAN 7. VENSTRE ( ) 8. HØJRE ( ) 9. BÆREGREB 10. DOT-MATRIX

Læs mere

Delta Elektronik A/S - AKD

Delta Elektronik A/S - AKD Delta Elektronik A/S - AKD Hardware og type oversigt Grundlæggende oplysninger med forbindelser Opsætning af IP adresser på drev alle muligheder Gennemgang af WorkBench Up/Down load parametre filer Mest

Læs mere

LM Technologies bluetooth seriel adapter Installationsvejledning

LM Technologies bluetooth seriel adapter Installationsvejledning LM Technologies bluetooth seriel adapter Installationsvejledning 1. Installation af opsætningsprogram Hent opsætningsprogrammet fra: http://www.stokerkontrol.dk/download/lm149setup.exe For at installere

Læs mere

Dansk Mink Papir. Teknisk brugermanual

Dansk Mink Papir. Teknisk brugermanual Dansk Mink Papir Teknisk brugermanual Styring til FIX tørrekasse Beskrivelse Enheden styrer en AC blæser-motor via en relæudgang. Betjening foregår via et tastatur og et display, og brugeren kan vælge

Læs mere

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren.

1.1 Indledning. Features: Højintensitet LED-display. Fleksibel forsyning (12-45V). Kan placeres op til 100m fra controlleren. Indhold. Indledning...3.2 Strømforsyning...4.3 Modul-interface...5.3 Modul-interface...6 2. Kommandooversigt...7 2.2 Register og flag-oversigt...8 2.3 Udlæsning til display...9 2.4 Registerbeskrivelser...

Læs mere

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001

Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001 Operation Manual SMS Air Conditioner Remote Controller Model No.: SR-001 Ls venligst denne instruktions manual igennem inden brug af produktet Thank you for purchasing our product. This smart unit is not

Læs mere

Genius laderegulator Monterings og brugervejledning

Genius laderegulator Monterings og brugervejledning Genius laderegulator Monterings og brugervejledning Laderegulatorens opbygning Genius er en avanceret laderegulator for solceller/solpaneler der kontroller, overvåger og styrer indladning og afladning

Læs mere

WEA-Base Brugervejledning til vejetransmitter

WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 WEA-Base Brugervejledning til vejetransmitter WEA-Base Brugervejledning til vejetransmitter Version 3.4 Indholdsfortegnelse 1. Tekniske data...

Læs mere

Arduino kursus lektion 4:

Arduino kursus lektion 4: Arduino kursus lektion 4: I denne lektion skal vi bruge et digitalt termometer til at aflæse temperaturen! Herefter skal vi tænde 3 dioder som hver indikerer forskellige temperaturer! Opgave 1: Temperatursensor

Læs mere

R100APM Premier Rower COMPUTER

R100APM Premier Rower COMPUTER R100APM Premier Rower COMPUTER 1 LCD Display 130 x 58.5mm Liquid Crystal Display PULSE Display Viser din puls per minut (bmp) SPM Display Antal træk i minuttet LEVEL Display 1~16 Modstands-niveau BRUGER

Læs mere

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen.

Sådan forbindes Arduinoen via et fumlebræt til ATTiny45 chippen. Arduino software: https://www.arduino.cc/en/main/software Klaus modeltog, det levende hus: http://www.moppe.dk/levhusel.html TV simulation: http://www.herberts-n-projekt.de/basteleien-1/belebtes-haus/

Læs mere

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

BASAL ARDUINO SÅDAN KOMMER DU IGANG MED ARDUINO, OG FORBEREDER DIG TIL KURSERNE MBHOBBY.COM AFHOLDER. BASAL ARDUINO SÅDAN KOMMER DU IGANG MED ARDUINO, OG FORBEREDER DIG TIL KURSERNE MBHOBBY.COM AFHOLDER. DETTE SELVSTUDIE ER UDVIKLET AF MARTIN GERTZ BECH, OG MÅ UDELUKKENDE BENYTTES TIL PERSONLIGE IKKE KOMMERCIELLE

Læs mere