Hey, ich versuche seit Tagen einen Tür Gong mit dem A1S V2.2 Board zu realisieren. Ich hab einen code zusammengebastelt und habe auch einen Demo code bei dem ein Sinus Ton abgespielt wird der Funktioniert aber leider bekomme ich das nicht in meinen code integriert.
#include <Arduino.h>
#include <WiFi.h>
#include <WebServer.h>
#include <SD_MMC.h> // Verwende die SD_MMC-Bibliothek
#include <time.h> // Für die Zeitfunktion
// Definiere die Pins für die Tasten
#define BUTTON_KEY3 19
// WLAN-Zugangsdaten
const char* ssid = „xxx“; // Ersetze mit deinem WLAN-Namen
const char* password = „xxx“; // Ersetze mit deinem WLAN-Passwort
WebServer server(80); // Erstelle einen Webserver, der auf Port 80 hört
// Variablen zur Speicherung der Statusausgaben
String output = „“;
// Funktion zum Erhalten des aktuellen Zeitstempels
String getTimestamp() {
struct tm timeinfo;
if (!getLocalTime(&timeinfo)) {
return „Error“; // Gibt „Error“ zurück, wenn die Zeit nicht abgerufen werden kann
}
char buffer[16];
strftime(buffer, sizeof(buffer), „%H:%M:%S“, &timeinfo);
return String(buffer);
}
void handleRoot() {
// HTML-Inhalt für die Webseite
String html = „
Serieller Monitor
“
„
“ + output + „
“
„“
„“;
server.send(200, „text/html“, html); // Sende die HTML-Seite zurück
}
void handleStatus() {
server.send(200, „text/plain“, output); // Sende den aktuellen Status als Plain Text
}
void setup() {
Serial.begin(115200); // Initialisiere die serielle Kommunikation
// Setze die Button-Pins als Eingänge
pinMode(BUTTON_KEY3, INPUT_PULLUP);
// Verbinde mit dem WLAN
WiFi.begin(ssid, password);
Serial.print("Verbinde mit WLAN...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Verbunden mit WLAN! IP-Adresse: ");
Serial.println(WiFi.localIP()); // Zeige die lokale IP-Adresse an
// Zeit synchronisieren
configTime(3600 * 2, 0, "pool.ntp.org", "time.nist.gov"); // UTC+2 für Sommerzeit
// Warten, bis die Zeit synchronisiert ist
delay(1000); // Kurze Verzögerung, um sicherzustellen, dass die Zeit abgerufen werden kann
// Jetzt den Output mit Zeitstempel aktualisieren
output += getTimestamp() + " - Verbunden mit WLAN! IP-Adresse: " + WiFi.localIP().toString() + "\n";
// Definiere die Routen für den Webserver
server.on("/", handleRoot); // Handle root URL
server.on("/status", handleStatus); // Handle status URL
// Starte den Server
server.begin();
Serial.println("Webserver gestartet. Port: 80");
output += getTimestamp() + " - Webserver gestartet. Port: 80\n";
// SD-Karte im MMC-Modus initialisieren
Serial.println("Starte SD-Karteninitialisierung...");
output += getTimestamp() + " - Starte SD-Karteninitialisierung...\n";
if (!SD_MMC.begin()) {
Serial.println("SD-Karte konnte nicht initialisiert werden!");
output += getTimestamp() + " - SD-Karte konnte nicht initialisiert werden!\n";
while (true); // Halte die Ausführung an
}
Serial.println("SD-Karte erfolgreich initialisiert!");
output += getTimestamp() + " - SD-Karte erfolgreich initialisiert!\n";
// Teste das Schreiben einer Datei auf die SD-Karte
Serial.println("Versuche, eine Testdatei zu schreiben...");
output += getTimestamp() + " - Versuche, eine Testdatei zu schreiben...\n";
File file = SD_MMC.open("/test.txt", FILE_WRITE);
if (file) {
file.println("Hallo von der SD-Karte!"); // Schreibe etwas in die Datei
file.close(); // Schließe die Datei
Serial.println("Datei erfolgreich geschrieben.");
output += getTimestamp() + " - Datei erfolgreich geschrieben.\n";
} else {
Serial.println("Fehler beim Öffnen der Datei zum Schreiben.");
output += getTimestamp() + " - Fehler beim Öffnen der Datei zum Schreiben.\n";
}
}
void loop() {
// Temporärer Output-String
String newOutput = „“;
// Überprüfe die Tasten mit Entprellung
static unsigned long lastPressTime = 0; // Zeit des letzten Tastendrucks
unsigned long currentTime = millis(); // Aktuelle Zeit
if (currentTime - lastPressTime > 200) { // Warte 200 ms zwischen den Tastendrücken
if (digitalRead(BUTTON_KEY1) == LOW) {
newOutput += getTimestamp() + " - Key 1 gedrückt!\n";
lastPressTime = currentTime; // Aktualisiere die Zeit des letzten Tastendrucks
}
if (digitalRead(BUTTON_KEY3) == LOW) {
newOutput += getTimestamp() + " - Key 3 gedrückt!\n";
lastPressTime = currentTime; // Aktualisiere die Zeit des letzten Tastendrucks
}
if (digitalRead(BUTTON_KEY4) == LOW) {
newOutput += getTimestamp() + " - Key 4 gedrückt!\n";
lastPressTime = currentTime; // Aktualisiere die Zeit des letzten Tastendrucks
}
if (digitalRead(BUTTON_KEY5) == LOW) {
newOutput += getTimestamp() + " - Key 5 gedrückt!\n";
lastPressTime = currentTime; // Aktualisiere die Zeit des letzten Tastendrucks
}
if (digitalRead(BUTTON_KEY6) == LOW) {
newOutput += getTimestamp() + " - Key 6 gedrückt!\n";
lastPressTime = currentTime; // Aktualisiere die Zeit des letzten Tastendrucks
}
}
// Wenn neue Ausgaben vorhanden sind, aktualisiere den globalen Output
if (newOutput.length() > 0) {
output += newOutput; // Füge neue Ausgaben hinzu
Serial.println(newOutput); // Debug-Ausgabe im seriellen Monitor
}
// Sende den gesamten Output an die Webseite
server.handleClient(); // Überprüfe, ob ein Client eine Anfrage gesendet hat
delay(100); // Kurze Verzögerung, um den Loop nicht zu überlasten
}