Programmbeispiel 2 MyEEPROM_I2C
Das Beispielprogramm zeigt die Ausgabe von Meldetexten am Seriellen Monitor, die in einem 2 kBit-EEPROM gespeichert sind. Wie im nachfolgenden Bild ersichtlich, sind die einzelnen Texte durch ein Begrenzungszeichen, in diesem Fall durch "Strich-Punkt" ';' voneinander getrennt. Die im Programmbeispiel eingesetzte Funktion "readBufferLimiter" liest Texte ab einer angegebenen EEPROM-Adresse bis zu einem definierbaren Begrenzungszeichen in ein Buffer-Array ein, dessen Inhalt dann über die Funktion "void printText(byte* buf)" am Seriellen Monitor ausgegeben wird.
Bild: Inhalt des EEPROMs dargestellt mit dem EEPROM-Monitor (siehe EEPROM-Monitor)
//Programmbeispiel 2 für EEPROM-Library
//Code fuer Arduino
//Author Retian
//Version 1.1
#include <MyEEPROM_I2C.h>
//Längster Meldetext einschließlich Trennzeichen 23 Byte (von maximal 32 Byte)
#define bufferSize 23 //Buffergroesse 23 Byte, darf max. 32 Byte sein
byte textBuffer[bufferSize];
//Anfangsadressen der Meldetexte im EEPROM
#define eepTextAdd1 0
#define eepTextAdd2 21
#define eepTextAdd3 42
#define eepTextAdd4 65
#define eepTextAdd5 81
#define eepTextAdd6 104
#define eepTextAdd7 121
MyEEPROM_I2C MyEEPROM1;
void setup() {
Serial.begin(115200);MyEEPROM1.init(0x50);
MyEEPROM1.setSize(EEPROM_2KBIT); //EEPROM-Speichergroesse = 2 kBit
//Aendern der Variable "readBufferSize" von 32 Byte (Standardwert) auf "bufferSize"
MyEEPROM1.readBufferSize = bufferSize;
Serial.println("Ausgabe der Meldetexte:");
Serial.println();
//Wenn Trennzeichen ';' gefunden, dann Textausgabe am Seriellen Monitor
if (MyEEPROM1.readBufferLimiter(eepTextAdd1, textBuffer, ';')) printText(textBuffer);
if (MyEEPROM1.readBufferLimiter(eepTextAdd2, textBuffer, ';')) printText(textBuffer);
if (MyEEPROM1.readBufferLimiter(eepTextAdd3, textBuffer, ';')) printText(textBuffer);
if (MyEEPROM1.readBufferLimiter(eepTextAdd4, textBuffer, ';')) printText(textBuffer);
if (MyEEPROM1.readBufferLimiter(eepTextAdd5, textBuffer, ';')) printText(textBuffer);
if (MyEEPROM1.readBufferLimiter(eepTextAdd6, textBuffer, ';')) printText(textBuffer);
if (MyEEPROM1.readBufferLimiter(eepTextAdd7, textBuffer, ';')) printText(textBuffer);
}
void printText(byte* buf)
{
for (byte i = 0; i < bufferSize; i++) Serial.print((char)buf[i]);
Serial.println();
}
void loop() {
}
Ausgabe am Seriellen Monitor: