Gå til innhold

Den lille Arduino-tråden


Anbefalte innlegg

Videoannonse
Annonse

Uansett prøver å laste ned programmet Blink wthout delay fra eksempel menyen for å teste kortet, men det oppstår en feil ved uploading til kortet.

 

Har du valgt rett port og Arduino i menyen ?

Endret av Mr. A
Lenke til kommentar

Uansett prøver å laste ned programmet Blink wthout delay fra eksempel menyen for å teste kortet, men det oppstår en feil ved uploading til kortet.

 

Har du valgt rett port og Arduino i menyen ?

 

Trodde BlinWithoutDelay skulle få lysdioden til å lyse hele tiden,men den blinker med 1 sek mellomrom.

Har akkurat startet så er helt grønn på dette

Lenke til kommentar

Trodde BlinWithoutDelay skulle få lysdioden til å lyse hele tiden,men den blinker med 1 sek mellomrom.

Har akkurat startet så er helt grønn på dette

Hei - du har akkurat lastet ned ditt første program til Arduino'en - gratulerer!

Nå er det bare å fortsette, ta en ting om gangen så lærer du dette i en fei skal du se.

Lenke til kommentar

Uansett prøver å laste ned programmet Blink wthout delay fra eksempel menyen for å teste kortet, men det oppstår en feil ved uploading til kortet.

 

Har du valgt rett port og Arduino i menyen ?

 

Trodde BlinWithoutDelay skulle få lysdioden til å lyse hele tiden,men den blinker med 1 sek mellomrom.

Har akkurat startet så er helt grønn på dette

 

Legg ut koden så skal du nok få hjelp!

Men det er her du begynner å lære, du står nå foran et problem du må løse, og det er nettopp det programmering dreier seg om;)

Endret av Dundersalt
Lenke til kommentar

Dette finner du nok ut av.

 

Men hvis du sammen ligner koden for Blink og BlinkWithoutDelay, så vil du i brun og grunn se hva delay(1000) gjør. Den gir deg en delay på 1000ms = 1s (tipper jeg), mens du i BlinkWithoutDelay har variabelen interval =1000 som tilsvarer 1000 gitt i funksjonen delay(xxx).

Lenke til kommentar

Poenget er at ...WithoutDelay viser kode som IKKE okkuperer kontrolleren mellom hvert blink, og gjør at du i mellomtiden kan gjøre andre ting i koden. Mens den med Delay viser kode som ikke kan gjøre noe annet før det har gått 1000 ms.

 

Om du for eks lager en motorkontroller med delay(5000) hvor den for blinker et lys hvert femte sekund så vil de ikke kunne gjøre noe annet i løpet av de 5000 ms. Om du da trykker inn nødstopp rett etter siste sjekk så vil det gå tett opp mot 4 sekunder før motoren stopper. Noe som er uheldig. Derfor kan du lage koden slik at lyset blinker for hvert femte sekund, uten at det hindrer motoren i å stoppe umiddelbart.

Lenke til kommentar

Hei

har lekt meg med arduino en stund nå, og har fått laget en slags styring av arduinoen over internett

 

i åpenhetens navn vil jeg herved dele koden min =)

 

det er viktig å huske på at denne koden ikke er helt ferdig, og at hvis noen har ip-adressen din kan de styre arduinoen din. det kan være lurt å legge til en passordboks for å forhindre dette.

 

 

 

 //*******************************

#include <SPI.h>
#include <Ethernet.h>

/*
Simple Ethernet Test
Arduino server outputs simple text to browser
and controlling LED with simple checkbox

The circuit:
* Arduino Duemilanove
* Arduino Ethernet shield
* LED connected to GND and digital pin 4 via resistor
By Minde
http://www.sciencprog.com/

**************************************************************
*  Edited by Haavard GJ to work in version 0021              *
*  Thanks to PaulS for the big help on getting this to work  *
**************************************************************
*/


