Ինչպես պահել տվյալները Arduino- ում

Բովանդակություն:

Ինչպես պահել տվյալները Arduino- ում
Ինչպես պահել տվյալները Arduino- ում

Video: Ինչպես պահել տվյալները Arduino- ում

Video: Ինչպես պահել տվյալները Arduino- ում
Video: Уроки Arduino #4 - функции времени 2024, Մայիս
Anonim

Arduino տախտակներն ունեն մի քանի տեսակի հիշողություն: Նախ, դա ստատիկ RAM է (պատահական մուտքի հիշողություն), որն օգտագործվում է ծրագրի կատարման ընթացքում փոփոխականները պահելու համար: Երկրորդ, դա ֆլեշ հիշողությունն է, որը պահպանում է ձեր գրած ուրվագծերը: Եվ երրորդ ՝ դա EEPROM է, որը կարող է օգտագործվել տեղեկատվությունը մշտապես պահելու համար: Հիշողության առաջին տեսակն անկայուն է, այն կորցնում է ամբողջ տեղեկատվությունը Arduino- ն վերագործարկելուց հետո: Հիշողության երկրորդ երկու տեսակները պահպանում են տեղեկատվությունը, մինչև այն վերագրվում է նորով, նույնիսկ հոսանքն անջատելուց հետո: Հիշողության վերջին տեսակը ՝ EEPROM- ը, թույլ է տալիս գրել տվյալները, պահպանել և կարդալ ըստ անհրաժեշտության: Մենք հիմա կքննարկենք այս հիշողությունը:

Տվյալների պահպանում EEPROM Arduino- ում
Տվյալների պահպանում EEPROM Arduino- ում

Անհրաժեշտ է

  • - Arduino;
  • - համակարգիչ:

Հրահանգներ

Քայլ 1

EEPROM- ը նշանակում է էլեկտրականորեն ջնջվող ծրագրավորվող միայն կարդալու հիշողություն, այսինքն. էլեկտրականորեն ջնջվող միայն կարդալու հիշողություն: Այս հիշողության մեջ եղած տվյալները կարող են պահվել տասնյակ տարիներ ՝ հոսանքն անջատելուց հետո: Վերաշարադրման ցիկլերի քանակը մի քանի միլիոն անգամ է:

Arduino- ում EEPROM հիշողության քանակը բավականին սահմանափակ է. ATmega328 միկրոհամակարգչի վրա հիմնված տախտակների համար (օրինակ ՝ Arduino UNO և Nano) հիշողության ծավալը 1 ԿԲ է, ATmega168 և ATmega8 տախտակների համար ՝ 512 բայթ, ATmega2560 և ATmega1280 - 4 ԿԲ

Քայլ 2

Arduino- ի համար EEPROM- ի հետ աշխատելու համար գրվել է հատուկ գրադարան, որը լռելյայն ներառված է Arduino IDE- ի մեջ: Գրադարանը պարունակում է հետևյալ հատկությունները.

կարդալ (հասցե) - կարդում է 1 բայթ EEPROM- ից; հասցե - հասցե, որտեղից ընթերցվում են տվյալները (բջիջը սկսվում է 0-ից);

գրել (հասցե, արժեք) - գրում է արժեքի արժեքը (1 բայթ, համարը 0-ից 255) հիշողությանը հասցեի հասցեում.

թարմացում (հասցե, արժեք) - փոխարինում է հասցեի արժեքը, եթե դրա հին բովանդակությունը տարբերվում է նորից.

ստանալ (հասցե, տվյալներ) - կարդում է նշված տիպի տվյալները հիշողությունից հասցեում;

տեղադրել (հասցե, տվյալներ) - նշված հասցեի հիշողությանը գրում է նշված տեսակի տվյալները.

EEPROM [հասցե] - թույլ է տալիս օգտագործել «EEPROM» նույնացուցիչը որպես զանգված ՝ տվյալները գրելու և հիշողության մեջ կարդալու համար:

