Kuinka käyttää Arduino EEPROM -ohjelmaa tietojen tallentamiseen tehosyklien välillä

Kuinka käyttää Arduino EEPROM -ohjelmaa tietojen tallentamiseen tehosyklien välillä

Tiesitkö, että Arduino voi tallentaa tietoja, kun se on sammutettu? Ei luonnos, joka on tallennettu flash -muistiin. Puhun muuttuvista tiedoista EEPROMissa. Liity kanssani, kun näytän sinulle, miten voit lukea ja kirjoittaa sille ja mitä se voi tehdä projekteillesi.





Jos olet uusi Arduino, tutustu meidän aloittelijan opas .





Mikä on EEPROM?

EEPROM tarkoittaa sähköisesti pyyhittävä ohjelmoitava vain luku -muisti . Se on eräänlainen haihtumaton muisti. Älä huolestu, jos et ymmärrä mitä se tarkoittaa. Se yksinkertaisesti tallentaa tietoja, vaikka virta olisi katkaistu (toisin RAM , joka tarvitsee sähköä tietojen säilyttämiseksi).



EEPROM on rakennettu lukemattomiin suorittimiin, kuten Matrix Creator Pi HAT -laitteessa käytettävään kenttäohjelmoitavaan porttijärjestelmään (FPGA). Kaikissa Arduinoissa on saatavana EEPROM, mutta kapasiteetti vaihtelee malleittain. Varmista, että katsot osto -oppaamme saadaksesi lisätietoja jokaisesta levystä.

Kuinka se toimii?

EEPROM poistetaan sähköisesti ja ohjelmoidaan käyttämällä Fowler-Nordheimin tunnelointi . Sinun ei tarvitse tietää teknisiä yksityiskohtia voidaksesi käyttää sitä. Perusolettamus on, että sähköä käytetään binääridatan (eli binäärisen) muuttamiseen. Se voidaan lukea, poistaa ja kirjoittaa uudelleen sähköisesti.



Onneksi, Arduinon kieli tietojen vaihtaminen on helppoa ilman tietojenkäsittelytieteen tutkintoa.

Elinajanodote

Vaikka EEPROMia on helppo käyttää Arduinossa, sen käyttöikä on rajallinen. EEPROM on määritelty käsittelemään 100 000 luku-/poistokierrosta. Tämä tarkoittaa, että voit kirjoittaa ja poistaa/kirjoittaa uudelleen 100 000 kertaa ennen kuin EEPROM muuttuu epävakaaksi. Todellisuudessa, Atmel (Arduino 'Chip' -valmistajat) puolijohteet voivat käsitellä enemmän tai vähemmän jaksoja, riippuen kunkin prosessorin toleransseista.





Kun sijainti on kirjoitettu ja poistettu liian monta kertaa, se voi alkaa muuttua epäluotettavaksi. Se ei ehkä palauta oikeaa dataa tai palauttaa arvoa viereiseltä bitiltä.

Tämä saattaa kuulostaa monelta kirjoitukselta, mutta tämän rajan saavuttaminen voi olla helppoa, jos lukee ja kirjoittaa ohjelmallisesti (esim silmukka , esimerkiksi). Tietojen lukeminen ei heikennä piitä, vain kirjoittaminen tekee . Voit lukea EEPROMin tietoja niin paljon kuin haluat ilman pelkoa!





On tärkeää huomata, että tämä raja koskee jokaista muistipaikkaa. Arduinollasi saattaa olla EEPROMissa käytettävissä vähintään 1000 muistipaikkaa, joten jos kirjoitat liian monta kertaa yhteen paikkaan, se vaikuttaa vain kyseiseen sijaintiin, ei muihin. Myöhemmin keskustelen kulumisen tasoitus , joka voi vähentää EEPROM -kulumista jakamalla tietoja tasaisesti - mitä SSD -levyt hyödyntävät.

Mihin se on hyödyllistä?

EEPROM on uskomattoman hyödyllinen Arduino -projekteillesi. Koska se muistaa tiedot, vaikka virta katkaistaan, voit tallentaa Arduinon tilan. Ehkä voit rakentaa laser -tornin, joka muistaa asemansa tai kuinka paljon 'ammuksia' on jäljellä. Voit käyttää sitä laitteiden hallintaan ja kirjata kuinka monta kertaa laitteesi on aktivoitu.

EEPROM sopii parhaiten esimerkiksi asetuksiin tai korkeisiin pisteisiin. Jos haluat kirjoittaa säännöllisesti monimutkaisia ​​tietoja, harkitse ethernet-suojaa (sisäänrakennetulla SD-korttipaikalla) tai Raspberry Pi: tä.

Lue ja kirjoita

Nyt kun teoria on poissa tieltä, katsotaanpa kuinka lukea ja kirjoittaa tietoja! Sisällytä ensin kirjasto (tämä tulee Arduino IDE: n mukana):

#include

Kirjoita nyt tietoja:

EEPROM.write(0, 12);