byte    mac[] =     { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };   //physical mac address
byte    ip[] =      { 192, 168, 2, 110 };                     // ip in lan
byte    gateway[] = { 192, 168, 2, 1 };                       // the IP of the router or acsesspoint
byte    subnet[] =  { 255, 255, 255, 0 };                     //subnet mask (i dont think this is neccesary
Server  server(80);                // server port (change this if you are having a local webserver else than the arduino)
int     ledPin = 4;                // LED pin
int     heatpin = 5;               // Heating *relay* (change this if you want)
int     lightpin = 6;              // lights
int     sensorPin = A0;            // analog in 0 for testing
int     sensorValue = 0;           // integer for the analog sensor
String  readString = String(30);   // string for fetching data from address
boolean LEDON = false;             // LED status flag
boolean HEATON = false;            // Heat status flag  (add more status flags if you need more outputs)
boolean LIGHTON = false;           // lights *test* 

void setup()
{    
 Serial.begin(57600); //enable serial datada print
 Ethernet.begin(mac, ip, gateway, subnet); //start Ethernet

 pinMode(ledPin, OUTPUT); //Set pin 4 to output
 pinMode(heatpin, OUTPUT);
 Serial.print("Starting server"); //for debugging

 sensorValue = analogRead(sensorPin); 
}

void loop(){

 Client client = server.available();  // Create a client connection
   if (client) {
     while (client.connected()) {
       if (client.available()) {

         char c = client.read();

       if (readString.length() < 30) { //read char by char HTTP request
         readString.concat(c); } //store characters to string

       Serial.print(c); //output chars to serial port for debugging




       if (c == '\n') { //if HTTP request has ended

         Serial.println("");
         Serial.println(readString); // print for debugging
         Serial.println("");
         int Le = readString.indexOf("L="); // led         here is a key component of where 
         int He = readString.indexOf("H="); // heat        the status is being read by the arduino
         int V = readString.indexOf("V"); // light
         Serial.print("L= position: ");
         Serial.println(Le);
         Serial.print("H= position: ");
         Serial.println(He);
         Serial.print("V= position: ");
         Serial.print(V);






         //lets check if LED should be lighted
         if (Le > 1){

         if (readString.substring(Le,(Le+3)) == "L=1") { //led has to be turned ON
             digitalWrite(ledPin, HIGH); // set the LED on
             Serial.println("ledpin paa"); // debugging
             LEDON = true; 
         }

         if (readString.substring(Le,(Le+3))== "L=0") {
           //led has to be turned OFF
           digitalWrite(ledPin, LOW); // set the LED OFF
           Serial.println("ledpin av"); //debugging
           LEDON = false; 
          }}

          if (He > 1){ 

         if (readString.substring(He,(He+3)) == "H=1") { //heat has to be turned ON
             digitalWrite(heatpin, HIGH); // set the heat on
             Serial.println("heatpin paa");//debug
             HEATON = true; 
         }

         if (readString.substring(He,(He+3)) == "H=0") {
           //heat has to be turned OFF
           digitalWrite(heatpin, LOW); // set the heat OFF
           Serial.println("heatpin av"); //debug
           HEATON = false; 
          }}

           if (V > 1){ 

         if (readString.substring(V,(V+3)) == "V=1") { //light has to be turned ON
             digitalWrite(lightpin, HIGH); // set the heat on
             Serial.println("lys paa pin 6");//debug
             LIGHTON = true; 
         }

         if (readString.substring(V,(V+3)) == "V=0") {
           //light has to be turned OFF
           digitalWrite(lightpin, LOW); // set the heat OFF
           Serial.println("lys av"); //debug
           LIGHTON = false; 
         }}



 client.println("HTTP/1.1 200 OK"); //output HTML data starting with standart header
 client.println("Content-Type: text/html");
 client.println();
 client.print  ("<body style=background-color:white>"); //set background to white

 // HTML Code

 client.println("<font color=’red’><h1>Arduino Remote control</font></h1>");//send first heading

 client.println("<font color=’blue’ size=’5′>Analog input 0: "); //print analog in to the browser


 sensorValue = analogRead(sensorPin);


 client.print(sensorValue);//Analog input. 
 Serial.print(sensorValue);

 client.println("<br />");//some space between lines

 //controlling led via checkbox
 client.println("<h1>LED control</h1>");

 // address will look like http://192.168.1.110/?L=1 when submited
 // this line will give the radiobuttons that give the input
 client.println("<form method=get name=LED> <input type='checkbox' name='L' value='1'>LED<br><br><input type='checkbox' name='H' value='1'>HEAT<br><br><input type='checkbox' name='V' value='1'>Light <br><input type=submit value=submit></form>");
 client.println("<br />");

 //printing LED status
 client.print("<font size=’4′>LED status: ");
 if (LEDON == true) {
    client.println("<font color='green' size='4'>ON</font>"); 
    Serial.print("led on pin 4");
  }
  else {
   client.println("<font color='red' size='4'>OFF</font>");
   Serial.println("Led off pin 4");
  }

 client.print("<br />");

//printing LED status
 client.print("<font size=’4′>Heatpin status: ");
 if (HEATON == true) {
    client.println("<font color='green' size='4'>ON</font>"); 
    Serial.print("Heat on pin 5");
  }
  else {
   client.println("<font color='red' size='4'>OFF</font>");
   Serial.println("Heat off pin 5");
  }
  client.print("<br />");

    client.print("<font size=’4′>Light status: ");
 if (LIGHTON == true) {
    client.println("<font color='green' size='4'>ON</font>"); 
    Serial.print("light on pin 6");
  }
  else {
   client.println("<font color='red' size='4'>OFF</font>");
   Serial.println("light off pin 6");
  }



 client.println("</body></html>");


readString=""; //clearing string for next read

client.stop(); //stopping client

Serial.println("stopped client"); // for debugging

}}}}}  

 

 

