Arduino platalari bir necha turdagi xotiralarga ega. Birinchidan, bu statik operativ xotira (tasodifiy kirish xotirasi), bu dasturni bajarish paytida o'zgaruvchilarni saqlash uchun ishlatiladi. Ikkinchidan, bu siz yozgan eskizlarni saqlaydigan flesh xotira. Uchinchidan, bu ma'lumotni doimiy ravishda saqlash uchun ishlatilishi mumkin bo'lgan EEPROM. Birinchi turdagi xotira o'zgaruvchan, u Arduino-ni qayta ishga tushirgandan so'ng barcha ma'lumotlarni yo'qotadi. Xotiraning ikkinchi ikki turi, quvvat o'chirilganidan keyin ham, yangisi ustiga yozilguncha ma'lumotlarni saqlaydi. Xotiraning so'nggi turi - EEPROM - ma'lumotlarni yozish, saqlash va kerak bo'lganda o'qish imkonini beradi. Ushbu xotirani hozir ko'rib chiqamiz.
Kerakli
- - Arduino;
- - kompyuter.
Ko'rsatmalar
1-qadam
EEPROM "Elektr bilan o'chirilishi mumkin bo'lgan dasturlash uchun o'qiladigan xotira" ni anglatadi, ya'ni. elektr bilan o'chiriladigan faqat o'qish uchun mo'ljallangan xotira. Ushbu xotiradagi ma'lumotlar quvvat o'chirilganidan keyin o'nlab yillar davomida saqlanishi mumkin. Qayta yozish tsikllari soni bir necha million marta tartibda.
Arduino-da EEPROM xotirasining miqdori juda cheklangan: ATmega328 mikrokontrolleriga asoslangan platalar uchun (masalan, Arduino UNO va Nano), xotira hajmi 1 KB, ATmega168 va ATmega8 platalari uchun - 512 bayt, ATmega2560 va ATmega1280 uchun - 4 KB.
2-qadam
Arduino uchun EEPROM bilan ishlash uchun sukut bo'yicha Arduino IDE-ga kiritilgan maxsus kutubxona yozildi. Kutubxonada quyidagi xususiyatlar mavjud.
o'qish (manzil) - EEPROM-dan 1 bayt o'qiydi; manzil - ma'lumotlar o'qiladigan manzil (0 dan boshlanadigan katak);
yozish (manzil, qiymat) - qiymat qiymatini (1 bayt, 0 dan 255 gacha bo'lgan raqam) manzil manzilidagi xotiraga yozadi;
yangilash (manzil, qiymat) - agar uning eski tarkibi yangisidan farq qilsa, manzildagi qiymatni almashtiradi;
get (manzil, ma'lumotlar) - belgilangan turdagi ma'lumotlarni xotiradagi xotiradan o'qiydi;
put (manzil, ma'lumotlar) - belgilangan tipdagi ma'lumotlarni xotiradagi manzilga yozadi;
EEPROM [manzil] - ma'lumotlarni yozish va xotiradan o'qish uchun "EEPROM" identifikatorini massiv sifatida ishlatishga imkon beradi.
Eskizda kutubxonadan foydalanish uchun uni #include EEPROM.h yo'riqnomasiga kiritamiz.
3-qadam
EEPROM-ga ikkita butun sonni yozamiz, keyin ularni EEPROM-dan o'qiymiz va ketma-ket portga chiqaramiz.
0 dan 255 gacha bo'lgan raqamlar bilan bog'liq muammolar mavjud emas, ular faqat 1 baytli xotirani egallaydi va EEPROM.write () funktsiyasi yordamida kerakli joyga yoziladi.
Agar raqam 255 dan katta bo'lsa, u holda highByte () va lowByte () operatorlaridan foydalangan holda uni baytlarga bo'lish kerak va har bir bayt o'z katakchasiga yozilishi kerak. Bu holda maksimal raqam 65536 (yoki 2 ^ 16).
Qarangki, 0-katakdagi ketma-ket portli monitor shunchaki 255 dan kam sonni aks ettiradi. 1 va 2-katakchalarda 789 katta raqam saqlanadi, bu holda 1-katak ortiqcha omil 3 ni, 2-katak esa etishmayotgan 21-raqamni saqlaydi. (ya'ni 789 = 3 * 256 + 21). Baytlarga ajratilgan katta sonni qayta yig'ish uchun () funktsiyasi mavjud: int val = word (salom, past), bu erda salom va past - yuqori va past baytlarning qiymatlari.
Biz hech qachon yozmagan boshqa barcha kataklarda 255 raqamlar saqlanadi.
4-qadam
Suzuvchi nuqta raqamlari va satrlarini yozish uchun EEPROM.put () usulidan, o'qish uchun esa EEPROM.get () dan foydalaning.
Setup () protsedurasida avval suzuvchi nuqta raqamini yozamiz. Keyin biz float turi egallagan xotira katakchalari soni bo'yicha harakat qilamiz va 20 ta sig'imga ega char satrini yozamiz.
Loop () protsedurasida biz barcha xotira katakchalarini o'qiymiz va ularni avval "float", so'ngra "char" turi sifatida parolini ochib, natijani ketma-ket portga chiqaramiz.
0 dan 3 gacha bo'lgan katakchalardagi qiymat suzuvchi nuqta raqami sifatida, to'rtinchi qatordan boshlab esa mag'lubiyat sifatida to'g'ri belgilanganligini ko'rishingiz mumkin.
Hosil bo'lgan ovf (to'ldirish) va nan (raqam emas) qiymatlari raqamni suzuvchi nuqta raqamiga to'g'ri aylantirish mumkin emasligini ko'rsatadi. Agar siz xotira hujayralari qaysi turdagi ma'lumotlarni egallashini aniq bilsangiz, unda siz hech qanday muammoga duch kelmaysiz.
5-qadam
Xotira hujayralarini EEPROM massivining elementlari deb atash juda qulay xususiyatdir. Ushbu eskizda setup () protsedurasida avval ma'lumotlarni dastlabki 4 baytga yozamiz va loop () protsedurasida har daqiqada barcha kataklardan ma'lumotlarni o'qiymiz va ularni ketma-ket portga chiqaramiz.