// Arduino -> Adafruit ESP32 Feather auswählen #include #include #include #include /* Firmware v1.42 22.03.2021 * Igor Beloschapkin * beloschapkinig61248@th-nuernberg.de */ #define SSID "featherNetwork" // network SSID #define PASSWORD "featherNetwork" // network password #define PIN_LED 13 #define PIN_TAC6 12 #define PIN_TAC5 27 #define PIN_TAC4 33 #define PIN_TAC3 15 #define PIN_TAC2 32 #define PIN_TAC1 14 #define PIN_13 13 #define PIN_A5 4 #define PIN_A1 25 #define PIN_A0 26 #define SCRIPTMODE 1 // 0 = local filtering, 1 = laptop script filtering char packetBuffer[255]; // buffer to hold incoming packet unsigned int localPort = 8888; char sig_nr; int i_sig_nr; WiFiUDP udp; void setup() { setInitGPIO(); // Initialize serial Serial.begin(115200); Serial.println(); Serial.print("Setting up AP at SSID: "); Serial.print(SSID); bool result = WiFi.softAP(SSID, PASSWORD); //result = false; // for error testing if(result) { Serial.println(); Serial.println("...AP successfully built."); Serial.print("...Feather IP: "); Serial.println(WiFi.softAPIP()); Serial.print("...Feather MAC: "); Serial.println(WiFi.softAPmacAddress()); Serial.print("...Local port: "); Serial.println(localPort); successWiFi(); Serial.println("Listening to port..."); } else { Serial.println("...Failed while setting up access point"); errorWiFi(); } udp.begin(localPort); } void loop() { int packetSize = udp.parsePacket(); if(packetSize) { int len = udp.read(packetBuffer, 255); if(len) { packetBuffer[len] = 0; } if(SCRIPTMODE) // == 1 { // laptop script filtering sig_nr = packetBuffer[0]; Serial.println(sig_nr); vibrate(sig_nr); } else { // local filtering if(strstr(packetBuffer,"usCode ")) { sig_nr = packetBuffer[13]; Serial.println(sig_nr); vibrate(sig_nr); } } } } void setInitGPIO() { // Set all as OUTPUT pinMode(PIN_LED, OUTPUT); pinMode(PIN_TAC6, OUTPUT); pinMode(PIN_TAC5, OUTPUT); pinMode(PIN_TAC4, OUTPUT); pinMode(PIN_TAC3, OUTPUT); pinMode(PIN_TAC2, OUTPUT); pinMode(PIN_TAC1, OUTPUT); // Bisher ungenutzte Pins pinMode(PIN_13, OUTPUT); pinMode(PIN_A5, OUTPUT); pinMode(PIN_A1, OUTPUT); pinMode(PIN_A0, OUTPUT); allLow(); } void allLow() { // Set all LOW digitalWrite(PIN_LED, LOW); digitalWrite(PIN_TAC6, LOW); digitalWrite(PIN_TAC5, LOW); digitalWrite(PIN_TAC4, LOW); digitalWrite(PIN_TAC3, LOW); digitalWrite(PIN_TAC2, LOW); digitalWrite(PIN_TAC1, LOW); // Bisher ungenutzte Pins digitalWrite(PIN_13, LOW); digitalWrite(PIN_A5, LOW); digitalWrite(PIN_A1, LOW); digitalWrite(PIN_A0, LOW); } void errorWiFi() { delay(2000); while(true) { digitalWrite(PIN_LED, HIGH); delay(100); digitalWrite(PIN_LED, LOW); delay(100); digitalWrite(PIN_LED, HIGH); delay(100); digitalWrite(PIN_LED, LOW); delay(1000); } } void successWiFi() { delay(2000); for(int i = 0; i < 5; i++) { digitalWrite(PIN_LED, HIGH); delay(1000); digitalWrite(PIN_LED, LOW); delay(200); } } void vibrate(const char signr) { switch(signr) { case '6': digitalWrite(PIN_TAC6, HIGH); delay(220); digitalWrite(PIN_TAC6, LOW); break; case '5': digitalWrite(PIN_TAC5, HIGH); delay(220); digitalWrite(PIN_TAC5, LOW); break; case '4': digitalWrite(PIN_TAC4, HIGH); delay(220); digitalWrite(PIN_TAC4, LOW); break; case '3': digitalWrite(PIN_TAC3, HIGH); delay(220); digitalWrite(PIN_TAC3, LOW); break; case '2': digitalWrite(PIN_TAC2, HIGH); delay(220); digitalWrite(PIN_TAC2, LOW); break; case '1': digitalWrite(PIN_TAC1, HIGH); delay(220); digitalWrite(PIN_TAC1, LOW); break; } }