Lenke til kommentar
  • 2 uker senere...

Har akkurat kjøpt meg en Arduino Mega med ATmega1280 brikka som jeg skal bruke i bilen min.

Kjøpte den egentlig kun for å bruke den som volumkontroll og noen enkle knapper til min fremtidige Carputer da det kun blir en skjerm med touch som er tungvint når man kjører.

Etter kjøp starta tannhjula i hue å knirke litt, tenkte jeg kunne bruke den til å detektere forskjellige ting på bilen og vise den informasjonen visuelt på en 8" "PC" skjerm.

Kommer etterhvert til å trenge masse hjelp til kode da jeg er nesten helt grønn på det, det jeg kan litt av er C++ (eller er det bare C ?), uansett trenger input på hva jeg kan bruke den til. Det jeg har funnet ut til nå er at den detekterer hjulspinn på hjula og om de låser seg når jeg bremser. Har en eldre bil uten ABS og alt annet eletronisk tull. Kom gjerne med forslag til sensorer jeg kan bruke for å få dette til å fungere.

Overvåking av lufttrykk i dekka blir uaktuelt da dette blir for avansert og for unødvendig.

Vet at det meste er mulig, bare man setter fantasien til, eks. automatiske vindusviskere +++

Kommer til å kjøpe egen Autronic (Motorstyring) så alt av overvåking av motor får jeg fra denne så det trenger jeg ikke.

Vet jeg også kommer til å koble til noen akseleromtere for å måle G-krefter i alle retninger foran og bak i bilen.

 

 

Noen gode idéer?

Lenke til kommentar

Har noen av dere drept arduinoen deres noen gang? Sitter og vil kjøpe, og ser at den med dip pakke på er utsolgt mange steder, men de har smd modellen.

 

Er det en bakdel å ikke kunne skifte ut pakken? Kan pakken brukes alene når den er ferdigprogrammert, slik at jeg f.eks kan koble den til et prosjekt, og bruke arduinoen til noe annet med en ny dip pakke på?

