Ein Farbenspiel: RGB-LED über das Internet steuern

Als kleines Projekt habe ich meinem Arduino Ethernet beigebracht eine RGB-LED, auf meinem Schreibtisch, nach euren Wünschen leuchten zu lassen.

Hier seht ihr den aktuellen Status der LED und könnt diesen auch verändern.

Arduino RGB-LED via Internet steuern



Zutaten:
1 Webseite mit Buttons
1 Arduino Ethernet
1 RGB-LED (Anleitung)

Webseite:
Ich habe eine einfache PHP Datei erstellt die bei der Wahl einer Farbe den Wert in eine XML Datei schreibt. Diese Datei wird auch von Script selbst ausgelesen um den aktuellen Status anzuzeigen.


Arduino:
Der Arduino überprüft das XML File alle 5 Sekunden und schaltet die RGB-LED je nach XML Inhalt. Für die Steuerung der RGB-LED seht euch den entsprechenden Artikel an.

Viel Spaß beim Steuern meiner LED oder vielleicht auch bald bei eurer eigenen.

#include 
#include 
#include 

byte mac[] = {  EURE Arduino MAC Adresse };
IPAddress ip(192,168,0,99);

char serverName[] = "www.apfelkern.info";

int ledr = 7;
int ledg = 6;
int ledb = 5;

EthernetClient client;
TextFinder finder(client);

void setup() {

  pinMode(ledr, OUTPUT);
  pinMode(ledg, OUTPUT);
  pinMode(ledb, OUTPUT);

  Serial.begin(9600);

  Serial.println("Attempting to get an IP address using DHCP:");
  if (!Ethernet.begin(mac)) {
    // if DHCP fails, start with a hard-coded address:
    Serial.println("failed to get an IP address using DHCP, trying manually");
    Ethernet.begin(mac, ip);
  }
  Serial.print("My address:");
  Serial.println(Ethernet.localIP());
}

void loop() {

  check_farbe();
  delay(5000);

}

void check_farbe(){

char farbe[10];

connecttoServer();

if (client.connected()) {

 if (finder.find(""))  {
   finder.getString("","",farbe,10);

String farbeString = farbe;
Serial.println(farbeString);

  if (farbeString == "Rot") {
   Serial.println("Red");
   digitalWrite(ledr, HIGH);
   digitalWrite(ledg, LOW);
   digitalWrite(ledb, LOW);
  }

  else if (farbeString == "Gruen") {
   Serial.println("Green");
   digitalWrite(ledr, LOW);
   digitalWrite(ledg, HIGH);
   digitalWrite(ledb, LOW);
  }

  else if (farbeString == "Blau") {
   Serial.println("Blue");
   digitalWrite(ledr, LOW);
   digitalWrite(ledg, LOW);
   digitalWrite(ledb, HIGH);
  }

  else if (farbeString == "Aus") {
   Serial.println("Aus");
   digitalWrite(ledr, LOW);
   digitalWrite(ledg, LOW);
   digitalWrite(ledb, LOW);
  }

client.stop();
client.flush();

}
else {
Serial.println("Couldn't find Farbe");
}
}

else {
Serial.println("Keine Verbindung");
}
}

void connecttoServer(){
Serial.println("connecting to server...");
 if (client.connect(serverName, 80)) {
    Serial.println("making HTTP request...");
    client.println("GET http://www.apfelkern.info/wp-content/Eigene_Dateien/RBG-LED/farbe.xml HTTP/1.0");
    client.println();
    Serial.println("Got HTTP!");
 }
}