Mündəricat:
Video: Arduino -nun Daxili EEPROM: 6 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:46
Bu yazıda Arduino lövhələrimizdəki daxili EEPROM -u araşdıracağıq. Bəziləriniz deyə biləcəyiniz bir EEPROM nədir? EEPROM, Elektriklə Silinə bilən Proqramlaşdırıla bilən Yalnız Oxunan Yaddaşdır.
Güc söndürüldükdə və ya Arduino sıfırlandıqdan sonra hər şeyi xatırlaya bilən dəyişməz bir yaddaş formasıdır. Bu cür yaddaşın gözəlliyi, eskizdə yaradılan məlumatları daha daimi olaraq saxlaya bilməyimizdir.
Niyə daxili EEPROM -dan istifadə edirsiniz? Vəziyyətə xas olan məlumatların daha daimi bir evə ehtiyacı olduğu vəziyyətlər üçün. Məsələn, kommersiya Arduino əsaslı bir layihənin unikal seriya nömrəsini və istehsal tarixini saxlamaq-eskizin funksiyası seriya nömrəsini LCD-də göstərə bilər və ya məlumatlar 'xidmət eskizi' yükləyərək oxunur. Yoxsa müəyyən hadisələri saymaq və istifadəçinin onları sıfırlamasına icazə verməmək lazım ola bilər-məsələn, odometr və ya əməliyyat dövrü sayğacı.
Addım 1: Hansı növ məlumatları saxlamaq olar?
Məlumat baytı kimi təqdim edilə bilən hər şey. Bir bayt məlumat səkkiz bit məlumatdan ibarətdir. Bir bit ya açıq (dəyər 1) və ya söndürülmüş (dəyər 0) ola bilər və ədədləri ikili formada əks etdirmək üçün idealdır. Başqa sözlə, ikili nömrə yalnız bir sıfırdan istifadə edərək dəyərləri təmsil edə bilər. Beləliklə, ikili də "baza-2 ″" olaraq da bilinir, çünki yalnız iki rəqəmdən istifadə edə bilər.
Necə ola bilər ki, yalnız iki rəqəmdən ibarət ikili rəqəm daha böyük bir rəqəmi ifadə edə bilər? Bir çoxu və sıfırdan istifadə edir. İkili bir rəqəmi araşdıraq, deyək 10101010. Bu, baza-2 ədəd olduğu üçün, hər rəqəm x = 0-dan başlayaraq x-in gücünə 2-ni təmsil edir.
Addım 2:
İkili ədədin hər bir rəqəminin baza-10 ədədini necə təmsil edə biləcəyinə baxın. Beləliklə, yuxarıdakı ikilik sayı baza-10-da 85-i təmsil edir-85 dəyəri, baz-10 dəyərlərinin cəmidir. Başqa bir nümunə - ikilikdə 11111111, baza 10 -da 255 -ə bərabərdir.
Addım 3:
İndi bu ikili nömrədəki hər rəqəm bir "bit" yaddaşdan istifadə edir və səkkiz bit bir bayt təşkil edir. Arduino lövhələrimizdəki mikro nəzarətçilərin daxili məhdudiyyətləri səbəbindən yalnız 8 bitlik nömrələri (bir bayt) EEPROM-da saxlaya bilərik.
Bu rəqəmin ondalık dəyərinin sıfırdan 255 -ə düşməsini məhdudlaşdırır. O zaman məlumatlarınızın bu rəqəm aralığında necə təmsil olunacağına qərar vermək sizə aiddir. Bunun sizi təxirə salmasına imkan verməyin - düzgün tərtib edilmiş nömrələr demək olar ki, hər şeyi təmsil edə bilər! Diqqət yetirməli olduğumuz bir məhdudiyyət var - EEPROM -a nə qədər oxuya və ya yaza biləcəyimiz. İstehsalçı Atmelə görə, EEPROM 100.000 oxu/yazma dövrü üçün yaxşıdır (məlumat vərəqinə baxın).
Addım 4:
İndi bit və baytlarımızı bilirik, Arduino'nun mikro nəzarətçisində neçə baytı saxlamaq olar? Cavab mikrokontrolörün modelindən asılı olaraq dəyişir. Misal üçün:
- Arduino Uno, Uno SMD, Nano, Lilypad və s. Kimi Atmel ATmega328 lövhələri - 1024 bayt (1 kilobayt)
- Arduino Mega seriyası kimi Atmel ATmega1280 və ya 2560 olan lövhələr - 4096 bayt (4 kilobayt)
- Orijinal Arduino Lilypad, köhnə Nano, Diecimila və s. Kimi Atmel ATmega168 lövhələri - 512 bayt.
Əmin deyilsinizsə, Arduino hardware indeksinə baxın və ya lövhə təchizatçınızdan soruşun. Mikro nəzarətçinizdə olanlardan daha çox EEPROM yaddaşına ehtiyacınız varsa, xarici bir I2C EEPROM istifadə etməyi düşünün.
Bu anda, Arduino'nun EEPROM -da nə cür məlumatların və nə qədər saxlanıla biləcəyini başa düşürük. İndi bunu həyata keçirməyin vaxtıdır. Daha əvvəl müzakirə edildiyi kimi, məlumatlarımız üçün sonlu bir yer var. Aşağıdakı nümunələrdə, 1024 baytlıq EEPROM yaddaşı olan ATmega328 ilə tipik bir Arduino lövhəsindən istifadə edəcəyik.
Addım 5:
EEPROM -dan istifadə etmək üçün kitabxana lazımdır, buna görə də eskizlərinizdə aşağıdakı kitabxanadan istifadə edin:
#"EEPROM.h" daxil edin
Qalanı çox sadədir. Bir məlumatı saxlamaq üçün aşağıdakı funksiyadan istifadə edirik:
EEPROM.write (a, b);
A parametri, EEPROM -dəki b məlumatlarının (0 ~ 255) tam ədədini saxlama mövqeyidir. Bu nümunədə, 1024 bayt yaddaş saxlama yerimiz var, buna görə də a -nın dəyəri 0 ilə 1023 arasındadır. Məlumat parçasını əldə etmək eyni dərəcədə sadədir:
z = EEPROM.read (a);
Burada z, EEPROM mövqeyindən məlumatları saxlamaq üçün bir tam ədəddir a. İndi bir nümunəyə baxaq.
Addım 6:
Bu eskiz 0 ilə 255 arasında təsadüfi ədədlər yaradacaq, onları EEPROM -da saxlayacaq, sonra əldə edib serial monitorda göstərəcək. Dəyişən EEsize, EEPROM ölçüsünüzün yuxarı həddi olduğu üçün (məsələn) bu bir Arduino Uno üçün 1024 və ya Mega üçün 4096 olardı.
// Arduino daxili EEPROM nümayişi
#daxil edin
int zz; int EEsize = 1024; // lövhənizin EEPROM -un bayt ölçüsü
boş quraşdırma ()
{Serial.begin (9600); randomSeed (analogRead (0)); } void loop () {Serial.println ("Təsadüfi ədədlərin yazılması …"); for (int i = 0; i <EEsize; i ++) {zz = təsadüfi (255); EEPROM.write (i, zz); } Serial.println (); for (int a = 0; a <EEsize; a ++) {zz = EEPROM.read (a); Serial.print ("EEPROM mövqeyi:"); Serial. çap (a); Serial.print ("ehtiva edir"); Serial.println (zz); gecikmə (25); }}
Şəkildə göstərildiyi kimi seriyalı monitordan çıxış görünəcək.
Arduino sistemlərimizlə məlumat saxlamağın başqa bir faydalı yolu var. Ən maraqlı dərs olmasa da, əlbəttə ki, faydalıdır.
Bu yazı pmdway.com tərəfindən sizə gətirildi - istehsalçılar və elektronika həvəskarları üçün hər şey, bütün dünyada pulsuz çatdırılma.
Tövsiyə:
Daxili Hava Keyfiyyət Ölçən: 5 Addım (Şəkillərlə birlikdə)
Bağlı Hava Keyfiyyət Ölçən: Evinizdəki havanın keyfiyyətini yoxlamaq üçün sadə bir layihədir. Son vaxtlar evdən çox qaldığımız/işlədiyimiz üçün havanın keyfiyyətini izləmək və pəncərəni açmağın vaxtı gəldiyini özünüzə xatırlatmaq yaxşı bir fikir ola bilər. və təmiz havaya girin
Arduino istifadə edərək daxili qaz sızmasının qarşısının alınması: 3 addım
Arduino istifadə edərək daxili qaz sızmasının qarşısının alınması. Bu təlimatda, qaz sızıntısı olduqda LPG silindrinin qaz düyməsini avtomatik olaraq bağlayan bir prototip hazırladım. LPG qoxusuzdur və qoxusu üçün Ethyl Mercaptan adlı bir agent əlavə olunur ki, sızma olduğu zaman fərqinə varılsın
Batareyanın daxili müqavimətini ölçmək üçün 4 addım: 4 addım
Batareyanın Daxili Müqavimətini Ölçmək üçün 4 Adım: Hamurun daxili müqavimətini ölçməyə kömək edə biləcək 4 sadə addım
ATmega8 Arduino olaraq (Daxili 8Mhz Kristal istifadə edərək): 7 Addım (Şəkillərlə)
ATmega8 Arduino olaraq (Daxili 8Mhz Kristal istifadə edərək): Hal -hazırda Arduino kimi gadgetlar çox populyar bir istifadə tapdı. Bir çox layihə yaratmaq üçün istifadə edilə bilər, lakin çox yer tuturlar və bəzilərimiz üçün (mən də daxil olmaqla) baha başa gəlir. Bu problemi həll etmək üçün sizə bu təlimatı təqdim edirəm
WiFi Daxili Arduino MEGA 2560 - ESP8266: 10 addım
Arduino MEGA 2560 Daxili WiFi ilə - ESP8266: Bugünkü mətndə son dərəcə xüsusi hesab etdiyim bir Arduino haqqında danışırıq, çünki lövhəsində bir ESP8266 var. ESP12 lövhəyə lehimlənməmişdir. Bunun əvəzinə Espressif çipi var. Beləliklə, lövhədə quraşdırılmış cihazınız var