Էսքիզում գրադարանն օգտագործելու համար այն ներառում ենք # ներառել EEPROM.h հրահանգով:

Քայլ 3

Եկեք երկու ամբողջ թվեր գրենք EEPROM- ին, ապա կարդանք դրանք EEPROM- ից և դուրս բերենք դրանք սերիական պորտ:

0-ից 255 թվերի հետ խնդիրներ չկան, դրանք զբաղեցնում են ընդամենը 1 բայթ հիշողություն և գրվում են ցանկալի վայրում `օգտագործելով EEPROM.write () ֆունկցիան:

Եթե թիվը 255-ից մեծ է, ապա օգտագործելով highByte () և lowByte () օպերատորները, այն պետք է բաժանվի բայթերի և յուրաքանչյուր բայթ պետք է գրվի իր սեփական բջիջում: Այս դեպքում առավելագույն թիվը 65536 է (կամ 2 ^ 16):

Նայեք, 0 խցում սերիական պորտի մոնիտորը պարզապես ցուցադրում է 255-ից պակաս թվեր: 1-ին և 2-րդ բջիջներում մեծ թվով 789-ը պահվում է: Այս դեպքում 1-ին բջիջը պահպանում է արտահոսքի գործոնը 3-ը, իսկ 2-րդ բջիջում `21-ը: (այսինքն `789 = 3 * 256 + 21): Բայտերի մեջ վերլուծված մեծ քանակությունը վերամիավորելու համար կա բառի () գործառույթը. Int val = բառ (hi, ցածր), որտեղ hi և ցածր բարձր և ցածր բայթերի արժեքներն են:

Մնացած բոլոր բջիջներում, որոնք մենք երբեք չենք գրել, 255 համարները պահվում են:

EEPROM Arduino- ին ամբողջ թվեր գրելը
EEPROM Arduino- ին ամբողջ թվեր գրելը

Քայլ 4

Լողացող կետերի համարներ և տողեր գրելու համար օգտագործեք EEPROM.put () մեթոդը, իսկ կարդալու համար օգտագործեք EEPROM.get ():

Կարգավորման () կարգով մենք նախ գրում ենք լողացող կետի թիվը f: Հետո շարժվում ենք հիշողության բջիջների քանակով, որոնք լողացող տիպը զբաղեցնում է, և գրում ենք 20 բջիջ տարողությամբ ածուխի տող:

Օղակի () պրոցեդուրայում մենք կընթերցենք հիշողության բոլոր բջիջները և կփորձենք վերծանել դրանք նախ որպես «բոց» տիպ, այնուհետև որպես «քար» տիպ և արդյունքը դուրս բերել սերիական պորտ:

Դուք կարող եք տեսնել, որ 0-ից 3-ի բջիջներում արժեքը ճիշտ է սահմանվել որպես լողացող կետի թիվ, իսկ 4-ից սկսած `որպես լար:

Արդյունքում ստացվող ovf (գերբեռնվածություն) և nan (ոչ թիվ) արժեքները ցույց են տալիս, որ թիվը չի կարող ճիշտ փոխարկվել լողացող կետի համարի: Եթե հստակ գիտեք, թե տվյալների որ տեսակն է գրավում հիշողության բջիջները, ապա խնդիրներ չեք ունենա:

Լրող կետերի համարներ և տողեր գրելով EEPROM Arduino- ին
Լրող կետերի համարներ և տողեր գրելով EEPROM Arduino- ին

Քայլ 5

Շատ հարմար առանձնահատկությունն այն է, որ հիշողության բջիջները հիշատակվեն որպես EEPROM զանգվածի տարրեր: Այս ուրվագծում, կարգավորման () կարգով, մենք նախ տվյալները կգրենք առաջին 4 բայթերի մեջ, իսկ օղակի () կարգով ՝ ամեն րոպե մենք կկարդանք բոլոր բջիջներից ստացված տվյալները և դրանք դուրս կգանք սերիական նավահանգիստ:

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