Lenke til kommentar

Jeg har ikke drept noen av mine. Det skjer vel lettest ved å brenne feile fuses, som man ikke trenger hvis man bruker Arduino IDEet.

 

Jeg kjøpte Diecimila med 168, og nå har jeg oppgradert til 328, slik at jeg får dobbelt med plass.

 

Pakken kan brukes som standalone.

Lenke til kommentar

Har noen av dere drept arduinoen deres noen gang? Sitter og vil kjøpe, og ser at den med dip pakke på er utsolgt mange steder, men de har smd modellen.

 

Er det en bakdel å ikke kunne skifte ut pakken? Kan pakken brukes alene når den er ferdigprogrammert, slik at jeg f.eks kan koble den til et prosjekt, og bruke arduinoen til noe annet med en ny dip pakke på?

Jeg har ødelagt 2 stk av mine arduino DIP IC'er (antakelig statisk elektrisitet tenker jeg) så det er definitivt en fordel med DIP varianten slik at man bare kan bytte ut til en ny billig AWR328 med arduino boothloader. Pluss selvfølgelig at du kan bruke den alene, men da trenger du en ekstern krystall eller resonator i tilegg (siden den interne har lavere klokkehastighet enn det som brukes på arduino kortet og arduino bruker dermed en ekstern kilde for klokkepuls)

Endret av flesvik
Lenke til kommentar

Da har jeg handlet en Arduino Uno, og en rekke diverse komponenter, for å leke meg med den.

 

La inn følgende handleliste hos futurlec:

 

 

3x 74HC04 - Hex Inverter

3x 74HC138 - 3 to 8 Decoder/Demultiplexer

10x 74HC164 - 8-bit Serial Shift Register (Har en plan om en 8x8x8 LED cube, så trenger et par av disse....)

10x BD135 NPN Power Transistor

1x Breadboard

4x Red-Green 3mm Round LED

4x Blue Ultrabright 5mm Round LED

1x Red 8x8 Square LED Matrix Display

30x 1.0kohm 1/4W 5% Carbon Film Resistor

50x 100ohm 1/4W 5% Carbon Film Resistor

4x Red-Green-Blue 5mm LED

8x Small Black Tactile Switch

4x Raised Tactile Switch

4x Blue Tactile Switch Button

4x Red Tactile Switch Button

 

 

Tror det skal holde til å bli kjent med arduinoen, så får jeg heller handle inn til konkrete prosjekter senere...

Nå må jeg bare skaffe litt koblingsledning. Har dere forslag til hva jeg kan bruke?

Lenke til kommentar

Blir AWG30 for tynt til breadboards, eller er det passe?

 

Tenker AWG30 kan være nice dersom jeg lager noe mer permanent på et protoboard :p

22AWG er passe for breadboards. Det kan du kjøpe her:

http://www.sparkfun.com/categories/141

PS ikke kjøp stranded. For det er flerleder ledning som er umulig å putte inn i breadboards (med mindre du fortinner endene)

 

 

Så det er bare å kjøpe de fargene du vil ha av "Hook-up Wire" eller evt en pakke med "Jumper Wires" (men etter min erfaring ser det helt jævlig ut med "jumper wires" som blir en stor ball med kaos med ledninger, mens med "Hook-up Wire" kan du klippe til riktig lengde og legge ned ledningene langs brettet for at det skal bli mer oversiktelig og ser mye bedre ut)

Endret av flesvik
Lenke til kommentar

Hmm. Har fått veldig stor interesse for Aurdino nå i det siste.

Kan noen anbefale en plass hvor jeg kan kjøpe slike "Starter kits" ? Til rundt 1000,- slik at jeg får en del ting jeg kan leke meg med i starten.

 

Edit: Fant frem til denne nå http://www.sparkfun.com/products/10339

Regner med den starter kitten kan anbefales? Bare synd de ikke har på lager :whistle:

Endret av Merko.
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...