Satura rādītājs:

Arduino EEPROM iestatījumu inicializēšana: 5 soļi
Arduino EEPROM iestatījumu inicializēšana: 5 soļi

Video: Arduino EEPROM iestatījumu inicializēšana: 5 soļi

Video: Arduino EEPROM iestatījumu inicializēšana: 5 soļi
Video: Extract GPS location in Arduino with NEO-6m or NEO-7M module 2024, Novembris
Anonim
Image
Image
Kas ir EEPROM?
Kas ir EEPROM?

Sveiki visiem, Katram Arduino ir neliela iebūvēta atmiņa ar nosaukumu EEPROM. Varat to izmantot, lai saglabātu sava projekta iestatījumus, kur izvēlētās vērtības tiks saglabātas starp barošanas cikliem, un tās būs pieejamas nākamreiz, kad ieslēgsit Arduino. Man ir foršs triks, kas iemācīs jums, kā pirmajā palaišanas reizē inicializēt noklusējuma vērtību kopu, tāpēc palieciet apkārt, lai uzzinātu, kā to izdarīt.

1. darbība. Kas ir EEPROM?

Kas ir EEPROM?
Kas ir EEPROM?

EEPROM ir niecīga atmiņas krātuve, kuras vērtības tiek saglabātas pat tad, kad Arduino plate ir izslēgta. Tas darbojas kā mazs cietais disks, lai jūs varētu saglabāt parametrus nākamajai ierīces ieslēgšanas reizei. Atkarībā no Arduino plates veida jums katrā būs pieejams atšķirīgs krātuves apjoms, piemēram, Uno ir 1024 baiti, Mega ir 4096 baiti, un LilyPad ir 512 baiti.

Ir svarīgi atzīmēt, ka visiem EEPROM ir ierobežots rakstīšanas ciklu skaits. Atmel norāda Arduino EEPROM paredzamo dzīves ilgumu aptuveni 100 000 rakstīšanas/dzēšanas ciklu laikā. Tas var izklausīties pēc daudz rakstāmiem, taču var būt viegli sasniegt šo ierobežojumu, ja lasāt un rakstāt cilpā. Kad atrašanās vieta ir uzrakstīta un izdzēsta pārāk daudz reižu, tā var kļūt neuzticama. Tas var neatgriezt pareizos datus vai atdot vērtību no blakus esošā bita.

2. darbība. Importējiet bibliotēku

Importējiet bibliotēku
Importējiet bibliotēku
Importējiet bibliotēku
Importējiet bibliotēku
Importējiet bibliotēku
Importējiet bibliotēku

Lai izmantotu šo atmiņu, mēs vispirms iekļaujam Arduino nodrošināto bibliotēku. Bibliotēka nodrošina divas metodes: lasīt un rakstīt, lai veiktu atbilstošas darbības. Lasīšanas funkcija pieņem adresi, no kuras mēs vēlamies lasīt, savukārt rakstīšanas funkcija pieņem gan adresi, gan vērtību, kuru mēs vēlamies rakstīt.

Mūsu piemērā mērķis ir sagatavot iestatījumu masīvu katrā Arduino sākumā, tāpēc mēs vispirms definējam masīvu, ko izmantosim uzglabāšanai, un definēsim adreses katram iestatījumam, kuru mēs vēlamies saglabāt. Mikroshēmā, kurā mums ir pieejami 1024 baiti, adreses būs no 0 līdz 1023.

3. darbība: iestatiet inicializācijas karodziņu

Iestatiet inicializācijas karodziņu
Iestatiet inicializācijas karodziņu

Iestatījumu noklusējuma vērtību sākotnējās iestatīšanas viltība ir izmantot vienu no adresēm kā indikatoru neatkarīgi no tā, vai iestatījumi ir inicializēti. Šim nolūkam esmu izmantojis pēdējo adreses atrašanās vietu, jo tā bieži netiek izmantota nekam citam. Funkcija loadSettings vispirms pārbaudīs šo atrašanās vietu, ja tajā saglabātā vērtība ir “T”, un, ja tā nav, tā tiks iestatīta, iestatot, rakstot katrai no tām sākotnējās vērtības. Kad tas ir izdarīts, tagad tā iestatīs tās vietas vērtību, kurā mēs izsekojam inicializētos iestatījumus, uz “T” raksturu, un nākamreiz, kad ieslēgsim Arduino, mēs vairs neuzsāksim vērtības, bet lasīsim saglabātos datus mūsu masīvs.

4. darbība. Iestatījumu atjaunināšana

Iestatījumu atjaunināšana
Iestatījumu atjaunināšana

Vērtību atjaunināšanai mēs varam izmantot rakstīšanas funkciju, kāda tā bija inicializācijas laikā, bet labāks veids ir izmantot piedāvāto atjaunināšanas funkciju. Šī funkcija nodrošina, ka tā vispirms pārbauda, vai vērtība, kuru mēs mēģinām saglabāt, ir tā pati, kas jau ir EEPROM, un ja tā ir, tā netiek atjaunināta. To darot, tā mēģina samazināt rakstīšanas darbību skaitu, lai pagarinātu EEPROM kalpošanas laiku.

5. solis: izbaudiet

Izbaudi!
Izbaudi!
Izbaudi!
Izbaudi!

Es ceru, ka šī pamācība jums bija noderīga un ka jums izdevās kaut ko iemācīties. Avota kods ir pieejams manā GitHub lapā, un saite ir zemāk. Ja jums ir kādi ieteikumi, lūdzu, atstājiet tos komentāros un neaizmirstiet abonēt manu YouTube kanālu, lai iegūtu vairāk līdzīgu videoklipu.

Ieteicams: