Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Arduino UNO – I2C EEPROM beschreiben & lesen

Posted on 28. April 202310. März 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie du einen EEPROM Baustein per I2C Schnittstelle am Arduino UNO beschreiben und lesen kannst.

Der hier verwendete EEPROM Baustein hat eine Speicherkapazität von 256K, dieses ist für die meisten Daten am Arduino ausreichend. Wenn du mehr Daten speichern möchtest, dann empfehle ich dir eine SD-Karte mit entsprechendem Modul.

  • Benötigte Ressourcen für den Anschluss des EEPROM an den Arduino UNO
  • Technische Daten des EEPROM mit 256 K
  • Aufbau des I2C EEPROM Moduls
  • Anschluss des EEPROM an den Arduino
  • Programmieren des EEPROMs in der Arduino IDE 2.0
    • Beispiel – schreiben & lesen von Daten eines EEPROMs

Benötigte Ressourcen für den Anschluss des EEPROM an den Arduino UNO

In den nachfolgenden Abschnitten möchte ich dir zeigen wie du den EEPROM anschließt und programmierst, dafür benötigst du:

  • einen Arduino UNO*,
  • ein USB-Datenkabel*,
  • ein EEPROM mit I2C Schnittstelle*,
  • vier Breadboardkabel*, männlich-weiblich, 10 cm

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Technische Daten des EEPROM mit 256 K

Es gibt die EEPROMs in diversen Ausführungen, allgemein unterscheiden sich diese jedoch in der Speicherkapazität. Wie erwähnt verwende ich ein Modul mit 256 K Speicher.

Varianten24C16 – 16 K
24C64 – 64 K
24C128 – 128 K
24C256 – 256 K
Betriebsspannung2.7 V bis 5.5 V
SchnittstelleI2C
Auswahl der Adresse per Jumper
maximale Schreib-/Lese Zyklenüber 1 Million mal
Datensicherheitspeichern der Daten bis zu 40 Jahre

Aufbau des I2C EEPROM Moduls

Kommen wir zunächst zum Aufbau des EEPROM Moduls.

Mit den Jumpern A0 bis A2 können wir verschiedene I2C Adressen setzen und somit entweder mehrere dieser Module einsetzen oder bei Adressenkonflikt diesen lösen.

A0
I2C device found at address 0x19  !
I2C device found at address 0x51  !
I2C device found at address 0x59  !

A1
I2C device found at address 0x1A  !
I2C device found at address 0x52  !
I2C device found at address 0x5A  !

A2 & ohne Jumper
I2C device found at address 0x18  !
I2C device found at address 0x50  !
I2C device found at address 0x58  !

Die I2C Adressen habe ich mit dem I2C Scanner von Arduino Playground ermittelt.

Die Adressen wechselst du, indem du EINEN der Jumper auf die vordere Position setzt. In dem Bild ist der Jumper A0 aktiv und können die I2C Adressen 0x19, 0x51 & 0x59 verwendet werden.

256K EEPROM Jumper A0 aktiv
256K EEPROM Jumper A0 aktiv

Anschluss des EEPROM an den Arduino

Durch die I2C Schnittstelle ist zumindest der Anschluss sehr einfach. Du findest am Arduino die I2C Schnittstelle an den Pins analog A4 = SDA & analog A5 = SCL.

Arduino UNO SCL & SDA Pins
Arduino UNO SCL & SDA Pins

Die Schaltung ist dann wirklich recht einfach, denn wir müssen lediglich die nachfolgenden Pins verbinden:

I2C EEPROMArduino UNO
VCC3.3V
GNDGND
SDAanalog A4
SCLanalog A5
Arduino UNO mit I2C 256K EEPROM
Arduino UNO mit I2C 256K EEPROM

Programmieren des EEPROMs in der Arduino IDE 2.0

Auf der offiziellen Seite von Arduino.cc findest du ein Beispiel, wo du lediglich deine I2C Adresse anpassen musst. Ich habe dieses einmal genommen und zu einer kleinen Bibliothek umgeschrieben / exportiert. Der Code wurde von mir nicht wesentlich verändert. Ich habe lediglich die Funktionen so aufbereitet, dass diese über eine Klasse geladen werden.

Du kannst dir diese von meinem GitHub Repository StefanDraeger/AT24C256EEPROM_lib als ZIP-Datei herunterladen.

Diese ZIP-Datei kannst du dann über Sketch > Include Library > Add ZIP. Library… in deine IDE integrieren.

Beispiel – schreiben & lesen von Daten eines EEPROMs

Das nachfolgende Beispiel findest du ebenfalls in der Bibliothek.

#include <at24c256eeprom.h>
#include <Wire.h>

//create object of type AT24C 
//with I2C Address 0x51
AT24C at24c256 = AT24C(0x51);

void setup() {
  //content to write
  char data[] = "Hello World!";
  //begin OneWire communication
  Wire.begin();
  //begin serial communication
  Serial.begin(9600);
  //write content from field data to eeprom
  at24c256.write_page(0, (byte *)data, sizeof(data));
  //tiny break for 100 ms.
  delay(100);
  //write message to serial interface
  Serial.println("Write data successfull.");
}

void loop() {
  //start with address 0
  int addr = 0;
  //read the first byte
  byte b = at24c256.read_byte(0);
  //as long as the value in the variable b
  //is not equal to 0 makes..
  while (b != 0) {
    //print character to serial interface
    Serial.print((char)b);
    //increment address
    addr++;
    //read content from new address
    b = at24c256.read_byte(addr);
  }
  //send linebreak to serial interface
  Serial.println(" ");
  //tiny break for 2 seconds
  delay(2000);
}

Wenn man das Beispiel auf den Arduino überspielt hat, wird nachfolgende Ausgabe erzeugt.

Wir können nun die nachfolgenden Zeilen aus dem Beispiel entfernen oder auskommentieren und erneut das Beispiel hochladen, um zu verifizieren, dass wirklich die Daten aus dem EEPROM geladen werden.

Zeilen entfernen/auskommentieren zum verifizieren
Zeilen entfernen/auskommentieren zum verifizieren

2 thoughts on “Arduino UNO – I2C EEPROM beschreiben & lesen”

  1. fendermann sagt:
    3. November 2023 um 13:25 Uhr

    Hallo Stefan,
    danke für den super Beitrag.
    darf ich mil die Adresstabelle korrigieren?

    A2 A1 A0
    0 0 0 0x50
    0 0 1 0x51
    0 1 0 0x52
    0 1 1 0x53
    1 0 0 0x54
    1 0 1 0x55
    1 1 0 0x56
    1 1 1 0x57

    Antworten
  2. Pingback: Arduino-Temperaturüberwachung: Relais per Schwellwert & Tastersteuerung mit LCD-Anzeige - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}