Jūsu Arduino iebūvētais EEPROM: 6 soļi
Jūsu Arduino iebūvētais EEPROM: 6 soļi
Anonim
Jūsu Arduino iebūvētais EEPROM
Jūsu Arduino iebūvētais EEPROM

Šajā rakstā mēs pārbaudīsim iekšējo EEPROM mūsu Arduino dēļos. Kas ir EEPROM, ko daži no jums varētu teikt? EEPROM ir elektriski dzēšama programmējama tikai lasāma atmiņa.

Tā ir nepastāvīgas atmiņas forma, kas spēj atcerēties lietas, izslēdzot strāvu vai pēc Arduino atiestatīšanas. Šāda veida atmiņas skaistums ir tāds, ka mēs varam pastāvīgi saglabāt skicē iegūtos datus.

Kāpēc izmantot iekšējo EEPROM? Situācijām, kad situācijai raksturīgiem datiem ir nepieciešama pastāvīgāka māja. Piemēram, saglabājot komerciāla, uz Arduino balstīta projekta unikālo sērijas numuru un izgatavošanas datumu-skices funkcija var parādīt sērijas numuru LCD ekrānā, vai arī datus var nolasīt, augšupielādējot “pakalpojuma skici”. Vai arī jums, iespējams, vajadzēs saskaitīt noteiktus notikumus un neļaut lietotājam tos atiestatīt, piemēram, odometru vai darbības ciklu skaitītāju.

1. darbība: kāda veida datus var saglabāt?

Kāda veida datus var uzglabāt?
Kāda veida datus var uzglabāt?

Viss, ko var attēlot kā datu baitus. Vienu datu baitu veido astoņi datu biti. Bits var būt ieslēgts (vērtība 1) vai izslēgts (vērtība 0), un tas ir lieliski piemērots skaitļu attēlošanai binārā formā. Citiem vārdiem sakot, binārais skaitlis vērtības attēlošanai var izmantot tikai nulles un vienus. Tādējādi bināro sauc arī par “bāzi-2”, jo tajā var izmantot tikai divus ciparus.

Kā binārais skaitlis, kurā izmantoti tikai divi cipari, var attēlot lielāku skaitli? Tas izmanto daudz vienību un nulles. Pārbaudīsim bināro skaitli, teiksim 10101010. Tā kā šis ir bāzes 2 skaitlis, katrs cipars apzīmē 2 līdz x pakāpei, sākot no x = 0.

2. darbība:

Attēls
Attēls

Skatiet, kā katrs binārā skaitļa cipars var attēlot 10 bāzes skaitli. Tātad iepriekš minētais binārais skaitlis ir 85 bāzē 10-vērtība 85 ir bāzes 10 vērtību summa. Vēl viens piemērs - 11111111 binārā ir vienāds ar 255 10. bāzē.

3. darbība:

Tagad katrs šī binārā skaitļa cipars izmanto vienu atmiņas “bitu”, un astoņi biti veido baitu. Sakarā ar mūsu Arduino plates mikrokontrolleru iekšējiem ierobežojumiem, mēs varam EEPROM saglabāt tikai 8 bitu numurus (vienu baitu).

Tas ierobežo skaitļa decimāldaļas vērtību no nulles līdz 255. Tad jums ir jāizlemj, kā jūsu datus var attēlot ar šo skaitļu diapazonu. Neļaujiet tam sevi atbaidīt - pareizi sakārtoti skaitļi var attēlot gandrīz jebko! Ir jāņem vērā viens ierobežojums - cik reizes mēs varam lasīt vai rakstīt EEPROM. Saskaņā ar ražotāja Atmel teikto, EEPROM ir piemērots 100 000 lasīšanas/rakstīšanas cikliem (skatīt datu lapu).

4. solis:

Tagad mēs zinām savus bitus un baitus, cik baitus var uzglabāt mūsu Arduino mikrokontrollerī? Atbilde atšķiras atkarībā no mikrokontrollera modeļa. Piemēram:

  • Dēļi ar Atmel ATmega328, piemēram, Arduino Uno, Uno SMD, Nano, Lilypad uc - 1024 baiti (1 kilobaits)
  • Dēļi ar Atmel ATmega1280 vai 2560, piemēram, Arduino Mega sērija - 4096 baiti (4 kilobaiti)
  • Dēļi ar Atmel ATmega168, piemēram, oriģinālais Arduino Lilypad, vecais Nano, Diecimila utt. - 512 baiti.

Ja neesat pārliecināts, apskatiet Arduino aparatūras indeksu vai jautājiet savam dēļa piegādātājam. Ja jums ir nepieciešams vairāk EEPROM krātuves, nekā tas ir pieejams ar jūsu mikrokontrolleru, apsveriet iespēju izmantot ārēju I2C EEPROM.

Šajā brīdī mēs tagad saprotam, kāda veida datus un cik daudz var uzglabāt mūsu Arduino EEPROM. Tagad ir pienācis laiks to īstenot. Kā minēts iepriekš, mūsu datiem ir ierobežots daudzums vietas. Turpmākajos piemēros mēs izmantosim tipisku Arduino plati ar ATmega328 ar 1024 baitiem EEPROM krātuves.

5. darbība:

Lai izmantotu EEPROM, ir nepieciešama bibliotēka, tāpēc skicēs izmantojiet šādu bibliotēku:

#include "EEPROM.h"

Pārējais ir ļoti vienkāršs. Lai saglabātu datus, mēs izmantojam šādu funkciju:

EEPROM.write (a, b);

Parametrs a ir pozīcija EEPROM, lai saglabātu datu b veselu skaitli (0 ~ 255). Šajā piemērā mums ir 1024 baiti atmiņas krātuves, tāpēc a vērtība ir no 0 līdz 1023. Lai izgūtu kādu datu gabalu, ir tikpat vienkārša, izmantojiet:

z = EEPROM.lasījums (a);

Kur z ir vesels skaitlis, lai saglabātu datus no EEPROM pozīcijas a. Tagad, lai redzētu piemēru.

6. darbība

Attēls
Attēls

Šī skice izveidos nejaušus skaitļus no 0 līdz 255, saglabās tos EEPROM, pēc tam izgūs un parādīs tos sērijas monitorā. Mainīgais EE izmērs ir jūsu EEPROM lieluma augšējā robeža, tāpēc (piemēram) tas būtu 1024 Arduino Uno vai 4096 Mega.

// Arduino iekšējā EEPROM demonstrācija

#iekļaut

int zz; int EEizmērs = 1024; // jūsu paneļa EEPROM lielums baitos

anulēts iestatījums ()

{Sērijas sākums (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Nejaušu skaitļu rakstīšana …"); par (int i = 0; i <EEsize; i ++) {zz = nejauši (255); EEPROM.write (i, zz); } Sērijas.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM pozīcija:"); Sērijas nospiedums (a); Serial.print ("satur"); Sērijas.println (zz); kavēšanās (25); }}

Parādīsies seriālā monitora izeja, kā parādīts attēlā.

Tātad jums tas ir vēl viens noderīgs veids, kā saglabāt datus ar mūsu Arduino sistēmām. Lai gan tā nav aizraujošākā apmācība, tā noteikti ir noderīga.

Šo ziņu jums sniedza pmdway.com - viss veidotājiem un elektronikas entuziastiem ar bezmaksas piegādi visā pasaulē.

Ieteicams: