Innholdsfortegnelse:

Legge til en 24LC256 EEPROM til Arduino Due: 3 trinn
Legge til en 24LC256 EEPROM til Arduino Due: 3 trinn

Video: Legge til en 24LC256 EEPROM til Arduino Due: 3 trinn

Video: Legge til en 24LC256 EEPROM til Arduino Due: 3 trinn
Video: Hvordan legge til en app i Microsoft Teams 2024, November
Anonim
Legger til en 24LC256 EEPROM til Arduino Due
Legger til en 24LC256 EEPROM til Arduino Due

Arduino due mangler en eeprom. Denne instruerbare legger til en og lar deg lagre verdier i ikke -flyktig minne som vil overleve en arduino -fastvareoppdatering.

Trinn 1: Breadboarding

Breadboarding
Breadboarding

Det er noen veldig gode instruksjoner her: https://www.hobbytronics.co.uk/arduino-external-eepromJeg fulgte dem akkurat nå. Bildet viser den brødbrettede kretsen. pinnene 1 til 4 og pinne 7 er jordet. pin 8 er koblet til 3,3V -forsyningen på kortet. De gule (pin 6) og hvite (pin 5) ledningene som er koblet til i2c SDA (data) og SCL (klokke) pins på kortet (nummerert 21 og 20).

Trinn 2: Kodetid

Kodetid
Kodetid

Her er noen kodebiter som jeg bruker i skissene mine. For det første, inkluder Wire -bibliotekets overskrifter et sted nær toppen av skissen din: / * Bruk 24LC256 EEPROM for å lagre innstillinger * / #include Legg deretter til noen funksjoner for å lese og skrive byte fra EEPROM (jeg bryr meg kun om individuelle byte, men det er en side skrive funksjon i brikken også). Vær oppmerksom på at det er en makrodefinisjon på 0x50.. dette er adressen til brikken på i2c -bussen (du kan koble til mer enn en i2c -ting på en i2c -buss og velge hvilken du vil snakke med ved å endre adressen). / * Disse to funksjonene hjelper oss med å skrive til 24LC256 EEPROM -brikken */ #define EEPROM_ADDR 0x50 void EEPROM_write (unsigned int addr, byte data) {int rdata = data; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.write (rdata); Wire.endTransmission (); //Serial.print("EEPROM skriv: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); forsinkelse (5); } byte EEPROM_read (usignert int addr) {byte data = 0xFF; Wire.beginTransmission (EEPROM_ADDR); Wire.write ((int) (addr >> 8)); // MSB Wire.write ((int) (addr & 0xFF)); // LSB Wire.endTransmission (); Wire.requestFrom (EEPROM_ADDR, 1); hvis (Wire.available ()) data = Wire.read (); //Serial.print("EEPROM read: addr: "); //Serial.print(addr); //Serial.print (""); //Serial.println(data); forsinkelse (5); returnere data; } Du kan fjerne kommentaren til Serial.print (…) -linjene hvis du vil se noen feilsøkingsutdata. I arduinos setup () -funksjonen starter du trådbiblioteket og kan lese i startverdier. Her leste jeg i to byte (flagg og max_cc), to ord (lean_min og lean_max) og en rekke ord sd_max [3]: // lese verdier lagret i EEPROM Wire.begin (); flagg = EEPROM_read (0); max_cc = EEPROM_read (1); lean_min = word (EEPROM_read (3), EEPROM_read (2)); lean_max = word (EEPROM_read (5), EEPROM_read (4)); for (int j = 0; j <3; j) {sd_max [j] = word (EEPROM_read (7 j*2), EEPROM_read (6 j*2)); } Her er koden som skriver dem inn i EEPROM: EEPROM_write (0, flagg); EEPROM_write (1, maks_cc); EEPROM_write (2, lowByte (lean_min)); EEPROM_write (3, highByte (lean_min)); EEPROM_write (4, lowByte (lean_max)); EEPROM_write (5, highByte (lean_max)); for (int j = 0; j <3; j) {EEPROM_write (6 j*2, lowByte (sd_max [j])); EEPROM_write (7 j*2, highByte (sd_max [j])); } Det er egentlig det.

Trinn 3: Wire It Up

Wire It Up
Wire It Up

Koble den til en veroboard for å skru den inn i et kabinett og jobben som er utført.

Anbefalt: