EEPROM-Nutzung
Was dieses Beispiel zeigt
Löschen, Schreiben und erneutes Auslesen der EEPROM-Emulation des ESP32, die Daten auch bei Wegfall der Versorgungsspannung behält. Der Sketch löscht 128 Bytes, schreibt die Werte 0 bis 127 hinein, liest sie anschließend zurück und zeigt sie auf dem Bildschirm und im Serial Monitor an. Sie benötigen nur ein USB-Kabel.
Dieses Beispiel verwendet außerdem die EEPROM-Bibliothek (EEPROM.h) aus arduino-esp32, die nicht Teil der Inkplate-Bibliothek ist und mit dem ESP32-Board-Package geliefert wird.
Beispielcode
#include "EEPROM.h" // Include ESP32 EEPROM library
#include "Inkplate.h" // Include Inkplate library to the sketch
#define EEPROM_SIZE 128 // How much data to write to EEPROM in this example
Inkplate inkplate; // Create object on Inkplate library and set library to work in monochrome mode
void setup() {
Serial.begin(115200); // Init serial monitor to display what's happening
inkplate.begin(); // Init library (you should call this function ONLY ONCE)
inkplate.setTextColor(INKPLATE_BLACK); // Set text color to black
// Init EEPROM library with 128 of EEPROM size.
EEPROM.begin(EEPROM_SIZE);
inkplate.setTextSize(3); // Set text size
Serial.println("Cleaning EEPROM..."); // Print message on serial monitor
clearEEPROM(); // Clear user EEPROM data
delay(500); // Wait a little bit...
Serial.println("Writing data to EEPROM..."); // Print message on serial monitor
writeEEPROM(); // Write some data to EEPROM
delay(500); // Wait a little bit...
inkplate.println("Reading data from EEPROM:\n"); // Print message on the screen
inkplate.println("Reding data from EEPROM..."); // Print message on the Sserial Monitor
inkplate.setTextSize(1); // Use smaller text so everything can fit on display
printEEPROM(); // Read data from EEPROM and display it on screen
delay(500); // Wait a little bit...
}
void loop() {
// Empty...
}
// Function for clearing EEPROM data
void clearEEPROM()
{
for(int i=0;i<EEPROM_SIZE;i++){
EEPROM.write(i,0);
}
EEPROM.commit();
}
// Function writes data to EEPROM
void writeEEPROM()
{
for(int i=0;i<EEPROM_SIZE;i++){
EEPROM.write(i,i);
}
EEPROM.commit();
}
// Function reads back previously written data and displays it on serial monitor and screen.
void printEEPROM()
{
for(int i=0;i<EEPROM_SIZE;i++){
inkplate.print(EEPROM.read(i), DEC);
Serial.print(EEPROM.read(i), DEC);
if(i != EEPROM_SIZE -1)
{
inkplate.print(", ");
Serial.print(", ");
}
}
inkplate.display();
}
Der Kommentar neben Inkplate inkplate; erwähnt einen Monochrom-Modus; Inkplate 7SPECTRA hat nur seinen Sechs-Farben-Modus, und der Konstruktor nimmt keinen Modus entgegen. Die als Serial-Monitor-Meldung kommentierte Zeile wird auf dem Bildschirm ausgegeben, und ihr Text ist im Sketch als „Reding“ geschrieben.
Verwendete Funktionen
Inkplate()returns NoneErstellt das Inkplate-Objekt. Inkplate 7SPECTRA hat einen einzigen Sechs-Farben-Modus, daher nimmt der Konstruktor kein Modus-Argument entgegen.
ReturnsKonstruktor; kein Rückgabewert.
inkplate.begin()returns voidInitialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf.
ReturnsNichts.
inkplate.setTextColor(uint16_t c)returns voidLegt die Textfarbe fest, hier INKPLATE_BLACK.
ReturnsNichts.
inkplate.setTextSize(uint8_t s)returns voidLegt die Textvergrößerung fest: 3 für die beiden Überschriftenzeilen, danach 1, damit die 128 Werte passen.
ReturnsNichts.
inkplate.println(text)returns size_tGibt Text in den Framebuffer aus und springt in die nächste Zeile.
ReturnsAnzahl der ausgegebenen Bytes.
inkplate.print(value, format)returns size_tGibt Text oder eine Zahl in den Framebuffer aus, wie Serial.print(). DEC gibt eine Zahl dezimal aus.
ReturnsAnzahl der ausgegebenen Bytes.
inkplate.display(bool _leaveOn = 0)returns voidSendet den gesamten Framebuffer an das Panel und aktualisiert es.
ReturnsNichts.
EEPROM.begin(size_t size)returns boolEEPROM-Bibliothek des ESP32-Board-Packages: reserviert die angegebene Anzahl von EEPROM-Bytes zur Verwendung, hier 128.
Returnstrue bei Erfolg.
EEPROM.write(int address, uint8_t value)returns voidEEPROM-Bibliothek: schreibt ein Byte an die Adresse. Die Änderung bleibt im Speicher, bis Sie commit() aufrufen.
ReturnsNichts.
EEPROM.commit()returns boolEEPROM-Bibliothek: speichert die geschriebenen Bytes dauerhaft.
Returnstrue bei Erfolg.
EEPROM.read(int address)returns uint8_tEEPROM-Bibliothek: liest ein Byte von der Adresse.
ReturnsDas gespeicherte Byte.
Serial.begin(115200)returns voidFunktion des Arduino-Cores: startet die serielle Schnittstelle mit 115200 Baud.
ReturnsNichts.
Serial.println(text)returns size_tFunktion des Arduino-Cores: gibt eine Zeile im Serial Monitor aus.
ReturnsAnzahl der ausgegebenen Bytes.
Serial.print(value, format)returns size_tFunktion des Arduino-Cores: gibt Text oder eine Zahl ohne Zeilenumbruch im Serial Monitor aus.
ReturnsAnzahl der ausgegebenen Bytes.
delay(ms)returns voidFunktion des Arduino-Cores: wartet die angegebene Anzahl von Millisekunden, hier 500.
ReturnsNichts.
Was Sie erwarten können
Bei einer Baudrate von 115200 im Serial Monitor gibt der Sketch Folgendes aus:
Cleaning EEPROM...
Writing data to EEPROM...
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127
Auf dem Bildschirm erscheinen Reading data from EEPROM: und Reding data from EEPROM... in großer schwarzer Schrift, gefolgt von derselben Liste der Werte von 0 bis 127 in kleiner Schrift.
🔗Vollständiges Beispiel öffnen
examples/Inkplate7SPECTRA/Advanced/Other/Inkplate7SPECTRA_EEPROM_Usage