Gå til innhold

Den lille Arduino-tråden


Anbefalte innlegg

Er det noen som har en "ferdigtygget" webserver-pakke? Jeg skal kun styre 4 releer fra en enkel nettside.

 

Ikke min kode, men en jeg har brukt et par ganger. Funker greit til relèstyring :)

//zoomkat 12-8-11
//simple button GET with iframe code
//for use with IDE 1.0
//open serial monitor to see what the arduino receives
//use the \ slash to escape the " in the html 
//address will look like http://192.168.1.102:84 when submited
//for use with W5100 based ethernet shields

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

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 1, 102 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(84); //server port

String readString; 

//////////////////////

void setup(){

  pinMode(4, OUTPUT); //pin selected to control
  //start Ethernet
  Ethernet.begin(mac, ip, gateway, subnet);
  server.begin();

  //enable serial data print 
  Serial.begin(9600); 
  Serial.println("server LED test 1.0"); // so I can keep track of what is loaded
}

void loop(){
  // Create a client connection
  EthernetClient client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();

        //read char by char HTTP request
        if (readString.length() < 100) {

          //store characters to string 
          readString += c; 
          //Serial.print(c);
        } 

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

          ///////////////
          Serial.println(readString); //print to serial monitor for debuging 

          //now output HTML data header
             if(readString.indexOf('?') >=0) { //don't send new page
               client.println("HTTP/1.1 204 Zoomkat");
               client.println();
               client.println();  
             }
             else {
          client.println("HTTP/1.1 200 OK"); //send new page
          client.println("Content-Type: text/html");
          client.println();

          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino GET test page</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");

          client.println("<H1>Zoomkat's simple Arduino button</H1>");
          
          client.println("<a href=\"/?on\" target=\"inlineframe\">ON</a>"); 
          client.println("<a href=\"/?off\" target=\"inlineframe\">OFF</a>"); 

          //client.println("<IFRAME name=inlineframe src=\"res://D:/WINDOWS/dnserror.htm\" width=1 height=1\">");
          client.println("<IFRAME name=inlineframe style=\"display:none\" >");          
          client.println("</IFRAME>");

          client.println("</BODY>");
          client.println("</HTML>");
             }

          delay(1);
          //stopping client
          client.stop();

          ///////////////////// control arduino pin
          if(readString.indexOf("on") >0)//checks for on
          {
            digitalWrite(4, HIGH);    // set pin 4 high
            Serial.println("Led On");
          }
          if(readString.indexOf("off") >0)//checks for off
          {
            digitalWrite(4, LOW);    // set pin 4 low
            Serial.println("Led Off");
          }
          //clearing string for next read
          readString="";

        }
      }
    }
  }
}
Lenke til kommentar
Videoannonse
Annonse

Det vil nok fungere, men det er ikke oppgitt kapasitet på det, hvor mye strøm det kan levere og så er det en brunstensbatteri i tillegg.

Dette da? (mulig 6V er litt i minste laget for Arduino?). Ganske stort batteri, så det blir sikkert å holde ganske lenge :-) http://www.clasohlson.com/no/Hi-Watt-batterier/36-1827

 

Kapasiteten står jo med store boksaver "HI-Watt" og "LONG LIFE" :-)

Endret av 77679857
Lenke til kommentar

Ser veldig bra ut, takk! :)

Må forresten nevne at jeg har hatt litt problemer med den koden i senere tid. Testet dette eksemplet nå og fikk skrudd LEDen på men når jeg skal skru den av blinker den av et lite øyeblikk og skrur seg på igjen. Fjernet target=\"inlineframe\" fra linken i koden og det ser ut til å fungere :)

Før:

client.println("<a href=\"/?on\" target=\"inlineframe\">ON</a>");
client.println("<a href=\"/?off\" target=\"inlineframe\">OFF</a>");

Etter:

client.println("<a href=\"/?on\">ON</a>");
client.println("<a href=\"/?off\">OFF</a>");
Lenke til kommentar

 

Ser veldig bra ut, takk! :)

Må forresten nevne at jeg har hatt litt problemer med den koden i senere tid. Testet dette eksemplet nå og fikk skrudd LEDen på men når jeg skal skru den av blinker den av et lite øyeblikk og skrur seg på igjen. Fjernet target=\"inlineframe\" fra linken i koden og det ser ut til å fungere :)

Før:

client.println("<a href=\"/?on\" target=\"inlineframe\">ON</a>");
client.println("<a href=\"/?off\" target=\"inlineframe\">OFF</a>");

Etter:

client.println("<a href=\"/?on\">ON</a>");
client.println("<a href=\"/?off\">OFF</a>");

Aha, takk! "Thanks for the heads up" som det heter på godt norsk. :)

Lenke til kommentar
Hei
Benytter anledningen vil å vise fram min veldig enkle ETS2-arduino også. Bruker ratt og da ble det så langt til tastaturet for å trykke på de knappene det ikke var plass til på rattet. Har nå F5 til F8 for å styre info-skjermen på egne knapper på en Arduino Leonardo som oppfører seg som et tastatur.
Både oppkoblingen og sketchen er veldig enkel. Det eneste jeg har gjort for å unngå prell på knappene er å vente et halvt sekund etter en knapp er trykket før sketchen går videre. Det lyser også i LED på pin 13 på arduinoen så lenge den venter. Knappene er koblet mellom jord og pinne 2, 3, 4 og 5. Alt kan selvfølgelig plasseres i en boks, men det har ikke jeg gjort.
post-76815-0-45687600-1414939827_thumb.jpg
void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(4, INPUT_PULLUP);
  pinMode(5, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  Keyboard.begin();
}

void loop() {
  if(digitalRead(2)==LOW){
    Keyboard.write(KEY_F5);
    wait();
  }
  if(digitalRead(3)==LOW){
    Keyboard.write(KEY_F6);
    wait();
  }
  if(digitalRead(4)==LOW){
    Keyboard.write(KEY_F7);
    wait();
  }
  if(digitalRead(5)==LOW){
    Keyboard.write(KEY_F8);
    wait();
  }  
}

void wait(){
    digitalWrite(13, HIGH);
    delay(500);
    digitalWrite(13, LOW);
}

Vis oss gjerne hva du lager Mr. A.

 

Lenke til kommentar

Blir nok et par bildet etterhvert i det minste. Har ordnet meg et instrumentpanel fra en bil, så sitter i grunn å venter på at det skal komme. Får se hvordan jeg velger å styre det. Såvidt jeg kan se så er det 3 måter å gjøre det på.

 

1. Om instrumentet er laget for CAN BUS kan man bruke en Arduino med et CAN BUS shield.

2. Viserne er i grunn bare steppermotorer, så man bare jobbe rundt kretsen som er der og bare styre steppermotorene.

3. Bytte ut all elektronikken og bruke servoer for viserne istedenfor. Dette blir det enkleste, men gir også dårligst resultat.

Lenke til kommentar

Da var instrumentet i hus. Er et GTI instrument fra en Golf Mk3

post-187645-0-47475900-1415063264_thumb.jpg

 

Har undersøkt litt med pinout, og det ser ikke ut som det er CAN BUS så da er den løsningen krysset ut.

 

Fant derimot 2 x 2kanals stepper motor drivere som jeg mest sansynlig kan koble opp til Arduinoen uten problemer. Men i første omgang skal jeg se om det er mulighet for å bruke den originale elektronikken slik at jeg slipper å kalibrere noe som helst.

 

Har til nå klart å få koblet opp strøm og viserne nullstiller seg automatisk. Har også fått indikatorene for blinkelys til å fungere.

 

 

Edit: Koblet en av steppermotorene opp mot en Arduino og kjørte en liten test sketch med et potmeter og det funker supert.

post-187645-0-79607000-1415072716_thumb.jpg

 

Endret av Mr. A
Lenke til kommentar
  • 3 uker senere...

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...