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
This commit is contained in:
@@ -0,0 +1,137 @@
|
|||||||
|
#include <WiFi.h>
|
||||||
|
|
||||||
|
// --- 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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user