EEPROM und GPIO beim ESP8266

Hallo zusammen,
ich bin grade einigermaßen verwirrt ich spiele grade mit dem EEPROM da ich Daten Wlan usw darüber speichern möchte nun möchte ich den EEPROM über einen Pin löschen. Ich habe die notwendigen Zeilen in den loop eingebunden (Nur zum testen ob der Pin Funktioniert) nun sagt er mir ständig dass der Taster gedrückt ist (Mein Aufbau ist richtig mit anderen Skripten funktioniert es) jetzt stehe ich vor der frage warum funktioniert es mit meinem EEPROM Skript nicht mehr?
Verwendet der EEPROM Pins vom ESP?

1 Like

Zeige uns deine Schaltung und deinen Sketch.
Dann können wir evtl. sagen, welchen Fehler du machst.

Nur zur Info, der ESP hat keinen echten EEProm. Da wird Spiffs bzw. LittleFS verwendet.

Und als Top schreibt der TO, er hat alles richtig gemacht.

compiliert, aber ungetestet:

// EEPROM Emulation am ESP8266 nutzen
// https://forum.arduino.cc/t/eeprom-und-gpio-beim-esp8266/888606/
#include <EEPROM.h>

// start reading from the first byte (address 0) of the EEPROM
const byte address = 0;

// mach dir ein struct, ham's g'sagt
struct {
  char ssid[42];
  char pwd[42];
  int foo;
  float bar;
} data;


void setup() {
  // initialize serial and wait for port to open:
  Serial.begin(115200);
  EEPROM.begin(512);

  // Einzeiler zum einlesen aller Variablen im struct
  EEPROM.get(address, data);

  // Einzeiler zum Verwenden
  Serial.println(data.ssid);

  // Einzeiler zum Verändern:

  strcpy(data.ssid, "wlan");
  strcpy(data.pwd, "geheim");
  data.foo = 4711;
  data.bar = 8.15;  

  // Einzeiler zum Schreiben
  EEPROM.put(address, data);
  
}

void loop() {

}

genau 42 Zeilen ^^

Uns....du kennst den Sketch des TO ?
Oder hast du hellseherische Fähigkeiten?

Entschuldigung ich hab vorhin nicht dran gedacht das Skript mit hoch zu laden :see_no_evil:
dies hole ich hiermit nach wie gesagt beide Skripte funktionieren nur eben nicht zusammen.

#include <EEPROM.h>

int addr_ssid = 0; // ssid index
int addr_password = 20; // password index
String ssid = "WLAN TEST"; // wifi ssid
String password = "WLAN Passwort TEST"; // and password

//um denn EEPROM zu löschen den wert auf true ändern ansonsten false
#define RESET_EEPROM false

//GPIO Pins Deklarieren
const int buttonPin = 5;
const int ledPin = LED_BUILTIN;

void setup() {
Serial.begin(9600); //Serielle ausgabe starten
EEPROM.begin(512); //EEPROM einbinden
pinMode(buttonPin, INPUT); //GPIO als input definieren
pinMode(ledPin, OUTPUT);

Serial.println("");

//EEPROM Löschen*********************
if ( RESET_EEPROM ) {
for (int i = 0; i < 512; i++) {
EEPROM.write(i, 0);
}
EEPROM.commit();
Serial.println("EEPROM Gelöscht");
delay(500);
}

//Schreibe Werte in EEPROM**********
//SSID
Serial.println("");
Serial.print("Schreibe SSID in addresse"); Serial.println(addr_ssid);
Serial.print("");
for (int i = 0; i < ssid.length(); ++i)
{
EEPROM.write(addr_ssid + i, ssid[i]);
Serial.print(ssid[i]); Serial.print("");
}
//Passwort
Serial.println("");
Serial.print("Schreibe Passwort in addresse "); Serial.println(addr_password);
Serial.print("");
for (int j = 0; j < password.length(); j++)
{
EEPROM.write(addr_password + j, password[j]);
Serial.print(password[j]); Serial.print("");
}

Serial.println("");
if (EEPROM.commit()) {
Serial.println("Daten erfolgreich übertragen");
} else {
Serial.println("ERROR! Daten übertragung fehlgeschlagen");
}

//Lese Werte aus EEPROM******************
Serial.println("");
Serial.println("Daten Lesen");
String ssid;
for (int k = addr_ssid; k < addr_ssid + 20; ++k)
{
ssid += char(EEPROM.read(k));
}
Serial.print("SSID: ");
Serial.println(ssid);

String password;
for (int l = addr_password; l < addr_password + 20; ++l)
{
password += char(EEPROM.read(l));
}
Serial.print("Passwort: ");
Serial.println(password);
}

void loop() {
if (digitalRead(buttonPin == HIGH)){
digitalWrite(ledPin, HIGH);
Serial.println("Taste gedrückt");
} else {
digitalWrite(ledPin, LOW);
}
}

  1. Von 2 veschiedenen Sketchen hast du bisher nichts geschrieben, warum nicht ?
  2. Hast du unsere Beiträge/Fragen/Antworten überhaupt gelesen ?
  3. Hast du diesen Beitrag mal gelesen. Das wäre in deinem Fall mehr als wichtig.
  4. Dann setze deinen Sketch in Code-Tags. Nur so ist der richtig zu lesen.
  5. Wo ist dein Schaltbild ?
  1. Ich habe das Skript getrennt getestet also einmal das Taster Skript und ein mal das EEPROM Skript beide haben funktioniert nur zusammen funktioniert es nicht mehr
  2. Ja habe ich nur leider haben mich die Antworten noch nicht weiter gebracht.
    3.nein habe ich noch nicht aber ich werde es nachholen
    4.Es tut mir leid ich bin neu hier und weis noch nicht wie hier alles funktioniert
    5.Meine Schaltung ist derzeit noch auf einem Bredboard aufgebaut und besteht im wesentlichen aus dem ESP8266 einem 1KOhm Wiederstand zwischen 3,3v und D7 und einem taster zwischen D7 und GND es existiert leider kein schaltplan

Dann solltest du das schnellstens zeichnen. Mit Bleistift auf Papier reicht. Foto machen und posten.
Dann siehst du evtl. schon deinen groben Fehler.
D7 in der Beschreibung und GPIO 5 im Sketch, das kann nicht funktionieren.
Sowas sieht man dann auch selbst im Schaltbild.

Zu 1. Dann sollte man auch alles überprüfen. Ein Schaltbild kann da ungemein bei helfen.
Zu 2. Dann einfach noch mal Fragen stellen bzw. unsere Fragen beantworten.
Zu 3. OK, das ist wichtig.
Zu 4. Daher ist Punkt 3 sehr wichtig.
Zu 5. Oben schon beantwortet.

Ich hab vorhin mal einen anderen Pin getestet und leider im Programm vergessen den GPIO um zu stellen vorher war natürlich D1 gemeind. Ich bin Elektriker und 2 drahtbrücken kann ich mir noch merken :wink:
Aber nichts destotrotz ändert sich auch nichts an meinem Problem wenn ich den GPIO auf 13 umstelle. Der Tasterstatus lässt sich nicht ändern

Hab mein Problem nun selbst gelöst danke trotzdem für die Hilfestellung

Mag ja sein, aber wir sehen deine Drahtbrücken nicht.
Wir können nicht auf deinen Arbeitsplatz sehen.

Gerne.....Welche Hilfestellung.
Da du uns die benötigten Informationen nicht lieferst, ist keine qualifizierte Hilfe möglich.

Aber schön, wenn es dennoch funktioniert.