İlan

Arduino'nun kapalı olduğunda veri depolayabileceğini biliyor muydunuz? Flaş bellekte saklanan çizim değil. EEPROM'daki değişken verilerden bahsediyorum. Size nasıl okuyup yazacağınızı ve projeleriniz için neler yapabileceğini gösterirken bana katılın.

Arduino'da yeniyseniz, Yeni başlayanların rehberi Arduino'ya Başlarken: Başlangıç ​​KılavuzuArduino esnek, kullanımı kolay donanım ve yazılıma dayalı açık kaynaklı bir elektronik prototipleme platformudur. Sanatçılar, tasarımcılar, hobiler ve etkileşimli nesneler veya ortamlar oluşturmak isteyen herkes için tasarlanmıştır. Daha fazla oku .

EEPROM Nedir?

EEPROM, elektrikle silinebilir programlanabilir salt okunur bellek. Bu bir tür kalıcı bellek. Bunlardan herhangi birinin ne anlama geldiğini anlamadıysanız endişelenmeyin. Çıkarılan güçle bile verileri depolar (aksine) Veri deposu RAM için Hızlı ve Kirli Bir Kılavuz: Bilmeniz GerekenlerRAM, her bilgisayarın önemli bir bileşenidir, ancak kafa karıştırıcı olabilir. Anlayacağınız anlaşılması kolay terimlerle çözüyoruz. Daha fazla oku

instagram viewer
Herhangi bir veriyi tutmak için elektriğe ihtiyaç duyar).

EEPROM örnek çekimi

EEPROM, sahada kullanılan programlanabilir kapı dizisi (FPGA) gibi sayısız işlemciye yerleştirilmiştir. Matrix Oluşturan Raspberry Pi İncelemesi için Matrix CreatorMatrix Creator, 15 sensör, bir dizi iletişim protokolü, bir RGB LED halkası, bir mikrofon dizisi ve daha fazlası ile Pi'niz için bir İsviçre Çakısıdır! Daha fazla oku Pi HAT. Tüm Arduino'larda EEPROM mevcuttur, ancak kapasite modele göre değişir. Bir göz attığınızdan emin olun. satın alma rehberi Arduino Satın Alma Rehberi: Hangi Tahtayı Almalısınız?Dışarıda çok farklı Arduino tahtaları var, kafanız karıştığı için affedilirsiniz. Projeniz için hangisini satın almalısınız? Bu Arduino satın alma rehberi ile yardımcı olalım! Daha fazla oku daha fazla bilgi için.

O nasıl çalışır?

EEPROM elektrikle silinir ve programlanır. Fowler-Nordheim tüneli. Kullanabilmek için teknik ayrıntıları bilmenize gerek yoktur. Temel dayanak, elektriğin ikili verileri değiştirmek için kullanılmasıdır (ikili nedir İkili Nedir? [Açıklanan Teknoloji]İkili bilgisayarların varlığı için kesinlikle çok temel olduğu göz önüne alındığında, konuyla daha önce hiç uğraşmamış olmamız tuhaf görünüyor - bu yüzden bugün hangi ikili dosyaya kısa bir genel bakış sunacağımı düşünmüştüm ... Daha fazla oku ). Elektronik olarak okunabilir, silinebilir ve yeniden yazılabilir.

Neyse ki, Arduino Dili bilgisayar biliminde bir dereceye ihtiyaç duymadan verileri değiştirmeyi kolaylaştırır.

EEPROM yakın çekim

Yaşam Beklentisi

EEPROM'u Arduino'da kullanmak kolay olsa da, sınırlı bir ömrü vardır. EEPROM, 100.000 okuma / silme döngüsünü işlemek için belirtilmiştir. Bu, EEPROM kararsız hale gelmeden önce 100.000 kez veri yazıp silebileceğiniz / yeniden yazabileceğiniz anlamına gelir. Gerçekte, Atmel (Arduino “Chip” üreticileri) yarı iletkenler, her işlemcinin toleransına bağlı olarak daha fazla veya daha az sayıda çevrim yapabilir.

EEPROM yakın çekim

Bir konum çok kez yazılıp silindikten sonra güvenilir olmaya başlayabilir. Doğru verileri veya komşu bir bitin değerini döndürmeyebilir.

Bu çok fazla yazı gibi gelebilir, ancak programlı olarak (bir döngü, Örneğin). Verileri okumak silikonu bozmaz, sadece yazı yapar. EEPROM'daki verileri korkusuzca istediğiniz kadar okuyabilirsiniz!

Bu sınırın her bir bellek konumu için geçerli olduğuna dikkat etmek önemlidir. Arduino'nuzun EEPROM'da 1.000 veya daha fazla bellek konumu olabilir, bu nedenle bir konuma çok fazla yazarsanız, bu konum etkilenen konumdur, diğerlerinden değil. Daha sonra tartışacağım aşınma tesviyesiBu, verileri eşit olarak dağıtarak EEPROM aşınmasını azaltabilir - SSD'ler SSD'nizin Kalan Ömrü Nasıl Hesaplanır?Tüm SSD'lerin yazma döngüleri nedeniyle sınırlı bir ömrü vardır (bu ömür düşündüğünüzden çok daha uzun olsa da). Sonuna ne kadar yakın olduğunuzu nasıl tahmin edeceğiniz aşağıda açıklanmıştır. Daha fazla oku faydalanmak.

Ne İçin Yararlıdır?

EEPROM, Arduino projeleriniz için inanılmaz derecede faydalıdır. Güç kesildiğinde bile verileri hatırladığı için Arduino'nun durumunu saklayabilirsiniz. Belki bir lazer taret Pew Pew! Arduino ile Lazer Taret Nasıl YapılırSıkıldın mı? Bir lazer tareti de yapabilir. Daha fazla oku konumunu ya da ne kadar “cephane” kaldığını hatırlar. Kullanmak için kullanabilirsiniz cihazlarınızı kontrol edin Bir Arduino'dan Kontrol Aletleri: Ev Otomasyonunun BaşlangıcıSon kez, Arduino projelerinizi OS X'in SiriProxy'si aracılığıyla konuşma kontrollü hale getirmenin birkaç yolunu gösterdim yerleşik konuşulabilir öğeler ve bazı Automator komut dosyaları veya hatta özel bir ses tanıma donanımı yonga. BEN... Daha fazla oku ve cihazınızın kaç kez etkinleştirildiğini günlüğe kaydedin.

EEPROM, ayarlar veya yüksek puanlar için en uygun olanıdır. Düzenli olarak karmaşık veriler yazmak istiyorsanız, ethernet kalkanı Ethernet Kalkanı ile Arduino Projenize Kendi Mini Web Sunucusunu VerinBir süre önce, Arduino'nuz için bir internet kontrol sisteminin nasıl kurulacağını gösterdim - ancak internet bağlantısını sürdürmek için USB üzerinden bir bilgisayara bağlı kalmak zorunda kaldı ... Daha fazla oku (dahili SD yuvalı) veya Raspberry Pi Raspberry Pi: Resmi Olmayan Eğitimİster daha fazla bilgi edinmek isteyen mevcut bir Pi sahibi olun, ister bu kredi kartı boyutundaki cihazın potansiyel bir sahibi olun, bu kaçırmak istediğiniz bir rehber değildir. Daha fazla oku .

EEPROM yakın çekim

Oku ve yaz

Teori artık yol dışı olduğuna göre, bazı verileri nasıl okuyacağınıza ve yazacağınıza bakalım! İlk olarak, kütüphaneyi ekleyin (bu Arduino IDE ile birlikte gelir):

#Dahil etmek 

Şimdi bazı veriler yazın:

EEPROM. Yazar (0, 12);

Bu numarayı yazar 12 EEPROM konumuna 0. Her yazma işlemi 3,3 milisaniye sürer (Hanım, 1000 ms = 1 saniye). Nasıl harf yazamayacağınıza dikkat edin (kömür) yalnızca sıfırdan 255'e kadar olan sayılara izin verilir. Bu nedenle EEPROM ayarlar veya yüksek puanlar için idealdir, ancak oyuncu adları veya kelimeler için çok iyi değildir. Bu yöntemi kullanarak metin saklamak mümkündür (alfabenin her harfini bir sayıyla eşleştirebilirsiniz), ancak birden fazla bellek konumuna sahip olmanız gerekir - her harf için bir konum.

Bu verileri şu şekilde okudunuz:

EEPROM. Okunmuş (0);

Sıfır, daha önce yazdığınız adrestir. Daha önce bir adrese yazmadıysanız, maksimum değeri (255).

Biraz daha kullanışlı yöntemler vardır. Ondalık bir yer veya dize saklamak istediğinizi varsayalım:

EEPROM.put (2, "12.67");

Bu, verileri birden çok konuma yazar - kendiniz yazmak kolay, ancak kullanışlı olan bir şey değildir. Yine de bunun kaç yere yazıldığını takip etmeniz gerekecek, bu nedenle verilerinizin üzerine yanlışlıkla yazmamanız gerekiyor! Kullanmak zorunda almak Bu verileri tekrar alma yöntemi:

şamandıra f = 0.00f; EEPROM.get (2, f);

Alınan değer kayan noktaya kaydedilir f değişken. Bunun nasıl başlatıldığına dikkat edin 0.00f değer olarak. f derleyicinin bu değişkende çok sayıda depolamak isteyebileceğini bilmesini sağlar, böylece derleme sırasında bazı ek yapılandırmalar ayarlar.

EEPROM belgeleri üzerinde Arduino web sitesi çok daha fazla örneği var.

Aşınma Tesviye

Aşınma seviyelendirme, aşınmayı azaltmak ve EEPROM'un ömrünü uzatmak için kullanılan bir tekniktir. Sadece küçük bir proje üzerinde çalışıyorsanız, bu konuda endişelenmenize gerek olmayabilir.

EEPROM yakın çekim

EEPROM yaşamını korumak için yapabileceğiniz en basit şey, yazılarınızı belirli bir konumla sınırlamaktır. Bunu önce adresi okuyarak yapabilirsiniz ve yazmak istediğiniz değer zaten mevcutsa, tekrar yazmaya gerek yoktur (unutmayın, veri okumak zarar vermez). Bunu nasıl yapacağınız aşağıda açıklanmıştır:

int safeWrite (int veri, adres) {if (EEPROM.read (adres)! = veri) {EEPROM.write (adres, veri); } }

Bu oldukça basit bir kod parçasıdır, ancak sadece tamsayılar için çalışır! Tekerleği yeniden icat etmek yerine, Arduino EEPROM kütüphanesinde yerleşik olan fonksiyonu kullanın:

EEPROM.update (adres, val);

Bu yöntem, imza ile tamamen aynı imzaya sahiptir. yazmak yöntem, ancak gerekli yazma sayısını önemli ölçüde azaltabilir!

Çok fazla veri yazmanız gerekiyorsa ve silikonun yıpranmasından endişe ediyorsanız, daha fazla veri kullansa da, kaç yazma yaptığınızı takip edebilirsiniz. İşte kaba bir uygulama pseudocode:

var adresi = 0. var writeCount = 0 (writeCount> 75.000) writeCount = 0 adres + = 1 EEPROM.write (adres, veri)

EEPROM'da adres ve writeCount öğelerini saklamanız gerekir (ve writeCount öğesinin adres konumlarına bölünmesi gerekir). Çoğu zaman, bu koruma seviyesi gerekli olmayacaktır. Arduinos da çok ucuz, bu yüzden bir yedek satın almak daha kolay olabilir!

Şimdi bazı harika projeler yapmak için yeterli bilgiye sahip olmalısınız. Serin bir şey yaparsanız bize bildirin! Resimlerdeki tüm cihazları tanıyabilir misiniz? Aşağıda bize bir yorum bırakın!

Joe, İngiltere Lincoln Üniversitesi Bilgisayar Bilimi mezunudur. Profesyonel bir yazılım geliştiricisidir ve uçağı uçurmadığı veya müzik yazmadığı zamanlarda, genellikle fotoğraf çekerken veya video üretirken bulunabilir.