Tämä kirjoittaa numeron 12 EEPROM -sijaintiin 0 . Jokainen kirjoitus kestää 3,3 millisekuntia ( neiti , 1000 ms = 1 sekunti). Huomaa, kuinka et voi kirjoittaa kirjeitä ( hiiltyä ), vain numerot nollasta 255 ovat sallittuja. Siksi EEPROM on ihanteellinen asetuksiin tai korkeisiin pisteisiin, mutta ei niin hyvä pelaajien nimiin tai sanoihin. On mahdollista tallentaa tekstiä tällä menetelmällä (voit yhdistää jokaisen aakkosten kirjaimen numeroon), mutta sinulla on oltava useita muistipaikkoja - yksi paikka kullekin kirjaimelle.

Näin luet tiedot:

kuinka tehdä kuva kuvassa Macissa
EEPROM.read(0);

Nolla on osoite, johon kirjoitit aiemmin. Jos et ole kirjoittanut osoitteeseen aiemmin, se palauttaa suurimman arvon ( 255 ).

Saatavilla on hieman hyödyllisempiä menetelmiä. Oletetaan, että haluat tallentaa desimaalin tai merkkijonon:

EEPROM.put(2,'12.67');

Tämä kirjoittaa tiedot useisiin paikkoihin - jotain, joka olisi helppo kirjoittaa itse, mutta silti kätevä. Sinun on edelleen seurattava, kuinka monessa paikassa tämä on kirjoitettu, jotta et vahingossa korvaa tietojasi! Sinun on käytettävä saada tapa noutaa nämä tiedot uudelleen:

float f = 0.00f;
EEPROM.get(2, f);

Get -arvo tallennetaan kellumaan f muuttuja. Huomaa, miten tämä alustetaan 0.00f arvona. The f ilmoittaa kääntäjälle, että haluat ehkä tallentaa suuren määrän tähän muuttujaan, joten se määrittää joitain lisäkokoonpanoja kääntämisen aikana.

The EEPROM -dokumentaatio päällä Arduinon verkkosivusto on paljon enemmän esimerkkejä.

Käytä tasoitusta

Kulumisen tasoitus on tekniikka, jota käytetään vähentämään EEPROMin kulumista ja pidentämään sen käyttöikää. Jos työskentelet vain pienen projektin parissa, sinun ei ehkä tarvitse huolehtia tästä.

Yksinkertaisin asia, jonka voit tehdä EEPROM -elämän säilyttämiseksi, on rajoittaa kirjoituksesi tiettyyn paikkaan. Voit tehdä tämän lukemalla osoitteen ensin, ja jos arvo, jonka haluat kirjoittaa, on jo olemassa, sinun ei tarvitse kirjoittaa sitä uudelleen (muista, että tietojen lukeminen ei haittaa). Näin teet sen:

int safeWrite(int data, address) {
if(EEPROM.read(address) != data) {
EEPROM.write(address, data);
}
}

Se on melko yksinkertainen koodi, mutta se toimii vain kokonaislukuille! Pyörän keksimisen sijaan käytä Arduino EEPROM -kirjastoon rakennettua toimintoa:

EEPROM.update(address, val);

Tällä menetelmällä on täsmälleen sama allekirjoitus kuin kirjoittaa menetelmä, vaikka se voi vähentää merkittävästi tarvittavien kirjoitusten määrää!

Jos sinun on kirjoitettava paljon tietoja ja olet huolissasi piin kulumisesta, voit seurata, kuinka monta kirjoitusta teet, vaikka tämä käyttää enemmän dataa. Tässä karkea toteutus pseudokoodi :

var address = 0
var writeCount = 0
if(writeCount > 75,000)
writeCount = 0
address += 1
EEPROM.write(address, data)

Sinun on tallennettava osoite ja writeCount EEPROMiin (ja writeCount on jaettava eri osoitteisiin). Useimmiten tämä suojaustaso ei ole tarpeen. Arduinot ovat myös niin halpoja, joten varmuuskopion ostaminen voi olla helpompaa!

Sinun pitäisi nyt tietää tarpeeksi tehdäksesi upeita projekteja. Kerro meille, jos teet jotain hienoa! Tunnistatko kaikki kuvien laitteet? Jätä meille kommentti alla!

Jaa Jaa Tweet Sähköposti 5 vinkkiä VirtualBox Linux -koneiden lataamiseen

Oletko kyllästynyt virtuaalikoneiden heikkoon suorituskykyyn? Tässä on, mitä sinun pitäisi tehdä parantaaksesi VirtualBox -suorituskykyäsi.

Lue seuraava
Liittyvät aiheet
  • tee-se-itse
  • Arduino
  • Elektroniikka
Kirjailijasta Joe Coburn(136 artikkelia julkaistu)

Joe on valmistunut tietojenkäsittelytieteestä Lincolnin yliopistosta Iso -Britanniasta. Hän on ammattimainen ohjelmistokehittäjä, ja kun hän ei lentä droneilla tai kirjoita musiikkia, hänet voidaan usein ottaa valokuvista tai videoista.

Lisää Joe Coburnilta

tilaa uutiskirjeemme

Liity uutiskirjeeseemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia ​​e -kirjoja ja ainutlaatuisia tarjouksia!

Klikkaa tästä tilataksesi