Go Down

Topic: Beispielprogramm für Arduino Mega2560 und Ethernet Shield gesucht (Read 6532 times) previous topic - next topic

bruderjohn

Hallo Zusammen,
Ich bin ganz neu im Arduino Umfeld.  :)
Habe gerade mein Arduino Mega 2560 und das Ethernet Shield bekommen und bin jetzt auf der Suche nach einen Beispiel oder einem Projekt das über die Netzwerkverbindung und ein einfaches Webinterface, Vom Browser des PCs einzelne Ports auf dem Mega 2650 on/off schalten kann.
Habe schon danach gegoogelt, bin aber scheinbar blind oder unfähig  =(
Ich hoffe das ich mit dieser Hilfe schneller Einblick bekomme und efektiver durchstarten kann.

Danke für Eure Hilfe

Gruss
bruderjohn

TriB

Hallo bruderjohn,

du hast doch sicherlich bereits das Arduino-Programm runtergeladen um die Sketches zu erstellen.
Dort gibt es unter:
"File" => "Examples" => "Ethernet"
einige Beispiele. Unter anderem einen Server und einen Client. Im Server enthalten ist eine Anzeige der Pins.
Damit kannst du schonmal alles wie gewünscht ausgeben.

Möchtest du zusätzlich die SD Karte auslesen (ich gehe jetzt einfach mal davon aus, dass das Ethernet-Shield das unterstützt) funktioniert der WebServer nicht mehr. Das liegt daran, dass der Server und der Kartenleser sich einen Pin (4) teilen.
Um das zu umgehen gibt es ein sehr gutes Tutorial:
http://www.ladyada.net/learn/arduino/ethfiles.html

Pins auch zu schalten funktioniert ebenfalls recht einfach anhand dieses Tutorials:
http://jleopold.de/2010/08/10/arduino-als-webserver/

Viel Erfolg bei deinen ersten Schritten!
Gruß,
Thomas

macuserpro

Also ich kann dir das hier empfehlen... du brauchst nichts weiter zu beachten außer das der Mega 3 oder 4 andere Pins verwendet und du sie deshalb nicht verwenden kannst:

Also in dem fall packst du an Pin 22 ne LEd (mit widerstand ;-)) und kannst über den Browser einfach die ip deines Arduino angeben z.b 192.168.2.100/?2 und absenden
dann geht die LED an.
sendest du 192.168.2.100/?3 geht sie aus.

mfg at_on

#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;

////////////////////////////////////////////////////////////////////////
//CONFIGURE
////////////////////////////////////////////////////////////////////////
 byte ip[] = { 192, 168, xxx, xxx };   //ip address to assign the arduino
 byte gateway[] = { 192, 168, xxx, xxx }; //ip address of the gatewa or router

 //Rarly need to change this
 byte subnet[] = { 255, 255, xxx, xxx };

 // if need to change the MAC address (Very Rare)
 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

 Server server = Server(80); //port 80
////////////////////////////////////////////////////////////////////////

void setup(){
 //Pins 10,11,12 & 13 are used by the ethernet shield <= trifft nicht auf den Mega zu

 pinMode(22, OUTPUT);


 Ethernet.begin(mac, ip, gateway, subnet);
 server.begin();
}

void loop(){

 // listen for incoming clients, and process qequest.
 checkForClient();

}

void checkForClient(){

 Client client = server.available();

 if (client) {

   // an http request ends with a blank line
   boolean currentLineIsBlank = true;
   boolean sentHeader = false;

   while (client.connected()) {
     if (client.available()) {

       if(!sentHeader){
         // send a standard http response header
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();
         sentHeader = true;
       }

       char c = client.read();

       if(reading && c == ' ') reading = false;
       if(c == '?') reading = true; //found the ?, begin reading the info

       if(reading){
         Serial.print(c);

          switch (c) {
           case '2':
             //add code here to trigger on 2
             triggerON(22, client);
             break;
           case '3':
           //add code here to trigger on 3
             triggerOFF(22, client);
             break;

         }

       }

       if (c == '\n' && currentLineIsBlank)  break;

       if (c == '\n') {
         currentLineIsBlank = true;
       }else if (c != '\r') {
         currentLineIsBlank = false;
       }

     }
   }

   delay(1); // give the web browser time to receive the data
   client.stop(); // close the connection:
 }
}

void triggerON(int pin, Client client){
//turn on a pin - Client needed just for HTML output purposes.  
 client.print("Turning on pin ");
 client.println(pin);
 client.print("<br>");

 digitalWrite(pin, HIGH);
}
 
void triggerOFF(int pin, Client client){
//turn off a pin - Client needed just for HTML output purposes.  
 client.print("Turning off pin ");
 client.println(pin);
 client.print("<br>");

 digitalWrite(pin, LOW);

}

bruderjohn

Herzlichen Dank für Eure Tips und Anregungen.

Inzwischen habe ich meinen Arduino Mega2560 zur mitarbeit bewegen können.
Anscheinend arbeitet arduino-0022 jetzt auch mit dem mega2560 ohne spezielle SPI.h zusammen.
Ein für mich interessantes Beispiele aus dem Webduino läuft zwar immer noch nicht, doch scheint das mit den Webduinoquellen zusammen zu liegen.
Aber in der startphase ist es nicht leicht solches zu erkennen und zu analysieren. besonders wenn man das ethernetshield (NKC) selbst zusammengelötet hat und noch nicht 100% sicher sein kann ob es funktioniert. Auch die bei Watterott verlinkte NKC-Bauanleitung mit den spi-Anpassungen mehr zu meiner Verwirrung beigetragen als Probleme beseitigt.

Die üblichen Startprobleme halt mit neuen Umgebungen.

Viel Grüsse und guten gelingen allen Interessierten
bruderjohn

Go Up