Für ein Messsystem sollen Kalibierungsdaten in ien EEPROM geschrieben werden. Hier ein paar Code Schnipel für Entwurf und Debugging.
/*
 * EEPROM und Serial Port Testprogramme
 *
 * Int Werte in EEPROM schreiben und lesen
 * Formatierte Audgabe auf den Serial Port
 * Funktionsweise:
 * liest den analogen Eingang 7 und sendet die Werte laufend auf den Serial Port
 * an Ausgang 4 ist ein MAX4544 dual 2 Kanal Anlog Switch/Multiplexer. An einem Eingangspaar liegen 2 von 5V heruntergeteilte Spannungen
 * bei Druck auf den Taster wird eine Tabelle aus dem EEPROM ausgelesen
 */
#include <EEPROM.h>
 #define BUTTON 3 // Taster
 #define SWITCH 4 // Switch MUX
 #define VIN 7 // analoger Ausgang des MUX
 #define FET 5 // Schaltausgang
 #define PWM 9 // PWM Ausgang
 #define LEDPIN 13//This function will write a 2 byte integer to the eeprom at the specified address and address + 1
 #include "WProgram.h"
 void EEPROMWriteInt(int p_address, int p_value);
 unsigned int EEPROMReadInt(int p_address);
 void setup();
 void loop();
 void EEPROMWriteInt(int p_address, int p_value)
 {
 byte lowByte = ((p_value >> 0) & 0xFF);
 byte highByte = ((p_value >> 8) & 0xFF);
EEPROM.write(p_address, lowByte); EEPROM.write(p_address + 1, highByte); }
//This function will read a 2 byte integer from the eeprom at the specified address and address + 1
 unsigned int EEPROMReadInt(int p_address)
 {
 byte lowByte = EEPROM.read(p_address);
 byte highByte = EEPROM.read(p_address + 1);
return ((lowByte << 0) & 0xFF) + ((highByte << 8) & 0xFF00); }
// short valV[] = {10,-5,-40,-80,-115,-135,-210,-240,-270,-300,-325,-365,-380,-405,-430,-455,-490,-520,-555,-585};
int i;
 // int incomingByte;
 void setup()
 {
 Serial.begin(9600);
 pinMode(BUTTON, INPUT);
 digitalWrite(BUTTON, HIGH);
 pinMode(SWITCH, OUTPUT);
 pinMode(FET, OUTPUT);
 digitalWrite(FET, LOW);
 analogWrite(PWM, 50);
// Korrekturdaten fuer die Eingangspannung in 50 Unit Schritten // gespeichert ist die Abweichung der effektiven Spannung in mV vom Wert 20x Unit // valV[0] ist die Abweichung von 0...49 Units
// fuelle 32 Quadratzahlen ein
 // digitalWrite(ledPin, HIGH);
 // for (i=0; i<32; i++)
 // {
 // EEPROMWriteInt(i * 2, i * i);
 // }
 }
 void loop()
 {
 digitalWrite(LEDPIN, LOW);
// // Datenspiegel: sende jedes empfangene Byte zurueck erspart eine ASCII Tabelle.
 // Leider muss ein Serial.readln etc. selber programmiert werden
 // if (Serial.available() > 0)
 // {
 // incomingByte = Serial.read();
 // Serial.print("I received: ");
 // Serial.println(incomingByte, DEC);
 // }
// Messwerte an beiden Eingaengen auslesen
 digitalWrite(SWITCH, LOW);
 Serial.print(analogRead(7));
 digitalWrite(SWITCH, HIGH);
 Serial.print('\t');
 Serial.println(analogRead(7));
 if (digitalRead(BUTTON)==0)
 {
 // dann alles ueber die serielle Schnittstelle ausgeben
 // digitalWrite(LEDPIN, HIGH);
 // for (i=0; i<32; i++)
 // {
 // Serial.print(i, DEC);
 // Serial.print(",");
 // Serial.println(EEPROMReadInt(2*i), DEC);
 // delay(100);
 // }
 Serial.print("Taste");
 digitalWrite(FET, HIGH);
 analogWrite(PWM, 200);
 delay(10000);
 digitalWrite(FET, LOW);
 analogWrite(PWM, 50);
 };
digitalWrite(LEDPIN, LOW); delay(500); }