thx, Moppi,
das wesentliche - meldung und rückmeldung in verständlichen und auf dem fahrrad auch "erfahrbaren" signalen - funktioniert nun. hier der AP
und hier der clientCode:#include <ESP8266WiFi.h> #include <WiFiUdp.h> const int ledPin_rt = D5; const int ledPin_gn = D6; const int ledPin_bl = D7; int ledState_rt = LOW; int ledState_gn = LOW; int ledState_bl = LOW; //int LED_rt = LOW; long previousMillis_rt = 0; long previousMillis_gn = 0; long previousMillis_bl = 0; long interval_rt = 100; long interval_gn = 250; long interval_bl = 50; WiFiServer server(80); IPAddress IP(192, 168, 4, 15); IPAddress mask = (255, 255, 255, 0); //adresse vom slave IPAddress remoteIP(192, 168, 4, 114); // remote port to listen on unsigned int remotePort = 4210; char befehl[10]; WiFiUDP Udp; uint32_t aktMillis; uint32_t prevMillis; boolean ledStatus = false; char udp_buffer[WIFICLIENT_MAX_PACKET_SIZE + 1]; void setup() { pinMode(ledPin_rt, OUTPUT); pinMode(ledPin_gn, OUTPUT); pinMode(ledPin_bl, OUTPUT); Serial.begin(115200); //Inizialisiere WIFI WiFi.mode(WIFI_AP); WiFi.softAP("fahrrad_echo", "12345678"); WiFi.softAPConfig(IP, IP, mask); digitalWrite(ledPin_bl, HIGH); delay(500); server.begin(); Serial.println(); Serial.println("accesspoint_fahrrad_echo"); Serial.println("Server started."); Serial.print("IP: "); Serial.println(WiFi.softAPIP()); Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress()); } void loop() { // schalten der LEDs auf dem client aktMillis = millis(); digitalWrite(ledPin_bl, LOW); if (aktMillis - prevMillis >= 500) { prevMillis = aktMillis; Serial.print("LED schalten auf "); if (ledStatus) { Serial.println("An"); befehl[0] = 1; } else { Serial.println("Aus"); befehl[0] = 0; } Udp.beginPacket(remoteIP, remotePort); Udp.write(befehl, 1); Udp.endPacket(); ledStatus = !ledStatus; } WiFiClient client = server.available(); if (!client) { return; } //schalten der LEDs auf dem server (echo empfang) byte request = client.read(); Serial.println("********************************"); Serial.print("From the station: "); Serial.println(request); client.flush(); if ((request == 1) || (request == 255)) { digitalWrite(ledPin_rt, LOW); digitalWrite(ledPin_gn, LOW); delay(100); // LED_rt = LOW; } digitalWrite(ledPin_gn, LOW); delay(100); //LED_rt = LOW; //if (LED_rt == LOW) { digitalWrite(ledPin_gn, HIGH); digitalWrite(ledPin_rt, LOW); } } void rt_blinken (void) { unsigned long currentMillis_rt = millis(); // aktueller Wert rot if (currentMillis_rt - previousMillis_rt > interval_rt) { previousMillis_rt = currentMillis_rt; // aktuellen Wert speichern ledState_rt = ((ledState_rt == LOW) ? HIGH : LOW); // toggeln digitalWrite(ledPin_rt, ledState_rt); // LED ansteuern } }
und das video...Code:#include <ESP8266WiFi.h> #include <WiFiUdp.h> const int ledPin_rt = D5; const int ledPin_gn = D6; const int ledPin_bl = D7; int ledState_rt = LOW; int ledState_gn = LOW; int ledState_bl = LOW; long previousMillis_rt = 0; long previousMillis_gn = 0; long previousMillis_bl = 0; long interval_rt = 100; long interval_gn = 250; long interval_bl = 50; //Variablen deklarieren byte echoPin = 4; // GPIO 4 wird mit einem "echoPin" beschaltet byte temp, memo = 0; // Merker für echoPin status & Hilfsmerker char ssid[] = "fahrrad_echo"; // SSID of your AP char password[] = "12345678"; // password of your AP IPAddress server(192, 168, 4, 15); // IP address of the AP WiFiClient client; WiFiUDP Udp; unsigned int localUdpPort = 4210; // local port to listen on char befehl[10]; // buffer for incoming packets boolean ledStatus = false; char udp_buffer[WIFICLIENT_MAX_PACKET_SIZE + 1]; void setup() { pinMode(ledPin_rt, OUTPUT); pinMode(ledPin_gn, OUTPUT); pinMode(ledPin_bl, OUTPUT); Serial.begin(115200); pinMode(echoPin, INPUT_PULLUP); digitalWrite(ledPin_bl, HIGH); delay(500); digitalWrite(ledPin_bl, LOW); digitalWrite(ledPin_rt, LOW); //Inizialisiere WIFI WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(); Serial.println("Connection to the AP"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.println("Connected"); Serial.println("station_bare_01.ino"); Serial.print("LocalIP:"); Serial.println(WiFi.localIP()); Serial.println("MAC:" + WiFi.macAddress()); Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP()); Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr()); //Inizialisiere UDP Udp.begin(localUdpPort); Serial.print(" connected. UDP-Server bereit an IP: "); Serial.println(WiFi.localIP()); Serial.println("UDP-Server bereit."); } //Daten an AP senden void data_to_AP (byte temp) { client.connect(server, 80); Serial.println("********************************"); Serial.print("Byte sent to the AP: "); Serial.println(temp); Serial.println(client.write(temp)); client.flush(); client.stop(); } void loop() { digitalWrite(ledPin_rt, LOW); int packetSize, len; // UDP packetSize = Udp.parsePacket(); // Da ist was da if (packetSize) { Serial.print("Empfangen "); Serial.print(packetSize); Serial.print(" von IP "); Serial.print(Udp.remoteIP()); Serial.print(" Port "); Serial.println(Udp.remotePort()); len = Udp.read(befehl, 10); ledStatus = befehl[0]; // erstes Byte 0 oder 1 if (ledStatus) { digitalWrite(ledPin_rt, LOW); digitalWrite(ledPin_gn, LOW); Serial.println("LED einschalten"); //LED_rt = LOW; taste_druecken(); } else { digitalWrite(ledPin_rt, LOW); digitalWrite(ledPin_gn, LOW); Serial.println("LED ausschalten"); //LED_rt = LOW; taste_loslassen(); } } { digitalWrite(ledPin_gn, HIGH); digitalWrite(ledPin_rt, LOW); } } void taste_druecken (void) { //digitalWrite(ledPin_rt, LOW); digitalWrite(echoPin, HIGH); temp = digitalRead(echoPin); data_to_AP(temp); Serial.println(temp); } void taste_loslassen (void) { //digitalWrite(ledPin_rt, LOW); digitalWrite(echoPin, LOW); temp = digitalRead(echoPin); data_to_AP(temp); Serial.println(temp); } void rt_blinken (void) { unsigned long currentMillis_rt = millis(); // aktueller Wert rot if (currentMillis_rt - previousMillis_rt > interval_rt) { previousMillis_rt = currentMillis_rt; // aktuellen Wert speichern ledState_rt = ((ledState_rt == LOW) ? HIGH : LOW); // toggeln digitalWrite(ledPin_rt, ledState_rt); // LED ansteuern } }







Zitieren

Lesezeichen