Arduino.
- Detaljer
- Kategori: Uncategorised
- Publiceret: Mandag, 2. December 2019 17:03
- Visninger: 10559
Artikelindeks
Start med arduino.
Jeg har købt et starter kit til arduino, jeg syntes at det er letter og mere tilgængelig end pic, for at komme igang har jeg købt et starter kit til omkring 800,- kr, her er hvad du skal bruge for at kunne komme igang.
Lad os se hvad der er i sættet.
Der er lidt Led dioder i forskellige farver, et par foto transistor,en servo, en motor, et par transistor, lidt knapper, og et LCD Display, og så et lille bredboard. Så er der en lille bog, samt en mini cd med div kode.
Lad os få hentet programmet som vi skal bruge til at skrive vores kode i, det kan hentes på nettet www.Arduino.cc, download og install det på din pc. Et andet smart program som vi skal hente er Fritzzing, det hentes på http://fritzing.org/home/, det bruger man til at vise sin opstilling, som vist her.
Med fritzing kan man også lave print layout, gemme sin kode og meget mere. Lad og komme i gang med vores første kode, vi skal have en Led til at blinke, prøv at åben Arduino programmet. så skulle det se sådan ud.
når vores board er sat til USB porten, skal vi lige finde ud af om den er på den rigtige port, klik på værktøjer, under fanen Board, vælger du dit Arduino Uno, og under port vælger du den port som den er sat til på, ellers vil programmet ikke snakke med din computer.
Når vi kikker på dette vindue, så er der to kommandoer som altid skal være der, det er void setup, og void loop. Void setup køre altid 1 gang når man sætter strøm på sit board, void loop derimod køre igen og igen, så er det sat på plads.
Lad os prøve at skrive denne kode.:
/* BLINK AF LED PÅ PIN 13 // det er en god ide at lave en overskrift af vores program, det er letter at finde ud af bagefter. */ // DENNE FUNKTION KØRE 1 GANG NÅR DU HAR SAT STRØM PÅ BORDET void setup() { pinMode(13, OUTPUT); // install af led pin på port 13 } // LOOP FUNKTIONEN KØRE IGEN OG IGEN...I ALT EVIGHED void loop() { digitalWrite(13, HIGH); // TÆND FOR PORT 13 delay(1000); //VENT I ET SEKUND digitalWrite(13, LOW); // SLUK FOR PORT 13 IGEN delay(1000); // VENT I ET SEKUNDT }
Nu kan vi prøve at trykke på fluebenet, så vil programmet se om du har skrevet det rigtig, det er yderst vigtig at det er skrevet rigtig ellers vil den ikke køre, om det så bare er en komma fejl, så vil den ikke køre, tryk nu på pilen ved siden af for at få lagt data over på dit Arduino board, nu vil du se dem Led som er onboard vil blinke med 1 sec. mellem rum.
I Fritzing vil det se sådan ud.
Hvis vi nu vil have 2 stk led til at blinke, 1 på port 13, og så tilføjer vi 1 på port 12, det vil se sådan her ud.
/* BLINK AF LED PÅ PIN 12, 13 */ // DENNE FUNKTION KØRE 1 GANG NÅR DU HAR SAT STRØM PÅ BORDET void setup() { pinMode(12, OUTPUT); // install af led pin på port 12 pinMode(13, OUTPUT); // install af led pin på port 13 } // LOOP FUNKTIONEN KØRE IGEN OG IGEN...I ALT EVIGHED void loop() { digitalWrite(12, HIGH); // TÆND FOR PORT 12 delay(1000); //VENT I ET SEKUND digitalWrite(12, LOW); // SLUK FOR PORT 12 IGEN delay(1000); // VENT I ET SEKUNDT digitalWrite(13, HIGH); // TÆND FOR PORT 13 delay(1000); //VENT I ET SEKUND digitalWrite(13, LOW); // SLUK FOR PORT 13 IGEN delay(1000); // VENT I ET SEKUNDT }
du kan her se hvordan det skal kobles på dit breadboard.
sådan gøres det, prøv selv at få flere Led's til at blinke du har jo porte nok, du kan
også lave om på rækkefølgen og tiden.
S.O.S Morse kode.
Dette Projekt ligner det første som vi lavede, hvor vi bare brugte delay til at ænder om det skulle være kort eller lang
Dette kan gøres på en meget mere overskuelige måde.
Vi skal se på en ny kommando som hedder FOR , vi kan se at FOR gør det at LED ikke kun blinker 1 gang, men helle 3 gange, for (int x=0; x<3; x++) {, det er dette stykke kode der gør at LED blinker 3 gange.
Hvis man skal forklarer hvad det så betyder, så har vi lavet en variabel der hedder X, dette X har vi sat til værdien 0
Vi sætter derefter en betingelse for at afgøre hvor mange gange de koder i sløjfen udføres X<3
Koden i sådan en løkke vil altid udføre en gang lige gyldigt hvad tilstanden er indstillet til.
Dette bruges til at sammenligne to værdier. Symbolerne anvendes er: -== (Lig med)! = (Ikke lig med)<(Mindre end)> (Større end)<= (Mindre end eller lig med)> = (Større end eller lig med)I vores kode, vi sammenligner x med værdien på 3,tilser om den er mindre end 3. Hvis x er mindre end 3, vil koden i blokken vil blive gentage igen. Den endelige opgørelse er x ++dette er en erklæring for at øge værdien af x med 1. Vi kunne også have skrevet x = x + 1; som ville tildele x værdien af x + 1. Du kan gøre det med simpel matematik ved anvendelse af disse symboler +,-, * Og / (plus, minus, multiplikation og division) eks. 1 + 1 = 23 - 2 = 12 * 4 = 88/2 = 4 Så vores løkke initialisere den værdi af x til 3, så kører koden inden for blokken.
Hvis vi kikker på koden, kan vi se at kort ” dits” har en delay på 150 ms. Og ”dah” lang har et delay på 400 ms
// S.O.S morse blink med Lysdiode. // LED sat i digital pin 10 int ledPin = 10; // køre en gang nar der er power til Arduino void setup() { // led pin sat til output pinMode(ledPin, OUTPUT); } void loop() { // køre hele tiden // 3 dits = Korte for (int x=0; x<1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(150); // vent i 150ms digitalWrite(ledPin, LOW); // slukker led delay(100); // vent i 100ms } // 100ms pause mellem hvert tegn delay(100); // 3 dahs = Lange for (int x=0; x<1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(400); // vent i 400ms digitalWrite(ledPin, LOW); // slukker led delay(100); // vent i 100ms } // 100ms delay pause mellem hvert tegn delay(100); // 3 dits igen korte for (int x=0; x<1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(150); // vent 150ms digitalWrite(ledPin, LOW); // slukker led delay(100); // waits for 100ms } // venter lige 5 sec. og så køre vi igen delay(5000); } Fritzing vil det se sådan ud.
Nu skal du finde morse alfabedet på google, så skal du se om du kan få lysdionen til morse dit eget navn. her kan du se mit navn.
// LED sat i digital pin 10 int ledPin = 10; // køre en gang når der er power til Arduino void setup() { // led pin sat til output pinMode(ledPin, OUTPUT); } void loop() { for (int x = 0; x < 1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(200); // vent i 200ms digitalWrite(ledPin, LOW); // slukker led delay(150); digitalWrite(ledPin, HIGH); // tænder led delay(400); // vent 400ms digitalWrite(ledPin, LOW); // slukker led R = .-. delay(150); // vent 150ms digitalWrite(ledPin, HIGH); // tænder led delay(200); // vent 200ms digitalWrite(ledPin, LOW); // slukker led delay(500); // vent for 150ms } for (int x = 0; x < 1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(200); // vent i 200ms E = . digitalWrite(ledPin, LOW); // slukker led delay(500); } for (int x = 0; x < 1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(400); // vent 400ms digitalWrite(ledPin, LOW); // slukker led delay(150); // vent 150ms N = -. digitalWrite(ledPin, HIGH); // tænder led delay(200); // vent 200ms digitalWrite(ledPin, LOW); // slukker led delay(500); // vent 150ms } for (int x = 0; x < 1; x++) { digitalWrite(ledPin, HIGH); // tænder led delay(200); // vent i 200ms E = . digitalWrite(ledPin, LOW); // slukker led delay(500); } // venter lige 2 sec. og så køre vi igen delay(2000); }
Så kan vi gøre det igen med 2 led, 1 led til de korte, og anden led til de lange
// SOS Morse kode Signaler // LED sat til digital pin 10,11 int ledPin1 = 10;//dits int ledPin2 = 11;//dahs // køre en gang nar der er power til Arduino void setup() { // led pin sat til output pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); } // køre hele tiden void loop() { for (int x = 0; x < 1; x++) { digitalWrite(ledPin1, HIGH); // tænder led delay(300); // vent i 300ms digitalWrite(ledPin1, LOW); // slukker led digitalWrite(ledPin2, HIGH); // tænder led R .-. delay(500); // vent i 500ms digitalWrite(ledPin2, LOW); // slukker led digitalWrite(ledPin1, HIGH); // tænder led delay(300); // vent i 150ms digitalWrite(ledPin1, LOW); // slukker led delay(600); // vent i 600ms } // 100ms pause mellem hvert tegn delay(100); for (int x = 0; x < 1; x++) { digitalWrite(ledPin1, HIGH); // tænder led E . delay(300); // vent i 300ms digitalWrite(ledPin1, LOW); // slukker led delay(600); // vent i 600ms } // 100ms delay pause mellem hvert tegn delay(100); for (int x = 0; x < 1; x++) { digitalWrite(ledPin2, HIGH); // tænder led N -. delay(500); //vent 500ms digitalWrite(ledPin2, LOW); // slukker led digitalWrite(ledPin1, HIGH); // tænder led delay(300); // vent i 300ms digitalWrite(ledPin1, LOW); // slukker led delay(600); // waits for 600ms } for (int x = 0; x < 1; x++) { digitalWrite(ledPin1, HIGH); // tænder led E . delay(300); // vent i 300ms digitalWrite(ledPin1, LOW); // slukker led delay(600); // vent i 600ms } // venter lige 5 sec. og så køre vi igen delay(2000); }
er under vejs...