unterschiede in den Sketchen

Hallo,

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

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

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

EthernetServer server(80);

im anderen sketch steht das denn so , der wohlbemerkt nicht geht

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

byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);

Server server(80);

Habe ich ein denkfehler oder gibt es unterschiede irgendwo ?

grund ist das ich ein Projekt gesehen hatte das ich testen wollte und wenn ich das veriviziren wollte dann meldet er an der serverzeile einen fehler

Grund ist das ich diverse DS18b20 Temp. sensoren und schaltfunktionen auf eine web bzw. Smartfon übertragen möchte

Kann mir jemand weiterhelfen?

Danke schon mal im vorraus

hi,

ich denke, daß der zweite sketch eine andere ethernet-library benötigt, mit einem Typ "Server".
die library vom arduino braucht "EthernetServer".

gruß stefan

Hallo Stefan

danke für deine antwort

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&auml;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

Gruss

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

danke pylon

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 !

wäre nett und danke für die infos
gruss

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: