Reklaam
Kas teadsite, et Arduino saab andmeid välja lülitada? Mitte välkmällu salvestatud visand. Ma räägin muutuvatest andmetest EEPROM-is. Liituge minuga, kui näitan teile, kuidas seda lugeda ja kirjutada ning mida see teie projektide heaks teha saab.
Kui olete Arduino uustulnuk, tutvuge kindlasti meiega algajate juhend Arduino kasutamise alustamine: Algajate juhendArduino on avatud lähtekoodiga elektroonika prototüüpide platvorm, mis põhineb paindlikul, hõlpsasti kasutataval riist- ja tarkvaral. See on mõeldud kunstnikele, disaineritele, harrastajatele ja kõigile, kes on huvitatud interaktiivsete objektide või keskkondade loomisest. Loe rohkem .
Mis on EEPROM?
EEPROM tähistab elektriliselt kustutatav programmeeritav lugemismälu. See on teatud tüüpi muutumatu mälu. Ärge muretsege, kui te ei saa aru, mida see kõik tähendab. See salvestab andmeid isegi ilma vooluta (erinevalt RAM RAM-i kiire ja räpane juhend: mida peate teadmaRAM on iga arvuti oluline komponent, kuid see võib tekitada segadust. Jaotame selle hõlpsasti mõistetavaks, nagu saate aru. Loe rohkem
, mis vajab andmete säilitamiseks elektrit).EEPROM on sisse ehitatud hulgaliselt protsessoreid, näiteks väljal programmeeritavat väravamassiivi (FPGA), mida kasutatakse Maatriksi looja Maatriksi looja Vaarika Pi ülevaate jaoksMaatriksi looja on teie Pi jaoks mõeldud Šveitsi armee nuga, millel on 15 andurit, sideprotokollide komplekt, RGB LED-de rõngas, mikrofonimassiiv ja palju muud! Loe rohkem Pi HAT. Kõigil Arduinos on EEPROM saadaval, kuid võimsus varieerub mudelite kaupa. Tutvuge kindlasti meiega ostujuhend Arduino ostujuhend: millise tahvli peaksite saama?Seal on nii palju erinevaid Arduino tahvleid, teile tuleks andeks anda, et olete segaduses. Millist peaksite oma projekti jaoks ostma? Aitame teid selle Arduino ostujuhendiga! Loe rohkem lisateavet iga tahvli kohta.
Kuidas see töötab?
EEPROM kustutatakse ja programmeeritakse elektriliselt, kasutades Fowler-Nordheimi tunneldamine. Selle kasutamiseks ei pea te tehnilisi üksikasju teadma. Põhieelduseks on, et kahendandmete muutmiseks kasutatakse elektrit (mis on binaarne Mis on binaarne? [Tehnoloogia selgitatud]Arvestades, et binaarne on nii oluline arvutite olemasolu jaoks, tundub veider, et me pole seda teemat kunagi varem käsitlenud - seega mõtlesin täna, et annaksin lühikese ülevaate sellest, mida binaarne ... Loe rohkem ). Seda saab elektrooniliselt lugeda, kustutada ja uuesti kirjutada.
Õnneks Arduino keel muudab andmete muutmise lihtsaks, ilma et oleks vaja arvutiteaduse kraadi.
Oodatav eluiga
Ehkki EEPROMi on Arduinos lihtne kasutada, on selle eluiga piiratud. EEPROM on ette nähtud 100 000 lugemis- / kustutamistsükli käitlemiseks. See tähendab, et enne kui EEPROM muutub ebastabiilseks, saate andmeid kirjutada ja seejärel kustutada / uuesti kirjutada 100 000 korda. Reaalsuses, Atmel (Arduino “kiibi” tootjad) saavad pooljuhtidega hakkama suurema või väiksema arvu tsüklitega, sõltuvalt iga protsessori tolerantsidest.
Kui asukoht on liiga palju kordi kirjutatud ja kustutatud, võib see muutuda ebausaldusväärseks. See ei pruugi tagastada õigeid andmeid või naabrusbiti väärtust.
See võib tunduda palju kirjutatud, kuid selle piirini jõudmine võib olla lihtne, kui lugeda ja kirjutada programmiliselt (a-s silmus, näiteks). Andmete lugemine ei ränista räni, ainult kirjutamine teeb. Saate ilma hirmuta lugeda andmeid EEPROM-ist nii palju kui soovite!
Oluline on arvestada, et see piirang kehtib iga mälu asukoha kohta. Teie Arduinos võib EEPROM-is saadaval olla 1000 või enam mälupesa, nii et kui kirjutate ühte asukohta liiga palju kordi, mõjutab see ainult seda asukohta ja mitte ühtegi teist. Hiljem hakkan arutama kandke tasandamist, mis võib vähendada EEPROM-i kulumist, levitades andmeid ühtlaselt - midagi sellist SSD-d Kuidas hinnata teie SSD ülejäänud eluiga?Kõigi SSD-de eluiga on kirjutsüklite tõttu piiratud (kuigi see eluiga on palju pikem kui võite arvata). Siit saate teada, kuidas olete lõpuni lähedal. Loe rohkem ära kasutama.
Milleks see kasulik on?
EEPROM on teie Arduino projektide jaoks uskumatult kasulik. Kuna see mäletab andmeid isegi siis, kui vool on eemaldatud, võiksite Arduino osariigi talletada. Ehk saaksite ehitada a laser torn Pew Pew! Kuidas ehitada Laser-torn ArduinogaOn sul igav? Võib ka ehitada laseri torn. Loe rohkem mis mäletab selle positsiooni või kui palju "laskemoona" alles on. Sa võid seda kasutada kontrolli oma seadmeid Juhtimisseadmete ostmine Arduinost: koduautomaatika algusViimati näitasin teile mõnda viisi, kuidas muuta oma Arduino projektide kõne kontrollitavaks OS X-ide SiriProxy kaudu sisseehitatud kõnelevad üksused ja mõni Automatori skript või isegi spetsiaalne häältuvastuse riistvara kiip. Ma ... Loe rohkem ja logige, mitu korda teie seade aktiveeriti.
EEPROM sobib kõige paremini näiteks seadete või rekordite jaoks. Kui soovite regulaarselt keerukaid andmeid kirjutada, võiksite kaaluda järgmist Etherneti kilp Andke oma Arduino projektile oma mini-veebiserver koos Etherneti kilbigaMõni aeg tagasi näitasin teile, kuidas seadistada oma Arduino jaoks Interneti-juhtimissüsteem - kuid Interneti-ühenduse säilitamiseks pidi see olema USB-ühenduse kaudu arvutiga ühendatud ... Loe rohkem (sisseehitatud SD-pesaga) või a Vaarika Pi Vaarika Pi: mitteametlik juhendajaÜkskõik, kas olete praegune Pi omanik, kes soovib rohkem teada saada, või selle krediitkaardisuurusega seadme potentsiaalset omanikku, pole see juhend, mida soovite mööda lasta. Loe rohkem .
Loe ja kirjuta
Nüüd, kui teooria on otsas, vaatame, kuidas andmeid lugeda ja kirjutada! Esiteks lisage raamatukogu (see on kaasas Arduino IDE-ga):
# kaasata
Kirjutage nüüd mõned andmed:
EEPROM.write (0, 12);
See kirjutab numbri 12 EEPROM-i asukohta 0. Iga kirjutamine võtab 3,3 millisekundit (Prl, 1000 ms = 1 sekund). Pange tähele, kuidas te ei saa tähti kirjutada (char), on lubatud ainult numbrid nullist kuni 255-ni. Seetõttu sobib EEPROM ideaalselt seadete või rekordite jaoks, kuid mitte nii hea mängija nimede või sõnade jaoks. Selle meetodi abil on võimalik teksti salvestada (võite tähestiku iga tähe numbriks kaardistada), kuid teil peab olema mitu mälupesa - iga tähe jaoks üks koht.
Neid andmeid saate lugeda järgmiselt:
EEPROM.read (0);
Null on aadress, millele varem kirjutasite. Kui te pole varem aadressile kirjutanud, tagastab see maksimaalse väärtuse (255).
Saadaval on mõned veidi kasulikumad meetodid. Ütle, et soovisid kümnendkohta või stringi talletada:
EEPROM.put (2, "12,67");
See kirjutab andmed mitmesse kohta - midagi, mida oleks lihtne ise kirjutada, kuid mis on sellest hoolimata käepärane. Peate siiski jälgima, mitu asukohta see on kirjutanud, nii et te ei kirjuta oma andmeid kogemata üle! Peate kasutama saada meetod nende andmete uuesti hankimiseks:
ujuk f = 0,00f; EEPROM.get (2, f);
Saadud väärtus salvestatakse ujukisse f muutuja. Pange tähele, kuidas see käivitatakse 0,00f kui väärtus. f annab kompilaatorile teada, et võiksite selle muutujasse salvestada suure arvu, nii et see seadistab kompileerimise ajal mõned täiendavad konfiguratsioonid.
EEPROMi dokumentatsioon kohta Arduino veebisait on veel palju näiteid.
Kandke tasandamist
Kulumise tasandamine on tehnika, mida kasutatakse EEPROMi kulumise vähendamiseks ja tööea pikendamiseks. Kui töötate ainult väikese projekti kallal, ei pea te selle pärast muretsema.
EEPROM-i elu säilitamiseks on kõige lihtsam teha oma kirjutiste piiramine konkreetses kohas. Seda saate teha kõigepealt aadressi lugemisega ja kui väärtus, mida soovite kirjutada, on juba olemas, pole vaja seda uuesti kirjutada (pidage meeles, et andmete lugemine ei kahjusta). Nii toimiksite järgmiselt:
int safeWrite (int andmed, aadress) {if (EEPROM.read (address)! = andmed) {EEPROM.write (address, data); } }
See on üsna lihtne bit kood, kuid see töötab ainult täisarvude korral! Ratta uuesti leiutamise asemel kasutage Arduino EEPROM-i teeki sisseehitatud funktsiooni:
EEPROM.värskendus (aadress, val);
Sellel meetodil on täpselt sama allkiri kui kirjutada meetodit, ehkki see võib dramaatiliselt vähendada vajalike kirjutamiste arvu!
Kui peate kirjutama palju andmeid ja muretsema räni kulumise pärast, saate jälgida, kui palju kirjutate, ehkki see kasutab rohkem andmeid. Siin on töötlemata rakendamine pseudokood:
var aadress = 0. var writeCount = 0, kui (writeCount> 75 000) writeCount = 0 aadress + = 1 EEPROM.write (aadress, andmed)
Peate aadressi ja writeCount'i salvestama EEPROM-is (ja writeCount tuleb jagada aadresside asukohtade vahel). Enamasti pole see kaitsetase vajalik. Ka Arduinos on nii odavad, nii et teil on varukoopia ostmine lihtsam!
Nüüd peaksite teadma piisavalt, et mõnda vinge projekti teha. Andke meile teada, kui teete midagi lahedat! Kas te tunnete ära kõik piltidel olevad seadmed? Jäta meile kommentaar allpool!
Joe on lõpetanud Ühendkuningriigi Lincolni ülikooli arvutiteaduse. Ta on professionaalne tarkvaraarendaja ja kui ta ei lenda droonidega ega kirjuta muusikat, võib teda sageli leida pildistamas või videot tootmas.