Arduino дээр өгөгдлийг хэрхэн хадгалах вэ

Агуулгын хүснэгт:

Arduino дээр өгөгдлийг хэрхэн хадгалах вэ
Arduino дээр өгөгдлийг хэрхэн хадгалах вэ

Видео: Arduino дээр өгөгдлийг хэрхэн хадгалах вэ

Видео: Arduino дээр өгөгдлийг хэрхэн хадгалах вэ
Видео: Arduino SD карт болон Excel-д өгөгдөл бүртгэх заавар 2024, May
Anonim

Arduino хавтан нь хэд хэдэн төрлийн санах ойтой байдаг. Нэгдүгээрт, энэ нь програмыг гүйцэтгэх явцад хувьсагчдыг хадгалахад ашигладаг статик RAM (санах ойн санах ой) юм. Хоёрдугаарт, таны бичсэн зурсан зургуудыг хадгалдаг флаш санах ой юм. Гуравдугаарт, энэ нь мэдээллийг байнга хадгалахад ашиглаж болох EEPROM юм. Эхний төрлийн санах ой нь хувирамтгай бөгөөд Arduino-г дахин ачаалсны дараа бүх мэдээллийг алддаг. Хоёрдахь хоёр төрлийн санах ой нь цахилгаан унтраасны дараа ч гэсэн шинээр бичих хүртэл мэдээллийг хадгалдаг. Сүүлийн хэлбэрийн санах ой - EEPROM нь өгөгдлийг шаардлагатай үед бичих, хадгалах, унших боломжийг олгодог. Энэ санах ойг бид одоо авч үзэх болно.

EEPROM Arduino дээр өгөгдлийг хадгалах
EEPROM Arduino дээр өгөгдлийг хадгалах

Шаардлагатай

  • - Ардуино;
  • - компьютер.

Зааварчилгаа

1-р алхам

EEPROM гэдэг нь Electrically Erasable Programmable Read-only Memory гэсэн үгний товчлол юм. цахилгаан арилгадаг зөвхөн унших санах ой. Энэ санах ой дахь өгөгдлийг цахилгаан унтрааснаас хойш хэдэн арван жилийн турш хадгалах боломжтой. Дахин бичих мөчлөгийн тоо хэдэн сая удаа дарааллаар явагдана.

Arduino дахь EEPROM санах ойн хэмжээ харьцангуй хязгаарлагдмал байдаг: ATmega328 микроконтроллер дээр суурилсан самбаруудын хувьд (жишээлбэл, Arduino UNO ба Nano) санах ойн хэмжээ 1 KB, ATmega168 ба ATmega8 самбаруудад 512 байт, ATmega2560 ба ATmega1280 - 4 КБ.

Алхам 2

Arduino-д зориулсан EEPROM-тэй ажиллахын тулд Arduino IDE-д анхдагчаар орсон тусгай номын сан бичсэн болно. Номын сан нь дараахь шинж чанаруудыг агуулдаг.

унших (хаяг) - EEPROM-оос 1 байт унших; хаяг - өгөгдлийг унших хаяг (0-ээс эхэлсэн нүд);

бичих (хаяг, утга) - утгын утгыг (1 байт, 0-ээс 255 хүртэлх тоо) хаягийн хаягаар санах ойд бичих;

шинэчлэх (хаяг, утга) - хуучин агуулга нь шинэ агуулгаасаа ялгаатай байвал хаяг дээрх утгыг орлуулна;

get (хаяг, өгөгдөл) - заасан төрлийн өгөгдлийг санах ойгоос хаягаар унших;

put (хаяг, өгөгдөл) - тодорхойлсон өгөгдлийг хаягаар санах ойд бичих;

EEPROM [хаяг] - өгөгдлийг санах ойд бичих, унших зорилгоор "EEPROM" танигчийг массив болгон ашиглах боломжийг олгодог.

Ноорог дээр номын санг ашиглахын тулд #include 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 = word (hi, low), hi ба low нь өндөр ба доод байтуудын утга юм.

Бидний хэзээ ч бичиж байгаагүй бусад бүх нүдэнд 255 дугаар хадгалагдана.

EEPROM Arduino руу бүхэл тоог бичих
EEPROM Arduino руу бүхэл тоог бичих

Алхам 4

Хөвөгч цэг, мөр бичихдээ EEPROM.put () аргыг, уншихдаа EEPROM.get () -г ашиглаарай.

Setup () процедурт бид эхлээд хөвөгч цэгийн f тоог бичнэ. Дараа нь бид float төрлийн эзэлдэг санах ойн нүдний тоогоор хөдөлж, 20 нүдний багтаамжтай char мөрийг бичнэ.

Loop () процедурт бид санах ойн бүх нүднүүдийг уншиж, тэдгээрийг "float", дараа нь "char" хэлбэрээр шифрлэж, үр дүнг цуваа порт руу гаргахыг хичээх болно.

0-ээс 3 хүртэлх нүднүүдийн утгыг хөвөгч цэгийн дугаар, харин 4-өөс эхлэн мөр болгон зөв тодорхойлсон болохыг та харж болно.

Үр дүн нь ovf (overflow) ба nan (тоо биш) нь тоонуудыг хөвөгч цэгийн тоонд зөв хөрвүүлэх боломжгүй болохыг харуулж байна. Хэрэв та ямар төрлийн өгөгдлийг санах ойн нүднүүд эзэлж байгааг мэддэг бол танд ямар ч асуудал гарахгүй.

EEPROM Arduino руу хөвөгч цэг, мөр бичих
EEPROM Arduino руу хөвөгч цэг, мөр бичих

Алхам 5

Маш тохиромжтой шинж чанар бол санах ойн нүднүүдийг EEPROM массивын элемент гэж үзэх явдал юм. Энэхүү ноорог дээр бид setup () процедурт эхлээд өгөгдлөө эхний 4 байт дээр бичиж, loop () процедурт минут тутамд бүх нүднүүдийн өгөгдлийг уншаад цуваа порт руу гаргана.

Зөвлөмж болгож буй: