Pages: [1]   Go Down
Author Topic: Arduino Uno mit offizellem Wifi shield LED Ansteuern  (Read 1235 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Zusammen

Wie kann ich mit dem offiziellen Wifi Shield von Arduino und einem Arduino Uno eine LED einschalten?

Ich habe bereits alles ausprobiert mit Ardumote, OSCtouch und mit Webserver. Jedoch finde ich immer nur Code Samples mit Ethernet shield, diese habe ich versucht anzupassen an die Wifi lib. Jedoch hat es bis jetzt noch nicht funktioniert. Kompilieren und Upload funktioniert immer, jedoch macht der Arduino nicht was er soll.

Hat jemand von euch erfahrung mit dem offizellen Wifi Shield welches seit kurzem Erhältlich ist?

Gruss kuppi
« Last Edit: September 30, 2012, 02:18:08 pm by kuppi » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Niemand eine Idee?
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Poste doch mal den Code, den Du schon hast und der sich zwar compilieren und auf den Arduino übertragen läßt, aber noch nicht macht was er soll.
Ist denn Dein Arduino mit dem Shield per WLAN wenigstens erreichbar (ping), oder fehlt es da schon?
Mario.

Edit: Ich hab gerade mal geschaut, bei den Beispielen ist doch ein Webserver-Example dabei, wo ist das Problem das anzupassen?
« Last Edit: October 01, 2012, 04:02:20 am by mkl0815 » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hier der Code:

//Werbserver funktioniert, jedoch Ausgang geht nicht auf on

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "ixv-90240";                                                   
char pass[] = "g65y-j31q-qgje-qsjf"; 

WiFiServer server(80);
int z=0;
int Pin0 = 0;
int Pin1 = 1;
int Pin2 = 2;
int Pin3 = 3;

String readString = String(100);      // string for fetching data from address
boolean Pin0ON = false;                  // Status flag
boolean Pin1ON = false;
boolean Pin2ON = false;                  // Status flag
boolean Pin3ON = false;


void setup(){
WiFi.begin(ssid, pass);
delay(10000);
server.begin();
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);

Serial.begin(9600); }

void loop(){

  if(z==0)
  {
  IPAddress ip = WiFi.localIP();                                              //Variable ip vom Typ IPAdress erhält die IP Adresse von Wifishield
  Serial.print("IP Adresse: ");                                               //Text "IP Adresse:" wird an Konsole gesendet
  Serial.println(ip);
  z=1;
  }
// Create a client connection
WiFiClient 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("0=ein") >-1) {
 digitalWrite(Pin0, HIGH);
 Serial.println("Pin 3 eingeschaltet!");
 Pin0ON = true;
}
if(readString.indexOf("0=aus") >-1){
 digitalWrite(Pin0, LOW);
 Serial.println("Pin 0 ausgeschaltet!");
 Pin0ON = false;
}
if(readString.indexOf("1=ein") > -1) {
 digitalWrite(Pin1, HIGH);
 Serial.println("Pin 1 eingeschaltet!");
 Pin1ON = true;
}
if(readString.indexOf("1=aus") > -1){
 digitalWrite(Pin1, LOW);
 Serial.println("Pin 1 ausgeschaltet!");
 Pin1ON = false;
}
///////////

if(readString.indexOf("2=ein") > -1) {
 digitalWrite(Pin2, HIGH);
 Serial.println("Pin 2 eingeschaltet!");
 Pin2ON = true;
}
if(readString.indexOf("2=aus") > -1){
 digitalWrite(Pin2, LOW);
 Serial.println("Pin 2 ausgeschaltet!");
 Pin2ON = false;
}
if(readString.indexOf("3=ein") > -1) {
 digitalWrite(Pin3, HIGH);
 Serial.println("Pin 3 eingeschaltet!");
 Pin3ON = true;
}
if(readString.indexOf("3=aus") > -1){
 digitalWrite(Pin3, LOW);
 Serial.println("Pin 3 ausgeschaltet!");
 Pin3ON = false;
}
//////////
if(readString.indexOf("allon=Alles+ein") > -1){
 digitalWrite(Pin0, HIGH);
 digitalWrite(Pin1, HIGH);
 digitalWrite(Pin2, HIGH);
 digitalWrite(Pin3, HIGH);
 
 Serial.println("Alles eingeschaltet");
 
 Pin0ON = true;
 Pin1ON = true;
 Pin2ON = true;
 Pin3ON = true;
 }
