İçindekiler:
Video: Arduino'nuzun Dahili EEPROM'u: 6 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Bu yazımızda Arduino kartlarımızdaki dahili EEPROM'u inceleyeceğiz. Bazılarınız EEPROM nedir? Bir EEPROM, Elektriksel Olarak Silinebilir Programlanabilir Salt Okunur bir Bellektir.
Güç kapatıldığında veya Arduino'yu sıfırladıktan sonra şeyleri hatırlayabilen kalıcı bir bellek şeklidir. Bu tür bir belleğin güzelliği, bir eskiz içinde oluşturulan verileri daha kalıcı bir temelde depolayabilmemizdir.
Neden dahili EEPROM'u kullanasınız? Bir duruma özgü verilerin daha kalıcı bir yuvaya ihtiyaç duyduğu durumlar için. Örneğin, ticari Arduino tabanlı bir projenin benzersiz seri numarasını ve üretim tarihini saklamak - çizimin bir işlevi seri numarasını bir LCD'de görüntüleyebilir veya veriler bir "hizmet çizimi" yüklenerek okunabilir. Veya kilometre sayacı veya çalışma döngüsü sayacı gibi belirli olayları saymanız ve kullanıcının bunları sıfırlamasına izin vermemeniz gerekebilir.
Adım 1: Ne Tür Veriler Saklanabilir?
Veri baytları olarak temsil edilebilecek herhangi bir şey. Bir bayt veri, sekiz bit veriden oluşur. Bir bit, açık (1 değeri) veya kapalı (0 değeri) olabilir ve sayıları ikili biçimde temsil etmek için mükemmeldir. Başka bir deyişle, bir ikili sayı, bir değeri temsil etmek için yalnızca sıfırları ve birleri kullanabilir. Bu nedenle ikili, yalnızca iki basamak kullanabildiğinden "base-2" olarak da bilinir.
Yalnızca iki basamaklı bir ikili sayı nasıl daha büyük bir sayıyı temsil edebilir? Çok sayıda birler ve sıfırlar kullanır. Diyelim ki 10101010 gibi bir ikili sayıyı inceleyelim. Bu bir 2 tabanlı sayı olduğundan, x=0'dan itibaren her rakam 2 üzeri x'i temsil eder.
Adım 2:
İkili sayının her bir basamağının 10 tabanlı bir sayıyı nasıl temsil ettiğini görün. Dolayısıyla yukarıdaki ikili sayı, taban-10'da 85'i temsil eder - 85 değeri, taban-10 değerlerinin toplamıdır. Başka bir örnek – ikili sistemde 11111111, 10 tabanında 255'e eşittir.
Aşama 3:
Şimdi, bu ikili sayıdaki her basamak bir 'bit' bellek kullanır ve sekiz bit bir bayt oluşturur. Arduino kartlarımızdaki mikrodenetleyicilerin dahili sınırlamaları nedeniyle, EEPROM'da sadece 8 bitlik sayıları (bir bayt) saklayabiliriz.
Bu, sayının ondalık değerini sıfır ile 255 arasında olacak şekilde sınırlar. Ardından, verilerinizin bu sayı aralığı ile nasıl temsil edilebileceğine karar vermek size kalmıştır. Bunun sizi ertelemesine izin vermeyin - doğru şekilde düzenlenmiş sayılar neredeyse her şeyi temsil edebilir! Dikkate alınması gereken bir sınırlama vardır - EEPROM'a kaç kez okuyabileceğimiz veya yazabileceğimiz. Üretici Atmel'e göre, EEPROM 100.000 okuma/yazma döngüsü için iyidir (veri sayfasına bakın).
4. Adım:
Artık bitlerimizi ve baytlarımızı biliyoruz, Arduino'muzun mikro denetleyicisinde kaç bayt saklanabilir? Cevap, mikrodenetleyicinin modeline göre değişir. Örneğin:
- Arduino Uno, Uno SMD, Nano, Lilypad vb. gibi Atmel ATmega328'e sahip kartlar – 1024 bayt (1 kilobayt)
- Arduino Mega serisi gibi Atmel ATmega1280 veya 2560'a sahip kartlar – 4096 bayt (4 kilobayt)
- Orijinal Arduino Lilypad, eski Nano, Diecimila vb. gibi Atmel ATmega168'li kartlar – 512 bayt.
Emin değilseniz Arduino donanım dizinine bakın veya kart tedarikçinize sorun. Mikrodenetleyicinizde mevcut olandan daha fazla EEPROM depolamaya ihtiyacınız varsa, harici bir I2C EEPROM kullanmayı düşünün.
Bu noktada artık Arduino'muzun EEPROM'unda ne tür verilerin ve ne kadarının saklanabileceğini anlıyoruz. Şimdi bunu eyleme geçirme zamanı. Daha önce tartışıldığı gibi, verilerimiz için sınırlı miktarda alan vardır. Aşağıdaki örneklerde, 1024 bayt EEPROM depolamaya sahip ATmega328 ile tipik bir Arduino kartı kullanacağız.
Adım 5:
EEPROM'u kullanmak için bir kitaplık gereklidir, bu nedenle eskizlerinizde aşağıdaki kitaplığı kullanın:
#include "EEPROM.h"
Gerisi çok basit. Bir veri parçasını saklamak için aşağıdaki işlevi kullanırız:
EEPROM.write(a,b);
a parametresi, b verisinin tamsayısını (0~255) depolamak için EEPROM'daki konumdur. Bu örnekte, 1024 bayt bellek depolama alanımız var, bu nedenle a değeri 0 ile 1023 arasındadır. Bir veri parçasını almak aynı derecede basittir, şunu kullanın:
z = EEPROM.read(a);
Burada z, EEPROM konumundan a verileri depolamak için bir tamsayıdır. Şimdi bir örnek görmek için.
6. Adım:
Bu çizim 0 ile 255 arasında rasgele sayılar oluşturacak, bunları EEPROM'da saklayacak, sonra alıp seri monitörde görüntüleyecektir. EEsize değişkeni, EEPROM boyutunuzun üst sınırıdır, yani (örneğin) bu, bir Arduino Uno için 1024 veya bir Mega için 4096 olacaktır.
// Arduino dahili EEPROM gösterimi
#Dahil etmek
int zz; int EEboyutu = 1024; // panonuzun EEPROM'unun bayt cinsinden boyutu
geçersiz kurulum()
{ Serial.başlangıç(9600); randomSeed(analogRead(0)); } void loop() { Serial.println("Rastgele sayılar yazılıyor…"); for (int i = 0; i < EEsize; i++) { zz=rastgele(255); EEPROM.write(i, zz); } Seri.println(); for (int a=0; a < EEsize; a++) { zz = EEPROM.read(a); Serial.print("EEPROM konumu: "); Seri.baskı(a); Serial.print(" içerir "); Seri.println(zz); gecikme(25); } }
Seri monitörden çıktı, resimde gösterildiği gibi görünecektir.
İşte karşınızda, Arduino sistemlerimizle veri depolamanın başka bir kullanışlı yolu. En heyecan verici öğretici olmasa da, kesinlikle yararlıdır.
Bu gönderi size pmdway.com tarafından getirildi - dünya çapında ücretsiz teslimat ile üreticiler ve elektronik meraklıları için her şey.
Önerilen:
Siedle HTA 711-01 Akıllı Dahili Telefon: 3 Adım
Siedle HTA 711-01 Akıllı Dahili Telefon: IoT her yere yayılıyor ve birçok ürün daha akıllı hale gelecek şekilde değiştiriliyor, dahili telefonlar istisna değil. Harici bir mikro denetleyici aracılığıyla iyi bilinen bir dahili telefona uzaktan kapı açma işlevi ekleyeceğiz. Örneğin. açmak için akıllı telefonunuzu kullanın
Dahili Hoparlörlü Resim Tutucu: 7 Adım (Resimlerle)
Dahili Hoparlörlü Resim Tutucu: Resimlerinizi/posta kartlarınızı veya hatta yapılacaklar listenizi tutabilen kendi hoparlörünüzü yapmak istiyorsanız, hafta sonu üstlenebileceğiniz harika bir proje. Yapının bir parçası olarak, projenin kalbi olarak bir Raspberry Pi Zero W kullanacağız ve bir
Mikrotik CSS326-24G-2S+RM Anahtarına Mod Dahili Güç Kaynağı: 11 Adım
Mikrotik CSS326-24G-2S+RM Switch'e Mod Dahili Güç Kaynağı: UYARI: BU PROJE YÜKSEK GERİLİMLERLE BAŞA ÇIKIYOR, RAHAT DEĞİLSENİZ VEYA NE YAPTIĞINIZI BİLİYORSANIZ BİR ELEKTRİKÇİYE BAŞVURUN. BU KILAVUZU TAKİP EDEREK CİHAZINIZIN HİÇBİRİNDEN KAYNAKLANAN ZARARDAN SORUMLU DEĞİLİZ
ATmega8 As Arduino (Dahili 8Mhz Kristal Kullanarak): 7 Adım (Resimlerle)
ATmega8 As Arduino (Dahili 8Mhz Kristal kullanarak): Günümüzde Arduino gibi gadget'lar çok popüler bir kullanım bulmuştur. Çok sayıda proje oluşturmak için kullanılabilirler, ancak çok yer kaplarlar ve bazılarımız için (ben dahil) pahalıdırlar. Bu sorunu çözmek için size bu aracı sunuyorum
WiFi Dahili Dahili Arduino MEGA 2560 - ESP8266: 10 Adım
Arduino MEGA 2560 Dahili WiFi ile - ESP8266: Bugünkü metinde, kartında gömülü bir ESP8266'ya sahip olduğu için son derece özel olduğunu düşündüğüm bir Arduino'dan bahsediyoruz. Kart üzerine lehimlenmiş ESP12'ye sahip değil. Bunun yerine Espressif çipi var. Yani, tahtada yerleşik