Sizning Arduino -ning o'rnatilgan EEPROM: 6 qadam
Sizning Arduino -ning o'rnatilgan EEPROM: 6 qadam
Anonim
Sizning Arduino o'rnatilgan EEPROM
Sizning Arduino o'rnatilgan EEPROM

Ushbu maqolada biz Arduino platalarimizdagi ichki EEPROMni ko'rib chiqamiz. Ba'zilaringiz aytadigan EEPROM nima? EEPROM-bu elektr bilan o'chirilishi mumkin bo'lgan programlanadigan faqat o'qish uchun xotira.

Bu xotira shaklidir, u o'chirilgan yoki Arduino-ni qayta o'rnatgandan so'ng narsalarni eslay oladi. Bunday xotiraning go'zalligi shundaki, biz eskizda hosil qilingan ma'lumotlarni doimiy ravishda saqlashimiz mumkin.

Nima uchun ichki EEPROMdan foydalanasiz? Vaziyatga xos bo'lgan ma'lumotlar doimiyroq uyga muhtoj bo'lgan holatlar uchun. Masalan, Arduino-ga asoslangan tijorat loyihasining noyob seriya raqami va ishlab chiqarilgan sanasini saqlash-eskiz funktsiyasi seriya raqamini LCD displeyda aks ettirishi yoki ma'lumotlarni "xizmat eskizini" yuklash orqali o'qish mumkin edi. Yoki siz ba'zi hodisalarni sanashingiz va foydalanuvchiga ularni qayta o'rnatishga ruxsat bermasligingiz kerak bo'ladi, masalan, odometr yoki tsikl hisoblagichi.

1 -qadam: Qanday turdagi ma'lumotlarni saqlash mumkin?

Qanday turdagi ma'lumotlarni saqlash mumkin?
Qanday turdagi ma'lumotlarni saqlash mumkin?

Ma'lumot baytlari sifatida ifodalanishi mumkin bo'lgan hamma narsa. Bir bayt ma'lumotlar sakkiz bitli ma'lumotlardan iborat. Bit bit (qiymati 1) yoki o'chirilgan (qiymati 0) bo'lishi mumkin va raqamlarni ikkilik shaklda ko'rsatish uchun juda mos keladi. Boshqacha qilib aytganda, ikkilik raqam qiymatni ifodalash uchun faqat nol va birdan foydalanishi mumkin. Shunday qilib, ikkilik "tayanch-2" deb ham nomlanadi, chunki u faqat ikkita raqamdan foydalanishi mumkin.

Qanday qilib faqat ikkita raqamdan foydalanilgan ikkilik raqam katta sonni ifodalaydi? Unda ko'p son va nol ishlatiladi. Keling, ikkilik raqamni ko'rib chiqaylik, aytaylik 10101010. Bu 2-tayanch raqam bo'lgani uchun, har bir raqam x = 0 dan boshlab, x ning kuchiga 2 ni bildiradi.

2 -qadam:

Rasm
Rasm

Ikkilik raqamning har bir raqami 10-sonli raqamni qanday ifodalashini ko'rib chiqing. Shunday qilib, yuqoridagi ikkilik raqam baza-10 da 85 ni ifodalaydi-85 qiymati baza-10 qiymatlarining yig'indisidir. Yana bir misol - ikkilikda 11111111 10 -bazada 255 ga teng.

3 -qadam:

Endi bu ikkilik raqamdagi har bir raqam bitta "bit" xotiradan foydalanadi va sakkiz bit baytni tashkil qiladi. Arduino platalarimizdagi mikrokontrollerlarning ichki cheklovlari tufayli biz EEPROMda faqat 8-bitli raqamlarni (bir bayt) saqlashimiz mumkin.

Bu raqamning kasr qiymatini nol va 255 oralig'iga tushishini chegaralaydi. Ma'lumotlaringizni bu raqamlar diapazonida qanday aks ettirishni o'zingiz hal qilasiz. Bu sizni qo'yib yubormasin - to'g'ri joylashtirilgan raqamlar deyarli hamma narsani anglatishi mumkin! E'tibor qilish kerak bo'lgan bitta cheklov bor - biz EEPROMga necha marta o'qishimiz yoki yozishimiz mumkin. Ishlab chiqaruvchi Atmel ma'lumotlariga ko'ra, EEPROM 100 000 o'qish/yozish tsikli uchun yaxshi (ma'lumotlar jadvaliga qarang).

4 -qadam:

Endi biz bit va baytlarni bilamiz, Arduino mikrokontrolerida qancha baytni saqlash mumkin? Javob mikrokontroller modeliga qarab o'zgaradi. Masalan:

  • Armelino Uno, Uno SMD, Nano, Lilypad va boshqalar kabi Atmel ATmega328 kartalari - 1024 bayt (1 kilobayt)
  • Armelino Mega seriyasi kabi ATmel ATmega1280 yoki 2560 kartalari - 4096 bayt (4 kilobayt)
  • Atmel ATmega168 bilan jihozlangan taxtalar, masalan, asl Arduino Lilypad, eski Nano, Diecimila va boshqalar - 512 bayt.

Agar ishonchingiz komil bo'lmasa, Arduino apparat indeksiga qarang yoki kartani etkazib beruvchidan so'rang. Agar sizga mikrokontrolderdan ko'ra ko'proq EEPROM xotirasi kerak bo'lsa, tashqi I2C EEPROMdan foydalanishni o'ylab ko'ring.

Hozir biz Arduino EEPROM -da qanday ma'lumotlarni va qancha saqlash mumkinligini tushunamiz. Endi buni amalda qo'llash vaqti keldi. Yuqorida aytib o'tilganidek, bizning ma'lumotlarimiz uchun bo'sh joy mavjud. Quyidagi misollarda biz ATmega328 bilan 1024 baytli EEPROM xotirasiga ega bo'lgan oddiy Arduino kartasidan foydalanamiz.

5 -qadam:

EEPROMdan foydalanish uchun kutubxona kerak, shuning uchun chizmalaringizda quyidagi kutubxonadan foydalaning:

#"EEPROM.h" ni qo'shing

Qolganlari juda oddiy. Ma'lumotni saqlash uchun biz quyidagi funktsiyadan foydalanamiz:

EEPROM.write (a, b);

A parametri - EEPROMda b ma'lumotlarining (0 ~ 255) butun sonini saqlash joyi. Bu misolda bizda 1024 baytli xotira saqlash joyi bor, shuning uchun a qiymati 0 dan 1023 gacha. Ma'lumotni olish uchun ham xuddi shunday oddiy:

z = EEPROM.read (a);

Bu erda z - EEPROM pozitsiyasidagi ma'lumotlarni saqlash uchun a butun son. Endi misolni ko'rish uchun.

6 -qadam:

Rasm
Rasm

Bu eskiz 0 dan 255 gacha bo'lgan tasodifiy sonlarni yaratadi, ularni EEPROMda saqlaydi, so'ngra ularni ketma -ket monitorda ko'rsatadi. EEsize o'zgaruvchisi sizning EEPROM o'lchamingizning yuqori chegarasidir, shuning uchun (masalan) bu Arduino Uno uchun 1024 yoki Mega uchun 4096 bo'ladi.

// Arduino ichki EEPROM namoyishi

#qo'shing

int zz; int EEsize = 1024; // o'lchamingiz EEPROM kengashining baytlarida

bo'sh o'rnatish ()

{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Tasodifiy sonlarni yozish …"); uchun (int i = 0; i <EEsize; i ++) {zz = tasodifiy (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM pozitsiyasi:"); Serial.print (a); Serial.print ("o'z ichiga oladi"); Serial.println (zz); kechikish (25); }}

Rasmda ko'rsatilgandek ketma -ket monitordan chiqish paydo bo'ladi.

Shunday qilib, bizda Arduino tizimlarida ma'lumotlarni saqlashning yana bir foydali usuli bor. Garchi eng qiziqarli darslik bo'lmasa -da, albatta foydali.

Bu xabar sizga pmdway.com tomonidan olib kelingan - ishlab chiqaruvchilar va elektronika ixlosmandlari uchun hamma narsa, butun dunyo bo'ylab bepul etkazib berish.

Tavsiya: