Ձեր Arduino- ի ներկառուցված EEPROM` 6 քայլ
Ձեր Arduino- ի ներկառուցված EEPROM` 6 քայլ
Anonim
Ձեր Arduino- ի ներկառուցված EEPROM- ը
Ձեր Arduino- ի ներկառուցված EEPROM- ը

Այս հոդվածում մենք պատրաստվում ենք ուսումնասիրել ներքին EEPROM- ը մեր Arduino տախտակներում: Ի՞նչ է EEPROM- ը ձեզանից ոմանք գուցե ասում են: EEPROM- ը էլեկտրականապես ջնջվող ծրագրավորվող միայն կարդալու հիշողություն է:

Դա անկայուն հիշողության մի ձև է, որը կարող է հիշել անջատված հոսանքի կամ Arduino- ի վերագործարկումից հետո: Այս տեսակի հիշողության գեղեցկությունն այն է, որ մենք կարող ենք ավելի էականորեն պահել էսքիզի շրջանակներում ստեղծված տվյալները:

Ինչու՞ օգտագործեք ներքին EEPROM- ը: Այն իրավիճակների համար, երբ տվյալներին հատուկ իրավիճակին անհրաժեշտ է ավելի մշտական տուն: Օրինակ ՝ Arduino- ի վրա հիմնված առևտրային ծրագրի եզակի սերիական համարը և արտադրության ամսաթիվը պահելը. Էսքիզի գործառույթը կարող է սերիական համարը ցուցադրել LCD- ով, կամ տվյալները կարդալ ՝ «ծառայության ուրվագիծ» վերբեռնելով: Կամ գուցե անհրաժեշտ լինի հաշվել որոշակի իրադարձություններ և թույլ չտալ օգտվողին վերականգնել դրանք, օրինակ ՝ հեռաչափ կամ աշխատանքային ցիկլերի հաշվիչ:

Քայլ 1: Տվյալների ո՞ր տեսակ կարող է պահվել:

Տվյալների ո՞ր տեսակ կարող է պահվել
Տվյալների ո՞ր տեսակ կարող է պահվել

Thingանկացած բան, որը կարող է ներկայացվել որպես տվյալների բայթ: Տվյալների մեկ բայթ կազմված է ութ բիթ տվյալներից: Բիթը կարող է լինել կամ (արժեք 1) կամ անջատված (արժեք 0), և կատարյալ են թվերը երկուական տեսքով ներկայացնելու համար: Այլ կերպ ասած, երկուական թիվը կարող է օգտագործել միայն զրո և մեկ արժեք ներկայացնելու համար: Այսպիսով, երկուականությունը հայտնի է նաև որպես «բազա -2», քանի որ այն կարող է օգտագործել միայն երկու թվանշան:

Ինչպե՞ս կարող է երկու թվանշանի օգտագործմամբ երկուական թիվը ներկայացնել ավելի մեծ թիվ: Այն օգտագործում է շատ մեկեր և զրոներ: Եկեք քննենք երկուական թիվ, ասենք 10101010. Քանի որ սա բազա -2 թիվ է, յուրաքանչյուր թվանշան ներկայացնում է 2-ը x հզորությանը ՝ x = 0-ից սկսած:

Քայլ 2:

Պատկեր
Պատկեր

Տեսեք, թե ինչպես է երկուական թվի յուրաքանչյուր թվանշան կարող ներկայացնել բազային -10 համարը: Այսպիսով, վերը նշված երկուական թիվը հիմքի 10-ի մեջ ներկայացնում է 85-ը: 85 արժեքը հիմք -10 արժեքների գումարն է: Մեկ այլ օրինակ `11111111 երկուական թվով հավասար է 255 -ի 10 -ի հիմքում:

Քայլ 3:

Այժմ այդ երկուական թվի յուրաքանչյուր թվանշան օգտագործում է մեկ «բիթ» հիշողություն, և ութ բիթը կազմում է բայթ: Մեր Arduino տախտակների միկրոկառավարիչների ներքին սահմանափակումների պատճառով մենք կարող ենք EEPROM- ում պահել միայն 8-բիթանոց համարներ (մեկ բայթ):

Սա սահմանափակում է համարի տասնորդական արժեքը զրոյից մինչև 255 -ի միջև ընկած ժամանակահատվածը: Այնուհետև ձեզնից է կախված, թե ինչպես կարող են ձեր տվյալները ներկայացված լինել այդ թվային տիրույթում: Թույլ մի տվեք, որ դա ձեզ վհատեցնի. Ճիշտ ձևով դասավորված թվերը կարող են գրեթե ամեն ինչ ներկայացնել: Կա մեկ սահմանափակում, որին պետք է ուշադրություն դարձնել. Քանի անգամ կարող ենք կարդալ կամ գրել EEPROM- ին: Ըստ արտադրող Atmel- ի, EEPROM- ը լավ է կարդալու/գրելու 100,000 ցիկլերի համար (տե՛ս տվյալների թերթիկը):

Քայլ 4:

Այժմ մենք գիտենք մեր բիթերը և բայթերը, քանի՞ բայթ կարող է պահվել մեր Arduino- ի միկրոկոնտրոլերում: Պատասխանը տատանվում է ՝ կախված միկրոկառավարիչի մոդելից: Օրինակ:

  • Տախտակներ Atmel ATmega328- ով, ինչպիսիք են Arduino Uno- ն, Uno SMD- ն, Nano- ն, Lilypad- ը և այլն - 1024 բայթ (1 կիլոբայթ)
  • Տախտակներ ՝ Atmel ATmega1280 կամ 2560, օրինակ ՝ Arduino Mega շարքով ՝ 4096 բայթ (4 կիլոբայթ)
  • Տախտակներ ՝ Atmel ATmega168- ով, ինչպես օրինակ ՝ օրիգինալ Arduino Lilypad- ը, հին Nano- ն, Diecimila- ն և այլն `512 բայթ:

Եթե վստահ չեք, նայեք Arduino ապարատային ինդեքսին կամ հարցրեք ձեր տախտակի մատակարարին: Եթե Ձեզ անհրաժեշտ է ավելի շատ EEPROM պահեստ, քան այն, ինչ առկա է ձեր միկրոկառավարիչի միջոցով, հաշվի առեք արտաքին I2C EEPROM- ի օգտագործումը:

Այս պահին մենք այժմ հասկանում ենք, թե ինչպիսի տվյալներ և որքան կարող են պահվել մեր Arduino- ի EEPROM- ում: Հիմա ժամանակն է սա գործի դնել: Ինչպես արդեն նշվեց, մեր տվյալների համար կա սահմանափակ տարածք: Հետևյալ օրինակներում մենք կօգտագործենք տիպիկ Arduino տախտակ ATmega328- ով ՝ 1024 բայթ EEPROM պահեստով:

Քայլ 5:

EEPROM- ից օգտվելու համար անհրաժեշտ է գրադարան, այնպես որ ձեր ուրվագծերում օգտագործեք հետևյալ գրադարանը.

#ներառել «EEPROM.h»

Մնացածը շատ պարզ է: Տվյալների մի մասը պահելու համար մենք օգտագործում ենք հետևյալ գործառույթը.

EEPROM. գրել (a, b);

A պարամետրը EEPROM- ի դիրքն է ՝ պահպանելու տվյալների ամբողջ թիվը (0 ~ 255) b. Այս օրինակում մենք ունենք 1024 բայթ հիշողության պահպանում, ուստի a- ի արժեքը 0 -ից 1023 -ի միջև է: Տվյալների մի կտոր ստանալու համար նույնքան պարզ է ՝ օգտագործեք.

z = EEPROM.read (a);

Որտեղ z- ն ամբողջ թիվն է ՝ EEPROM դիրքի տվյալները պահելու համար a. Հիմա օրինակ տեսնելու համար:

Քայլ 6:

Պատկեր
Պատկեր

Այս ուրվագիծը կստեղծի 0 -ից 255 -ի միջև պատահական թվեր, կպահի դրանք EEPROM- ում, այնուհետև կվերցնի և կցուցադրի դրանք սերիական մոնիտորի վրա: EEsize փոփոխականը ձեր EEPROM չափի վերին սահմանն է, այնպես որ (օրինակ) Arduino Uno- ի համար դա կլինի 1024, կամ Mega- ի համար `4096:

// Arduino ներքին EEPROM ցուցադրում

#ներառում

int zz; int EEsize = 1024; // չափը ձեր բայթի EEPROM- ի բայթերով

դատարկ կարգավորում ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println («Պատահական թվեր գրել …»); համար (int i = 0; i <EEsize; i ++) {zz = պատահական (255); EEPROM.write (i, zz); } Serial.println (); համար (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM դիրք:"); Serial.print (a); Serial.print («պարունակում է»); Serial.println (zz); ուշացում (25); }}

Սերիական մոնիտորից ելքը կհայտնվի, ինչպես ցույց է տրված նկարում:

Այսպիսով, դուք ունեք դա ՝ մեր Arduino համակարգերով տվյալների պահեստավորման ևս մեկ օգտակար միջոց: Թեև դա ամենահետաքրքիր ձեռնարկը չէ, այն, անշուշտ, օգտակար է:

Այս գրառումը ձեզ է բերել pmdway.com- ը `ամեն ինչ արտադրողների և էլեկտրոնիկայի սիրահարների համար` անվճար առաքում ամբողջ աշխարհով:

Խորհուրդ ենք տալիս: