bin neu hier. Beschäftige mich seit längerer Zeit mir Mikrocontrollern. Auch mit C und C++ bin ich einigermassen vertraut. Aber mit dem Wifi Shield bin ich an meine Grenzen gestossen.
Habe versucht sämtliche Sketches die ich fürs Ethernet Shield gefunden habe irgendwie umzuschreiben, aber irgendwie hat es nicht so richtig hingehauen.
Habe einfach keinen durchschlagenden Erfolg erzielt.
Möchte praktisch den Arduino als Webserver nutzen mit Controll Buttons, Rückmeldungen und so weiter…
Möchte auch die SD Karte auf dem Wifi Shield richtig nutzen…
Zum Beispiel Daten zur SD Karte schicken bzw. von ihr holen usw…
Habe wie gesagt sehr viel experimentiert aber nie mit zufriedenstellendem Ergebnis.
Have auch nirgendwo ein Buch über das Wifi Shield gefunden, wahrscheinlich ist es noch zu neu.
Suche auf diesem Wege praktisch allen verfügbaren Code für das Wifi Shield um zu experimentieren.
Wenn es nötig ist kann ich auch einige meiner Codebeispiele posten, wie gesagt nur funktionieren sie alle nicht richtig.
Vielen Dank schon mal im Vorraus und an alle noch schöne Weihnachten und einen guten Rutsch.
habe mitlerweile ein paar Stunden mit dem Arduino Uno R3 und dem originalen WiFi Shield verbracht und habe jetzt eine einigermassen zufriedenstellende erste Lösung gefunden.
Es hakt hin und wieder mit dem Browser aber der Arduino hat halt nur 12 MHZ…
Jeder der sich irgendwie Hilfe ersieht kann gerne meinen Code benutzen und nach Herzenslust verändern. Er selbst baut auf dem WifiWebServer der beim Arduino mit dabei war auf.
Ich würde mich nach wie vor über andere Codes zum Wifi Shield freuen.
Zu Uwe: Danke für die schnelle Antwort aber unter den genannten Quellen ist leider nicht viel brauchbare Hilfe dabei.
Wie gesagt der jetztige Sketch ist ein WifiWebServer der alle analogen Ports und alle freien digitalen Ports anzeigt und 3 als Ausgänge verändern kann.
Naja schaut es euch mal an über Verbesserungen oder Kritik würde ich mich sehr freuen.
Bis dann.
Viele Grüße.
Rokitz.
Hälfte vom Code
#include <SPI.h> //for serial peripheral interface
#include <WiFi.h> //for WIFI
char ssid[] = "your network"; // your network SSID (name)
char pass[] = "your password"; // your network password
WiFiServer server(80); //standard port 80
String readString; //string for fetching data from address
int status = WL_IDLE_STATUS; //WLAN Status
void setup() {
Serial.begin(9600); //opens serial interface with a boudrate of 9600
// check for the presence of the shield:
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
}
// attempt to connect to Wifi network:
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to SSID: ");
Serial.println(ssid);
// Connect to WPA/WPA2 network.
status = WiFi.begin(ssid, pass);
// wait 5 seconds for connection:
delay(5000);
}
server.begin();
// you're connected now, so print out the status:
printWifiStatus();
}
void loop() {
// listen for incoming clients
WiFiClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
String readstring =""; //clean the string
while (client.connected()) {
if (client.available()) {
char c = client.read(); //serial interface gives out client iformation
Serial.write(c);
readstring+= c; //save the chars in readstring
if (c == '\n' && currentLineIsBlank) { // when the new client information comes in
// Button Calls
if (readstring.indexOf("toogeln6")!= -1) {digitalWrite(6, !digitalRead(6));}
if (readstring.indexOf("toogeln8")!= -1) {digitalWrite(8, !digitalRead(8));} //always, when string is part of the big string then
if (readstring.indexOf("toogeln9") != -1) {digitalWrite(9, !digitalRead(9));} //toggle the output
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close"); //from here the html code
client.println();
client.println("<!DOCTYPE HTML>");
client.print("<html><head>");
client.print("<title>KIROLABS ARDUINO WEBSERVER 2.0</title>");
client.println("</head>");
client.print("<body bgcolor='#999999'>");
client.print("<meta content='text/html; charset=ISO-8859-1'");
client.print("http-equiv='content-type'>");
client.print("<div align='center'><big><big><big><big><big>KIROLABS ");
client.print("ARDUINO WEBSERVER 2.0</big></big></big></big></big></div>");
client.print("<div align='center'><big>created ");
client.print("2012 by Robert Kitzhofer</big></div>");
client.println("
");
client.println("
"); //print analog inputs
client.print("<big>*** ANALOG INPUTS ***</big>");
client.println(F("<table border='2'>"));
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("<td>analog value ");
client.print(analogChannel);
client.print(" is ");
client.print(F(" </td><td>"));
client.print(sensorReading);
client.println("</td>");
}
client.println(F("</table>"));
client.println("
");
client.println("
"); //print digital inputs 2,3,5,
client.println("
"); //because 0,1 are for the serial interface
client.print("<big>*** DIGITAL INPUTS ***</big>"); //4 is for the sd card, 7 is handshake between
client.println(F("<table border='2'>")); //wifi and arduino an also 10-13 are in use
// so port 6,8,9 are outputs, 3 in, 3 out
pinMode(2, INPUT);
digitalWrite(2, HIGH); // turn on pull-ups
client.print(F("<td>digital input "));
client.print(2);
client.print(F(" </td><td>"));
if(digitalRead(2) == LOW)
client.print("LOW");
else
client.print("HIGH");
client.println("</td>");
pinMode(3, INPUT);
digitalWrite(3, HIGH); // turn on pull-ups
client.print(F("<td>digital input "));
client.print(3);
client.print(F(" </td><td>"));
if(digitalRead(3) == LOW)
client.print("LOW");