In dem heutigen Programm geht es nun endlich darum, Hardware über das UDP-Protokoll zu steuern. In diesem Fall wird eine LED mit einfachen Befehlen ein- und ausgeschaltet.
Hinter dem fünften Türchen befindet sich eine LED. Der passende Vorwiderstand befand sich schon im gestrigen Fach. Bauen Sie die Schaltung auf, wie es das Bild zeigt.

Das Programm:****Day5_UDPLED
! Achtung: Einige MAC-Nutzer berichten von einem Bug in dem PackerSender-Programm, welcher nicht erlaubt, die Ports umzustellen. Es gibt allerings auch die Möglichkeit die Ports in dem Arduino Programm zu verändern. Falls das Problem auftritt, müssen Sie für den heutigen Versuch die Zeile 83 von
succes &= sendCom(“AT+CIPSTART="UDP","192.168.4.255",90,91”, “OK”);
in
succes &= sendCom(“AT+CIPSTART="UDP","192.168.4.255",55005,55006”, “OK”);
umändern.
Während die vorangegangen Beispielprogramme viele Eingaben des Nutzers benötigten, soll das heutige Programm autonom arbeiten. Trotzdem werden über den seriellen Monitor weiterhin Informationen zu Debug-Zwecken ausgegeben.

Der Controller wartet nun auf vom Modul empfangene Daten, die über die +IPD-Meldung angekündigt werden. Legitime Befehle, die Sie über den Packet Sender schicken können, lauten led1 und led0. Der Controller interpretiert sie und schaltet dementsprechend die LED an oder aus. Eine Rückmeldung an den Sender wird ebenfalls übermittelt. Falls ein anderer Befehl gesendet wird, erscheint im Serial Monitor die Meldung “Wrong UDP Command”. Die gleiche Nachricht wird auch über das Netzwerk an den Sender übermittelt.


Ich habe gestern schon Tag 5 bearbeitet !
Das Prog läuft super , ich steuere es von meinem Android Handy mit dem Programm UDP TCP Server-Free an. Eine LED ein und ausschalten geht sehr gut. Nun hab ich das Programm geändert um zwei LEDs zu steuern. Die erste LED geht gut aber die zweite muß ich immer mehrmals drucken damit sie ein und aus geht . Ich kenne mich mit Arduino Programmierung noch nicht aus . Ich programmiere nur bisher in BASCOM . Könnt ihr mal rüberschauen was ich falsch gemacht habe.
/*
UDP Controll LED.
No change necessary.
*/
#define DEBUG true
#define LED 9
#define LED1 8
#include
SoftwareSerial esp8266(11, 12); // RX, TX
void setup() {
Serial.begin(19200);
esp8266.begin(19200);
esp8266.setTimeout(5000);
if (sendCom("AT+RST", "ready")) {
debug("RESET OK");
}
if (configAP()) {
debug("AP ready");
}
if (configUDP()) {
debug("UDP ready");
}
//shorter Timeout for faster wrong UPD-Comands handling
esp8266.setTimeout(1000);
pinMode(LED, OUTPUT);
pinMode(LED1, OUTPUT);
}
void loop() {
if (esp8266.available())
{
if (esp8266.find("+IPD,"))
{
if (esp8266.find("led1")) {
int setLed = esp8266.parseInt();
digitalWrite(LED, setLed);
}
if (esp8266.find("led2")) {
int setLed1 = esp8266.parseInt();
digitalWrite(LED1, setLed1);
}
}
}
/*
Neue Zeilen
*/
}
//—————————————–Config ESP8266————————————
boolean configAP()
{
boolean succes = true;
succes &= (sendCom("AT+CWMODE=2", "OK"));
succes &= (sendCom("AT+CWSAP="NanoESP","",5,0", "OK"));
return succes;
}
boolean configUDP()
{
boolean succes = true;
succes &= (sendCom("AT+CIPMODE=0", "OK"));
succes &= (sendCom("AT+CIPMUX=0", "OK"));
succes &= sendCom("AT+CIPSTART="UDP","192.168.4.255",90,91", "OK"); //UDP Bidirectional and Broadcast
return succes;
}
//———————————————–Controll ESP—————————————————–
boolean sendCom(String command, char respond[])
{
esp8266.println(command);
if (esp8266.findUntil(respond, "ERROR"))
{
return true;
}
else
{
debug("ESP SEND ERROR: " + command);
return false;
}
}
String sendCom(String command)
{
esp8266.println(command);
return esp8266.readString();
}
//————————————————-Debug Functions——————————————————
void serialDebug() {
while (true)
{
if (esp8266.available())
Serial.write(esp8266.read());
if (Serial.available())
esp8266.write(Serial.read());
}
}
void debug(String Msg)
{
if (DEBUG)
{
Serial.println(Msg);
}
}
Danke