//////////
if(readString.indexOf("alloff=Alles+aus") > -1){
 digitalWrite(Pin0, LOW);
 digitalWrite(Pin1, LOW);
 digitalWrite(Pin2, LOW);
 digitalWrite(Pin3, LOW);
 
 Serial.println("Alles ausgeschaltet");
 
 Pin0ON = false;
 Pin1ON = false;
 Pin2ON = false;
 Pin3ON = false;
 }
 
//--------------------------HTML------------------------
client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println();

client.print("<html><head>");

client.print("<title>Poldis Arduino Webserver in Andreas Version</title>");

client.println("</head>");


client.println("Poldis Arduino Webserver in Andreas Version");
//Tabelle
client.println("<table border=1 width=500 cellpadding=1>");

    client.println("<tr><td>Ausgang 0<br /></td>");
 
    client.println("<td><form method=get><input type=submit name=0 value='ein'></form></td>");
 
    client.println("<td><form method=get><input type=submit name=0 value='aus'></form></td>");
 
    if (Pin0ON)
     client.println("<td>ON</td>");
    else
     client.println("<td>OFF</td>");
 
  client.println("</tr>");


    client.println("<tr><td>Ausgang 1</td>");
 
    client.println("<td><form method=get><input type=submit name=1 value='ein'></form></td>");
 
    client.println("<td><form method=get><input type=submit name=1 value='aus'></form></td>");
 
    if (Pin1ON)
      client.println("<td>ON</td>");
    else
      client.println("<td>OFF</td>");
   
  client.println("</tr>");

 
     client.println("<tr><td>Ausgang 2</td>");
 
    client.println("<td><form method=get><input type=submit name=2 value='ein'></form></td>");
 
    client.println("<td><form method=get><input type=submit name=2 value='aus'></form></td>");
 
    if (Pin2ON)
      client.println("<td>ON</td>");
    else
      client.println("<td>OFF</td>");
   
  client.println("</tr>");

   
     client.println("<tr><td>Ausgang 3</td>");
 
    client.println("<td><form method=get><input type=submit name=3 value='ein'></form></td>");
 
    client.println("<td><form method=get><input type=submit name=3 value='aus'></form></td>");
 
    if (Pin3ON)
      client.println("<td>ON</td>");
    else
      client.println("<td>OFF</td>");
   
  client.println("</tr>");

client.println("</table>");
 
    client.println("<table><tr><td><form method=get><input type=submit name=allon value='Alles ein'></form></td>");
    client.println("<td><form method=get><input type=submit name=alloff value='Alles aus'></form></td></tr>");

client.println("</table>");

client.println("</body></html>");


//clearing string for next read
readString="";

//stopping client
client.stop();
}}}}}



Der Webserver funktioniert, jedoch lassen sich die Ausgänge nicht Ansteuern.
Logged

Switzerland
Offline Offline
Faraday Member
**
Karma: 108
Posts: 5150
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Der Webserver funktioniert, jedoch lassen sich die Ausgänge nicht Ansteuern.

Du müsstest schon etwas genauer werden. Welche URLs schickst Du an den Arduino und was ist die Reaktion auf der seriellen Schnittstelle? Was hast Du an den Ausgängen angeschlossen, um den Status zu prüfen? Welche Teile des Codes hast Du von der Ethernet-Version ändern müssen?

Und verwende die Code-Tags (der #-Button im Formular), damit der Code besser lesbar ist und vor allem nicht vom Tag-Parser verfremdet wird.
Logged

Offline Offline
Edison Member
*
Karma: 21
Posts: 1419
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Was mir auffällt ist, das Du Pin 0 und Pin 1 verwendest. Gleichzeitig aber auch die Serielle Schnittstelle. Das beisst sich aber, den Pin 0 und Pin 1 sind RX und TX der seriellen Konsole.
Was ist denn an Deine Pin 0 bis Pin 3 angeschlossen, um zu sehen ob der Webserver schaltet. Hast die angeschlossenen "Geräte" (LED oder was auch immer) mal mit einem einfachen Sketch getestet, das tatsächlich beim Schalten der Pins etwas passiert?
Mario.
Logged

Bavaria
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Kuppi,

habe genau die selben Probleme wie Du.

Habe bereits um die 10 Ethernetsketches versucht auf Wifi umzuschreiben, immer mit mäßigem Erfolg.

Es funktionierte immer nur teilweise.

Kann Dir gerne meine Codes posten, falls es interessiert.

Hast Du bereits Fortschritte erzielt?

Freue mich immer über neue Codeideen.

Viele Grüße.

Rokitz.
Logged

Thank you for all help!

Pages: [1]   Go Up
Jump to: