commit 7bbc49a765016ff09311c6ebe0d588ca7def3e2b Author: pi-ux-ce Date: Mon Dec 1 11:33:41 2025 +0000 adding code from gemini AI Create a code to blonk the IP address if prompted for it and display 99 when the wifi is connected diff --git a/ESP32-wifi-morse b/ESP32-wifi-morse new file mode 100644 index 0000000..8cf9536 --- /dev/null +++ b/ESP32-wifi-morse @@ -0,0 +1,137 @@ +#include + +// --- Configuration --- +const char* ssid = "YOUR_SSID"; // Your WiFi network SSID +const char* password = "YOUR_PASSWORD"; // Your WiFi network password +const int LED_PIN = 15; // GPIO pin for the LED +const int BUTTON_PIN = 4; // GPIO pin for the button +const int DOT_DURATION = 200; // Duration of a Morse code dot in milliseconds + +// Morse code map for numbers 0-9 and the dot character '.' +// The index in the array corresponds to the digit (0-9). +const char* morseCodes[] = { + "-----", // 0 + ".----", // 1 + "..---", // 2 + "...--", // 3 + "....-", // 4 + ".....", // 5 + "-....", // 6 + "--...", // 7 + "---..", // 8 + "----.", // 9 + ".-.-.-" // . (period) +}; + +// --- Variables --- +IPAddress privateIP; +bool buttonPressed = false; + +// Function prototypes +void blinkMorse(char character); +void blinkDot(); +void blinkDash(); +void checkButton(); +void signalWifiConnected(); + +void setup() { + Serial.begin(115200); + pinMode(LED_PIN, OUTPUT); + // Use internal pull-up resistor for the button pin + pinMode(BUTTON_PIN, INPUT_PULLUP); + + Serial.println("\nConnecting to WiFi..."); + WiFi.begin(ssid, password); + + while (WiFi.status() != WL_CONNECTED) { + digitalWrite(LED_PIN, HIGH); // Quick blink while trying to connect + delay(100); + digitalWrite(LED_PIN, LOW); + delay(400); + Serial.print("."); + } + + Serial.println("\nWiFi connected."); + privateIP = WiFi.localIP(); + Serial.print("IP Address: "); + Serial.println(privateIP); + + // Call the new function to signal successful connection + signalWifiConnected(); +} + +void loop() { + checkButton(); + + if (buttonPressed) { + Serial.println("Button pressed. Blinking IP in Morse Code: " + privateIP.toString()); + String ipStr = privateIP.toString(); + + for (int i = 0; i < ipStr.length(); i++) { + blinkMorse(ipStr[i]); + delay(DOT_DURATION * 3); // Gap between characters (3 units) + } + + buttonPressed = false; // Reset the flag after blinking + Serial.println("Morse code sequence complete. Waiting for button press."); + delay(DOT_DURATION * 7); // Gap between words/sequences (7 units) + } +} + +// Function to blink the digit '9' twice when WiFi connects +void signalWifiConnected() { + // '9' in Morse is "----." + for (int j = 0; j < 2; j++) { + blinkMorse('9'); + // Short pause between the two '9' signals + delay(DOT_DURATION * 5); + } + Serial.println("WiFi connection signal complete (9 twice)."); +} + + +void checkButton() { + // Read the state of the button. It's LOW when pressed due to pull-up resistor. + if (digitalRead(BUTTON_PIN) == LOW) { + // Debounce delay + delay(50); + if (digitalRead(BUTTON_PIN) == LOW) { + buttonPressed = true; + // Wait until the button is released to prevent multiple triggers + while(digitalRead(BUTTON_PIN) == LOW); + } + } +} + +void blinkMorse(char character) { + int index = -1; + if (character >= '0' && character <= '9') { + index = character - '0'; + } else if (character == '.') { + index = 10; // Index for the period in the morseCodes array + } else { + return; // Ignore other characters + } + + const char* morse = morseCodes[index]; + for (int i = 0; i < strlen(morse); i++) { + if (morse[i] == '.') { + blinkDot(); + } else { + blinkDash(); + } + delay(DOT_DURATION); // Gap between dots and dashes in a character (1 unit) + } +} + +void blinkDot() { + digitalWrite(LED_PIN, HIGH); + delay(DOT_DURATION); // Dot duration (1 unit) + digitalWrite(LED_PIN, LOW); +} + +void blinkDash() { + digitalWrite(LED_PIN, HIGH); + delay(DOT_DURATION * 3); // Dash duration (3 units) + digitalWrite(LED_PIN, LOW); +}