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