Arduino'da Veri Nasıl Saklanır

İçindekiler:

Arduino'da Veri Nasıl Saklanır
Arduino'da Veri Nasıl Saklanır

Video: Arduino'da Veri Nasıl Saklanır

Video: Arduino'da Veri Nasıl Saklanır
Video: EEPROM - Arduino Tarifleri #26 2024, Nisan
Anonim

Arduino kartlarının birkaç çeşit hafızası vardır. Birincisi, program yürütme sırasında değişkenleri depolamak için kullanılan statik RAM'dir (rastgele erişim belleği). İkincisi, yazdığınız eskizleri saklayan flash bellektir. Üçüncüsü, bilgileri kalıcı olarak depolamak için kullanılabilecek bir EEPROM'dur. İlk bellek türü uçucudur, Arduino'yu yeniden başlattıktan sonra tüm bilgileri kaybeder. İkinci iki bellek türü, güç kapatıldıktan sonra bile, üzerine yenisi yazılana kadar bilgileri depolar. Son bellek türü - EEPROM - verilerin gerektiği gibi yazılmasına, saklanmasına ve okunmasına izin verir. Şimdi bu hatırayı ele alacağız.

EEPROM Arduino'da veri saklama
EEPROM Arduino'da veri saklama

Gerekli

  • -Arduino;
  • - bilgisayar.

Talimatlar

Aşama 1

EEPROM, Elektrikle Silinebilir Programlanabilir Salt Okunur Bellek anlamına gelir, yani. elektrikle silinebilir salt okunur bellek. Bu bellekteki veriler, güç kapatıldıktan sonra onlarca yıl saklanabilir. Yeniden yazma döngülerinin sayısı birkaç milyon kez mertebesindedir.

Arduino'daki EEPROM bellek miktarı oldukça sınırlıdır: ATmega328 mikrodenetleyicisine dayalı kartlar için (örneğin, Arduino UNO ve Nano), bellek miktarı ATmega168 ve ATmega8 kartları için 1 KB'dir - ATmega2560 ve ATmega1280 için 512 bayt - 4 KB.

Adım 2

Arduino için EEPROM ile çalışmak için, varsayılan olarak Arduino IDE'de bulunan özel bir kütüphane yazılmıştır. Kütüphane aşağıdaki özellikleri içerir.

okuma (adres) - EEPROM'dan 1 bayt okur; adres - verilerin okunduğu adres (0'dan başlayan hücre);

yaz (adres, değer) - değer değerini (1 bayt, 0'dan 255'e kadar sayı) adres adresindeki belleğe yazar;

güncelleme (adres, değer) - eski içeriği yenisinden farklıysa adresteki değeri değiştirir;

get (adres, veri) - belirtilen türdeki verileri adresteki bellekten okur;

put (adres, veri) - belirtilen türdeki verileri adresteki belleğe yazar;

EEPROM [adres] - "EEPROM" tanımlayıcısını belleğe veri yazmak ve bellekten okumak için bir dizi olarak kullanmanızı sağlar.

Kroki içerisinde kütüphaneyi kullanmak için #include EEPROM.h yönergesi ile birlikte ekliyoruz.

Aşama 3

EEPROM'a iki tamsayı yazalım ve ardından bunları EEPROM'dan okuyarak seri porta çıkaralım.

0'dan 255'e kadar olan sayılarda herhangi bir sorun yoktur, sadece 1 bayt bellek kaplarlar ve EEPROM.write() işlevi kullanılarak istenilen yere yazılırlar.

Sayı 255'ten büyükse, highByte () ve lowByte () operatörleri kullanılarak baytlara bölünmeli ve her bayt kendi hücresine yazılmalıdır. Bu durumda maksimum sayı 65536'dır (veya 2 ^ 16).

Bakın, 0 hücresindeki seri bağlantı noktası monitörü 255'ten küçük bir sayı görüntüler. 1 ve 2 numaralı hücrelerde, 789 büyük bir sayı depolanır. Bu durumda, hücre 1, taşma faktörü 3'ü depolar ve hücre 2, eksik sayı 21'i depolar. (yani 789 = 3 * 256 + 21). Baytlara ayrıştırılmış büyük bir sayıyı yeniden birleştirmek için, kelime () işlevi vardır: int val = kelime (hi, düşük), burada hi ve low, yüksek ve düşük baytların değerleridir.

Hiç yazmadığımız diğer tüm hücrelerde 255 sayıları saklanır.

EEPROM Arduino'ya tamsayı yazma
EEPROM Arduino'ya tamsayı yazma

4. Adım

Kayan noktalı sayılar ve diziler yazmak için EEPROM.put() yöntemini, okumak için EEPROM.get() yöntemini kullanın.

Kurulum () prosedüründe ilk olarak kayan nokta sayısını f yazıyoruz. Daha sonra float tipinin kapladığı hafıza hücresi sayısına göre hareket edip 20 hücre kapasiteli bir char string yazıyoruz.

Döngü () prosedüründe tüm bellek hücrelerini okuyacağız ve önce "float" türü, ardından "char" türü olarak şifrelerini çözmeye çalışacağız ve sonucu seri porta göndereceğiz.

0'dan 3'e kadar olan hücrelerdeki değerin bir kayan noktalı sayı olarak ve 4'ten başlayarak - bir dize olarak doğru bir şekilde tanımlandığını görebilirsiniz.

Ortaya çıkan ovf (taşma) ve nan (sayı değil) değerleri, sayının doğru bir şekilde kayan noktalı sayıya dönüştürülemeyeceğini gösterir. Hangi bellek hücrelerinin ne tür verileri işgal ettiğini tam olarak biliyorsanız, sorun yaşamazsınız.

EEPROM Arduino'ya kayan nokta sayıları ve dizileri yazma
EEPROM Arduino'ya kayan nokta sayıları ve dizileri yazma

Adım 5

Çok kullanışlı bir özellik, bellek hücrelerine bir EEPROM dizisinin öğeleri olarak atıfta bulunmaktır. Bu eskizde setup() prosedüründe ilk olarak ilk 4 byte'a data yazacağız ve loop() prosedüründe her dakika tüm hücrelerden data okuyarak seri porta çıkışını yapacağız.

Önerilen: