Korištenje EEPROM-a
Što ovaj primjer prikazuje
Brisanje, upisivanje i ponovno čitanje EEPROM emulacije na ESP32, koja zadržava podatke kad se napajanje ukloni. Skica briše 128 bajtova, upisuje u njih vrijednosti od 0 do 127, zatim ih ponovno čita i prikazuje na zaslonu i u Serial Monitoru. Potreban vam je samo USB kabel.
Ovaj primjer koristi i biblioteku EEPROM (EEPROM.h) iz arduino-esp32, koja nije dio biblioteke Inkplate i dolazi uz paket pločice ESP32.
Primjer koda
#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();
}
Komentar pored Inkplate inkplate; spominje monokromatski način rada; Inkplate 7SPECTRA ima samo šestobojni način rada, a konstruktor ne prima način rada. Redak označen kao poruka za Serial Monitor ispisuje se na zaslonu, a njegov je tekst u skici napisan kao „Reding".
Korištene funkcije
Inkplate()returns NoneStvara objekt Inkplate. Inkplate 7SPECTRA ima jedan šestobojni način rada, pa konstruktor ne prima argument načina rada.
ReturnsKonstruktor; nema povratne vrijednosti.
inkplate.begin()returns voidInicijalizira biblioteku, periferne jedinice i frame buffer. Pozovite je jednom u setup().
ReturnsNišta.
inkplate.setTextColor(uint16_t c)returns voidPostavlja boju teksta, ovdje INKPLATE_BLACK.
ReturnsNišta.
inkplate.setTextSize(uint8_t s)returns voidPostavlja povećanje teksta: 3 za dva retka naslova, zatim 1 da stane svih 128 vrijednosti.
ReturnsNišta.
inkplate.println(text)returns size_tIspisuje tekst u frame buffer i prelazi u sljedeći redak.
ReturnsBroj ispisanih bajtova.
inkplate.print(value, format)returns size_tIspisuje tekst ili broj u frame buffer, kao Serial.print(). DEC ispisuje broj u decimalnom zapisu.
ReturnsBroj ispisanih bajtova.
inkplate.display(bool _leaveOn = 0)returns voidŠalje cijeli frame buffer na zaslon i osvježava ga.
ReturnsNišta.
EEPROM.begin(size_t size)returns boolBiblioteka EEPROM iz paketa pločice ESP32: rezervira zadani broj bajtova EEPROM-a za korištenje, ovdje 128.
Returnstrue u slučaju uspjeha.
EEPROM.write(int address, uint8_t value)returns voidBiblioteka EEPROM: upisuje jedan bajt na adresu. Promjena se čuva u memoriji dok ne pozovete commit().
ReturnsNišta.
EEPROM.commit()returns boolBiblioteka EEPROM: trajno pohranjuje upisane bajtove.
Returnstrue u slučaju uspjeha.
EEPROM.read(int address)returns uint8_tBiblioteka EEPROM: čita jedan bajt s adrese.
ReturnsPohranjeni bajt.
Serial.begin(115200)returns voidFunkcija jezgre Arduina: pokreće serijski port na 115200 baud.
ReturnsNišta.
Serial.println(text)returns size_tFunkcija jezgre Arduina: ispisuje redak u Serial Monitor.
ReturnsBroj ispisanih bajtova.
Serial.print(value, format)returns size_tFunkcija jezgre Arduina: ispisuje tekst ili broj u Serial Monitor bez prijelaza u novi redak.
ReturnsBroj ispisanih bajtova.
delay(ms)returns voidFunkcija jezgre Arduina: čeka zadani broj milisekundi, ovdje 500.
ReturnsNišta.
Što očekivati
Uz Serial Monitor postavljen na 115200 baud, skica ispisuje:
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
Na zaslonu se velikim crnim tekstom prikazuju Reading data from EEPROM: i Reding data from EEPROM..., a zatim malim tekstom isti popis vrijednosti od 0 do 127.
🔗Otvorite cijeli primjer
examples/Inkplate7SPECTRA/Advanced/Other/Inkplate7SPECTRA_EEPROM_Usage