EEPROM i integruar i Arduino -s tuaj: 6 hapa
EEPROM i integruar i Arduino -s tuaj: 6 hapa
Anonim
EEPROM i integruar i Arduino -s tuaj
EEPROM i integruar i Arduino -s tuaj

Në këtë artikull ne do të shqyrtojmë EEPROM -in e brendshëm në bordet tona Arduino. Çfarë është një EEPROM që disa prej jush mund të thonë? Një EEPROM është një kujtesë e programueshme që mund të fshihet elektrikisht, vetëm për lexim.

Shtë një formë e kujtesës jo të paqëndrueshme që mund të mbajë mend gjërat me energjinë e fikur, ose pas rivendosjes së Arduino. Bukuria e këtij lloji të kujtesës është se ne mund të ruajmë të dhëna të krijuara brenda një skice në një bazë më të përhershme.

Pse do të përdorni EEPROM -in e brendshëm? Për situatat kur të dhënat që janë unike për një situatë kanë nevojë për një shtëpi më të përhershme. Për shembull, ruajtja e numrit serik unik dhe data e prodhimit të një projekti komercial të bazuar në Arduino-një funksion i skicës mund të shfaqë numrin serik në një LCD, ose të dhënat mund të lexohen duke ngarkuar një 'skicë shërbimi'. Ose mund t'ju duhet të numëroni ngjarje të caktuara dhe të mos lejoni që përdoruesi t'i rivendosë ato-siç është një kilometër kilometër ose një numërues i ciklit të funksionimit.

Hapi 1: Çfarë lloj të dhënash mund të ruhen?

Çfarë lloj të dhënash mund të ruhen?
Çfarë lloj të dhënash mund të ruhen?

Çdo gjë që mund të përfaqësohet si bajt të të dhënave. Një bajt i të dhënave përbëhet nga tetë bit të të dhënave. Një bit mund të jetë ose i ndezur (vlera 1) ose i fikur (vlera 0), dhe janë perfekte për përfaqësimin e numrave në formë binare. Me fjalë të tjera, një numër binar mund të përdorë vetëm zero dhe njësi për të përfaqësuar një vlerë. Kështu binari njihet edhe si "bazë-2", pasi mund të përdorë vetëm dy shifra.

Si mund të përfaqësojë një numër binar vetëm me përdorimin e dy shifrave një numër më të madh? Përdor shumë njëshe dhe zero. Le të shqyrtojmë një numër binar, të themi 10101010. Meqenëse ky është një numër bazë-2, çdo shifër përfaqëson 2 në fuqinë e x, nga x = 0 e tutje.

Hapi 2:

Imazhi
Imazhi

Shikoni se si çdo shifër e numrit binar mund të përfaqësojë një numër bazë-10. Pra, numri binar i mësipërm përfaqëson 85 në bazën-10-vlera 85 është shuma e vlerave bazë-10. Një shembull tjetër - 11111111 në binar është 255 në bazën 10.

Hapi 3:

Tani çdo shifër në atë numër binar përdor një 'bit' të kujtesës, dhe tetë bit bëjnë një bajt. Për shkak të kufizimeve të brendshme të mikrokontrolluesve në bordet tona Arduino, ne mund të ruajmë vetëm numra 8-bit (një bajt) në EEPROM.

Kjo kufizon që vlera dhjetore e numrit të bjerë në mes të zero dhe 255. Pastaj ju takon juve të vendosni se si të dhënat tuaja mund të përfaqësohen me atë diapazon numrash. Mos lejoni që kjo t'ju zhgënjejë - numrat e rregulluar në mënyrën e duhur mund të përfaqësojnë pothuajse gjithçka! Ekziston një kufizim për t'u marrë parasysh - numri i herëve që mund t'i lexojmë ose shkruajmë në EEPROM. Sipas prodhuesit Atmel, EEPROM është e mirë për 100, 000 cikle leximi/shkrimi (shiko fletën e të dhënave).

Hapi 4:

Tani ne i dimë bitët dhe bajtët tanë, sa bajtë mund të ruhen në mikrokontrolluesin tonë Arduino? Përgjigja ndryshon në varësi të modelit të mikrokontrolluesit. Për shembull:

  • Pllaka me një Atmel ATmega328, të tilla si Arduino Uno, Uno SMD, Nano, Lilypad, etj. - 1024 bajt (1 kilobajt)
  • Pllaka me një Atmel ATmega1280 ose 2560, siç është seria Arduino Mega - 4096 bajt (4 kilobajt)
  • Pllaka me një Atmel ATmega168, siç është Arduino Lilypad origjinal, Nano i vjetër, Diecimila etj - 512 bajt.

Nëse nuk jeni të sigurt, hidhini një sy indeksit të harduerit Arduino ose pyesni furnizuesin tuaj të bordit. Nëse keni nevojë për më shumë ruajtje EEPROM sesa ajo që është në dispozicion me mikrokontrolluesin tuaj, merrni parasysh përdorimin e një EEPROM të jashtëm I2C.

Në këtë pikë ne tani e kuptojmë se çfarë lloj të dhënash dhe sa mund të ruhen në EEPROM -in tonë të Arduino -s. Tani është koha për ta vënë këtë në veprim. Siç u diskutua më herët, ka një sasi të kufizuar hapësire për të dhënat tona. Në shembujt e mëposhtëm, ne do të përdorim një bord tipik Arduino me ATmega328 me 1024 bajt të ruajtjes EEPROM.

Hapi 5:

Për të përdorur EEPROM, kërkohet një bibliotekë, prandaj përdorni bibliotekën e mëposhtme në skicat tuaja:

#përfshi "EEPROM.h"

Pjesa tjetër është shumë e thjeshtë. Për të ruajtur një pjesë të të dhënave, ne përdorim funksionin e mëposhtëm:

EEPROM.shkruani (a, b);

Parametri a është pozicioni në EEPROM për të ruajtur numrin e plotë (0 ~ 255) të të dhënave b. Në këtë shembull, ne kemi 1024 byte të ruajtjes së kujtesës, kështu që vlera e a është midis 0 dhe 1023. Për të marrë një pjesë të të dhënave është po aq e thjeshtë, përdorni:

z = EEPROM.lexoni (a);

Ku z është një numër i plotë për të ruajtur të dhënat nga pozicioni EEPROM a. Tani për të parë një shembull.

Hapi 6:

Imazhi
Imazhi

Kjo skicë do të krijojë numra të rastit midis 0 dhe 255, do t'i ruajë në EEPROM, pastaj do t'i marrë dhe shfaq ato në monitorin serik. Ndryshorja EEsize është kufiri i sipërm i madhësisë tuaj EEPROM, kështu që (për shembull) kjo do të ishte 1024 për një Arduino Uno, ose 4096 për një Mega.

// Demonstrimi i brendshëm EEPROM i Arduino

#përfshi

int zz; int EEsize = 1024; // madhësia në byte të EEPROM të bordit tuaj

void setup ()

{Serial.fillo (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Shkrimi i numrave të rastit …"); për (int i = 0; i <EEsize; i ++) {zz = i rastësishëm (255); EEPROM.shkruaj (i, zz); } Serial.println (); për (int a = 0; a <EEsize; a ++) {zz = EEPROM.lexoni (a); Serial.print ("Pozicioni EEPROM:"); Serial.print (a); Serial.print ("përmban"); Serial.println (zz); vonesa (25); }}

Dalja nga monitori serik do të shfaqet, siç tregohet në imazh.

Pra, ju e keni atë, një mënyrë tjetër e dobishme për të ruajtur të dhënat me sistemet tona Arduino. Edhe pse nuk është mësimi më emocionues, sigurisht që është i dobishëm.

Ky postim ju është sjellë nga pmdway.com - gjithçka për prodhuesit dhe entuziastët e elektronikës, me shpërndarje falas në të gjithë botën.

Recommended: