Arduino.

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);
}
 
 
 
  Med Fritzing ser det sådan ud.

 


 

er under vejs...