da ich noch zu den Neulingen was das Arduino angeht habe ich mal eine Frage !
das Ding an der sache ist das ich mir das eine oder andere angesehen habe, mir dann die Libary und das Projekt dazu geladen habe und dann festgestellt habe das es nicht Funktioniert.
Beispiel in dem einen Sketch lese ich das
Eins habe ich rausgefunden , das sketch wurde noch mit einer version vor 1.0 geschrieben ...
hatte die meldung voll übersehen -> Seit Arduino 1.0 heißt die Klasse "Server" in der Ethernet-Library "EthernetServer" umbenannt.
jetzt habe ich mir mal die arbeit gemacht das alles soweit umzu schreiben das keine fehlermeldung mehr kommt aber dennoch funzt es nicht
hier mal der Code
/*
Original Version by Poldi
modified by Katsu
the functions readString.append() and readString.contains() where replaced
*/
#include <SPI.h> // insert by Katsu
// #include <WString.h> removed by Katsu
#include <Ethernet.h>
byte mac[] = { 0x54, 0x55, 0x58, 0x10, 0x00, 0x24 }; // entspricht einer MAC von 84.85.88.16.0.36
byte ip[] = { 192, 168, 222, 177 }; // IP-Adresse
byte gateway[] = { 192, 168, 222, 52 }; // Gateway
byte subnet[] = { 255, 255, 255, 0 };
EthernetServer server(80);
int Pin3 = 3;
int Pin4 = 4;
int Pin5 = 5;
int Pin6 = 6;
String readString = String(100); // string for fetching data from address
boolean Pin3ON = false; // Status flag
boolean Pin4ON = false;
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
Serial.begin(9600); }
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.append(c); removed by Katsu
readString = readString + c; // insert by Katsu
// very simple but it works...
}
Serial.print(c); //output chars to serial port
if (c == '\n') { //if HTTP request has ended
// readString.contains() replaced with readString.indexOf(val) > -1 by Katsu
// indexOf locates a character or String within another String.
// Returns the index of val within the String, or -1 if not found.
if(readString.indexOf("3=einschalten") > -1) {
digitalWrite(Pin3, HIGH);
Serial.println("Pin 3 eingeschaltet!");
Pin3ON = true;
}
if(readString.indexOf("3=ausschalten") > -1){
digitalWrite(Pin3, LOW);
Serial.println("Pin 3 ausgeschaltet!");
Pin3ON = false;
}
if(readString.indexOf("4=einschalten") > -1) {
digitalWrite(Pin4, HIGH);
Serial.println("Pin 4 eingeschaltet!");
Pin4ON = true;
}
if(readString.indexOf("4=ausschalten") > -1){
digitalWrite(Pin4, LOW);
Serial.println("Pin 4 ausgeschaltet!");
Pin4ON = false;
}
if(readString.indexOf("all=Alles+aus") > -1){
digitalWrite(Pin3, LOW);
digitalWrite(Pin4, LOW);
Serial.println("Alles ausgeschaltet");
Pin3ON = false;
Pin4ON = false;
}
//--------------------------HTML------------------------
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
client.print("<html><head>");
client.print("<title>Arduino Webserver Poldi</title>");
client.println("</head>");
client.print("<body bgcolor='#444444'>");
//---Überschrift---
client.println("
<hr />");
client.println("<h1><div align='center'><font color='#2076CD'>Arduino Webserver 1.0 by Poldi</font color></div></h1>");
client.println("<hr />
");
//---Überschrift---
//---Ausgänge schalten---
client.println("<div align='left'><font face='Verdana' color='#FFFFFF'>Ausgänge schalten:</font></div>");
client.println("
");
client.println("<table border='1' width='500' cellpadding='5'>");
client.println("<tr bgColor='#222222'>");
client.println("<td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang 3
</font></td>");
client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=3 value='einschalten'></form></td>");
client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=3 value='ausschalten'></form></td>");
if (Pin3ON)
client.println("<td align='center'><font color='green' size='5'>ON");
else
client.println("<td align='center'><font color='#CFCFCF' size='5'>OFF");
client.println("</tr>");
client.println("<tr bgColor='#222222'>");
client.println("<td bgcolor='#222222'><font face='Verdana' color='#CFCFCF' size='2'>Ausgang 4
</font></td>");
client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=4 value='einschalten'></form></td>");
client.println("<td align='center' bgcolor='#222222'><form method=get><input type=submit name=4 value='ausschalten'></form></td>");
if (Pin4ON)
client.println("<td align='center'><font color='green' size='5'>ON");
else
client.println("<td align='center'><font color='#CFCFCF' size='5'>OFF");
client.println("</tr>");
client.println("</tr>");
client.println("</table>");
client.println("
");
client.println("<form method=get><input type=submit name=all value='Alles aus'></form>");
client.println("</body></html>");
//---Ausgänge schalten---
//clearing string for next read
readString="";
//stopping client
client.stop();
}}}}}
schade das einige nicht mal in denn versionen da was schreiben das es vor der oder nach der 1.0 version ist
PS: aber nun habe ich wieder was dazugelernt, es gibt abweichene versionen
Die IDE hat im "Tools"-Menü einen "Auto Format"-Punkt. Dieser formatiert Quelltexte so, dass sie lesbar werden (Deiner ist es absolut nicht).
Dieser Sketch verwendet die String-Klasse. Diese Klasse ist für einen Microcontroller denkbar schlecht geeignet, das sie den Speicher in Null-Komma-Nichts fragmentiert und es dann zu Speicherproblemen kommt, obwohl eigentlich gar nicht soviel verbraucht wurde. Zudem haben die aktuellen Versionen der IDE (bzw. der dazu gehörenden C-Bibliothek) einen Fehler, der zu Memory-Leaks führt, was Sketche relativ bald sterben lässt bzw. zu Fehlfunktionen führt.
Verwende die String-Klasse also nicht und nimm dafür char-Arrays (also C-Strings) mit den dazugehörigen Funktionen (beispielsweise strchr() anstatt String.indexOf()).
hätte da noch nee kleine frage, hat einer ein kleines sketch wo man drauf auf bauen kann
ich gehöre leider nicht zu dennen die lesen sondern Learning by doing machen !
hätte da noch nee kleine frage, hat einer ein kleines sketch wo man drauf auf bauen kann
Für Deine Problemstellung (soweit Du sie schon kund getan hast) existieren viele Beispiele im Netz. Eine kurze Google-Suche hat z.B. diesen Sketch zutage gefördert: