İçindekiler:

Arduino'nuzun Dahili EEPROM'u: 6 Adım
Arduino'nuzun Dahili EEPROM'u: 6 Adım

Video: Arduino'nuzun Dahili EEPROM'u: 6 Adım

Video: Arduino'nuzun Dahili EEPROM'u: 6 Adım
Video: Arduino eeprom kullanımı - Arduino kalıcı hafıza - Arduino Kursu -Ders 28- 2024, Kasım
Anonim
Arduino'nuzun Dahili EEPROM'u
Arduino'nuzun Dahili EEPROM'u

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?

Ne Tür Veriler Saklanabilir?
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:

resim
resim

İ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:

resim
resim

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: