Reklāma

Vai zinājāt, ka Arduino var glabāt datus, kad tas ir izslēgts? Ne zibatmiņā saglabātā skice. Es runāju par mainīgiem datiem EEPROM. Pievienojieties man, kad es parādīšu, kā lasīt un rakstīt, un ko tas var dot jūsu projektiem.

Ja esat jauns Arduino pārstāvis, noteikti pārbaudiet mūsu vietni iesācēju ceļvedis Darba sākšana ar Arduino: rokasgrāmata iesācējiemArduino ir atvērtā koda elektronikas prototipu veidošanas platforma, kuras pamatā ir elastīga, ērti lietojama aparatūra un programmatūra. Tas ir paredzēts māksliniekiem, dizaineriem, hobijiem un ikvienam, kurš ir ieinteresēts radīt interaktīvus objektus vai vidi. Lasīt vairāk .

Kas ir EEPROM?

EEPROM nozīmē elektroniski izdzēšama programmējama tikai lasāma atmiņa. Tas ir nemainīgas atmiņas veids. Neuztraucieties, ja nesaprotat, ko tas nozīmē. Tas vienkārši saglabā datus pat ar atvienotu strāvu (atšķirībā no Operatīvā atmiņa Ātrs un netīrs RAM ceļvedis: kas jums jāzinaOperatīvā atmiņa ir būtiska katra datora sastāvdaļa, taču tā var mulsināt. Mēs to sadalām viegli saprotamā izpratnē. Lasīt vairāk

instagram viewer
, kurai ir nepieciešama elektrība, lai saglabātu visus datus).

EEPROM piemērs nošauts

EEPROM ir iebūvēts neskaitāmos daudzos procesoros, piemēram, lauka programmējamā vārtu masīvā (FPGA), ko izmanto Matricas veidotājs Matrix Creator for Raspberry Pi ReviewMatrix Creator ir Šveices armijas nazis jūsu Pi, ar 15 sensoriem, sakaru protokolu komplektu, RGB gaismas diožu gredzenu, mikrofona masīvu un daudz ko citu! Lasīt vairāk Pi HAT. Visiem Arduinos ir pieejams EEPROM, taču jauda katram modelim ir atšķirīga. Pārliecinieties, ka ielūkojaties mūsu vietnē pirkšanas ceļvedis Arduino pirkšanas ceļvedis: kuru dēli jums vajadzētu saņemt?Tur ir tik daudz dažādu Arduino plātņu veidu, lai jūs sajauktu. Kuras jums vajadzētu iegādāties savam projektam? Ļaujiet mums palīdzēt ar šo Arduino pirkšanas rokasgrāmatu! Lasīt vairāk lai iegūtu sīkāku informāciju par katru dēli.

Kā tas darbojas?

EEPROM tiek elektriski izdzēsts un ieprogrammēts, izmantojot Fowler-Nordheim tunelēšana. Lai varētu to izmantot, jums nav jāzina tehniskā informācija. Pamatnoteikums ir tāds, ka bināro datu mainīšanai tiek izmantota elektrība (kas ir binārs Kas ir binārais? [Tehnoloģiju skaidrojums]Ņemot vērā, ka binārā ir tik būtiska datoru pastāvēšanai, šķiet dīvaini, ka mēs nekad iepriekš neesam pievērsušies šai tēmai - tāpēc šodien es domāju, ka es sniegšu īsu pārskatu par to, kas ir binārais ... Lasīt vairāk ). To var lasīt, izdzēst un pārrakstīt elektroniski.

Par laimi Arduino valoda padara datu maiņu vienkāršu, bez vajadzības iegūt datorzinātņu grādu.

Tuvplāns

Dzīves ilgums

Lai gan Arduino ir viegli izmantot EEPROM, tā darbības laiks ir ierobežots. EEPROM ir paredzēts 100 000 lasīšanas / dzēšanas ciklu apstrādei. Tas nozīmē, ka jūs varat rakstīt un pēc tam izdzēst / pārrakstīt datus 100 000 reizes, pirms EEPROM kļūs nestabils. Īstenībā, Atmels (Arduino “Chip” ražotāji) var vadīt lielāku vai mazāku ciklu skaitu atkarībā no katra procesora pielaidēm.

Tuvplāns

Kad atrašanās vieta ir pārāk daudz reizes uzrakstīta un izdzēsta, tā var kļūt neuzticama. Tas var neatgriezt pareizos datus vai atgriezt vērtību no blakus esošā bita.

Var šķist, ka daudz raksta, taču šo robežu var viegli sasniegt, ja lasāt un rakstāt programmētiski (a cilpa, piemēram). Datu nolasīšana nenoārdina silīciju, to dara tikai rakstīšana. Jūs varat bez bailēm lasīt datus no EEPROM, cik vien vēlaties!

Ir svarīgi ņemt vērā, ka šis ierobežojums attiecas uz katru atmiņas vietu. Jūsu Arduino var būt 1000 vai vairāk atmiņas vietu, kas ir pieejamas EEPROM, tāpēc, ja pārāk daudz reizes rakstāt vienā vietā, tiek ietekmēta tikai šī atrašanās vieta, nevis kāda no citām. Vēlāk es diskutēšu nodiluma nolīdzināšana, kas var samazināt EEPROM nodilumu, vienmērīgi sadalot datus - kaut kas tāds SSD Kā noteikt SSD atlikušo mūžuVisu SSD disku kalpošanas laiks ir ierobežots rakstīšanas ciklu dēļ (lai gan šis kalpošanas laiks ir daudz ilgāks, nekā jūs varētu domāt). Lūk, kā jūs varat novērtēt, cik tuvu esat beigām. Lasīt vairāk izmantot.

Kāpēc tas ir noderīgs?

EEPROM ir neticami noderīgs jūsu Arduino projektiem. Tā kā tas atceras datus pat tad, kad strāva tiek noņemta, jūs varētu uzglabāt Arduino stāvokli. Varbūt jūs varētu uzbūvēt lāzera tornītis Pew Pew! Kā izveidot lāzera tornīti ar ArduinoVai tu esi garlaikots? Varētu arī uzbūvēt lāzera tornīti. Lasīt vairāk kas atceras tā stāvokli vai cik daudz “munīcijas” ir palicis. Jūs to varētu izmantot kontrolēt savas ierīces Vadības ierīces no Arduino: mājas automatizācijas sākumsPagājušajā reizē es jums parādīju dažus veidus, kā padarīt jūsu Arduino projektus runas vadāmus, izmantojot SiriProxy, OS X iebūvēti runājami vienumi un daži Automator skripti vai pat speciāla balss atpazīšanas aparatūra mikroshēma. Es ... Lasīt vairāk un reģistrējiet, cik reizes jūsu ierīce tika aktivizēta.

EEPROM ir vispiemērotākais tādām lietām kā iestatījumi vai augsts punktu skaits. Ja vēlaties regulāri rakstīt sarežģītus datus, iespējams, apsveriet an Ethernet vairogs Piešķiriet savam Arduino projektam savu Mini-tīmekļa serveri ar Ethernet vairoguPirms kāda laika es jums parādīju, kā iestatīt interneta vadības sistēmu savam Arduino - taču tai bija jāpaliek savienotai ar datoru, izmantojot USB, lai uzturētu interneta savienojumu ... Lasīt vairāk (ar iebūvētu SD slotu) vai a Aveņu Pi Aveņu Pi: neoficiāla apmācībaNeatkarīgi no tā, vai esat pašreizējais Pi īpašnieks, kurš vēlas uzzināt vairāk, vai šīs kredītkartes lieluma ierīces potenciālais īpašnieks, tas nav ceļvedis, kuru vēlaties palaist garām. Lasīt vairāk .

Tuvplāns

Lasi un raksti

Tagad, kad šī teorija ir sākusi darboties, apskatīsim, kā lasīt un rakstīt dažus datus! Pirmkārt, iekļaujiet bibliotēku (tas nāk ar Arduino IDE):

# iekļaut 

Tagad uzrakstiet dažus datus:

EEPROM.write (0, 12);

Tas raksta numuru 12 uz EEPROM atrašanās vietu 0. Katra rakstīšana prasa 3,3 milisekundes (jaunkundze, 1000 ms = 1 sekunde). Ievērojiet, kā nevarat rakstīt vēstules (char), ir atļauti tikai skaitļi no nulles līdz 255. Tāpēc EEPROM ir ideāli piemērots uzstādījumiem vai labiem rezultātiem, bet ne tik labi spēlētāju vārdiem vai vārdiem. Izmantojot šo metodi, ir iespējams uzglabāt tekstu (katru alfabēta burtu var kartēt ar ciparu), tomēr jums būs jābūt vairākām atmiņas vietām - katram burtam viena vieta.

Šie dati tiek lasīti šādi:

EEPROM.lasījums (0);

Nulle ir adrese, uz kuru iepriekš rakstījāt. Ja jūs iepriekš neesat rakstījis uz adresi, tā atgriezīs maksimālo vērtību (255).

Ir dažas nedaudz noderīgākas metodes. Informējiet, ka vēlējāties saglabāt decimālzīmi vai virkni:

EEPROM.put (2, "12,67");

Šādi dati tiek ierakstīti vairākās vietās - kaut ko tādu būtu viegli uzrakstīt pats, taču parocīgs. Jums joprojām būs jāseko līdzi, cik vietās ir rakstīts, lai jūs nejauši netiktu pārrakstīts. Jums jāizmanto gūt metode, lai atkal iegūtu šos datus:

pludiņš f = 0,00f; EEPROM.get (2, f);

Iegūtā vērtība tiek saglabāta pludiņā f mainīgs. Ievērojiet, kā tas tiek inicializēts 0,00f kā vērtību. f ļauj kompilatoram zināt, ka jūs varētu vēlēties saglabāt lielu skaitu šajā mainīgajā, tāpēc kompilēšanas laikā tas izveido dažas papildu konfigurācijas.

EEPROM dokumentācija uz Arduino vietne ir daudz vairāk piemēru.

Nodiluma nolīdzināšana

Nodiluma nolīdzināšana ir paņēmiens, ko izmanto, lai samazinātu nodilumu un palielinātu EEPROM kalpošanas laiku. Ja strādājat tikai pie neliela projekta, jums, iespējams, par to nav jāuztraucas.

Tuvplāns

Vienkāršākā lieta, ko varat darīt, lai saglabātu EEPROM dzīvi, ir ierobežot rakstīšanu noteiktā vietā. To var izdarīt, vispirms nolasot adresi, un, ja vēlamā vērtība jau ir parādīta, tā vairs nav jāraksta (atcerieties, ka datu lasīšana nekaitē). Lai to izdarītu, rīkojieties šādi:

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

Tas ir diezgan vienkāršs koda kods, tomēr tas darbojas tikai veseliem skaitļiem! Tā vietā, lai no jauna izgudrotu riteni, izmantojiet Arduino EEPROM bibliotēkā iebūvēto funkciju:

EEPROM.update (adrese, val);

Šīs metodes paraksts ir tieši tāds pats kā rakstīt metode, kaut arī tā var krasi samazināt nepieciešamo rakstījumu skaitu!

Ja jums ir jāraksta daudz datu un esat norūpējies par silīcija nolietošanos, varat sekot līdzi, cik daudz jūs rakstāt, lai gan tas izmanto vairāk datu. Šeit ir aptuvena ieviešana pseidokods:

var adrese = 0. var writeCount = 0, ja (writeCount> 75 000) writeCount = 0 adrese + = 1 EEPROM.write (adrese, dati)

Jums būs jāsaglabā adrese un writeCount EEPROM (un writeCount būs jāsadala pa adreses vietām). Lielākoties šāds aizsardzības līmenis nebūs vajadzīgs. Arduinos ir arī tik lēti, tāpēc jums var būt vieglāk iegādāties rezerves kopiju!

Tagad jums vajadzētu zināt pietiekami daudz, lai izveidotu dažus satriecošus projektus. Paziņojiet mums, ja pagatavojat kaut ko foršu! Vai jūs varat atpazīt visas attēlos redzamās ierīces? Atstājiet mums komentāru zemāk!

Džo ir absolvējis datorzinātnes Linkolna universitātē, Lielbritānijā. Viņš ir profesionāls programmatūras izstrādātājs, un, kad viņš nelido ar droniem un neraksta mūziku, viņu bieži var atrast fotografējot vai producējot video.