步驟1:什么是EEPROM?
EEPROM是一個(gè)很小的存儲(chǔ)器,即使在Arduino板斷電時(shí),其值也會(huì)保留。這就像一個(gè)很小的硬盤(pán)驅(qū)動(dòng)器,因此您可以在下次啟動(dòng)設(shè)備時(shí)存儲(chǔ)參數(shù)。根據(jù)Arduino板的類(lèi)型,每個(gè)板上的可用存儲(chǔ)量會(huì)有所不同,例如Uno有1024字節(jié),Mega有4096字節(jié),LilyPad有512字節(jié)。
重要的是要注意,所有EEPROM都有有限數(shù)量的寫(xiě)周期。 Atmel為Arduino上的EEPROM指定了大約100000寫(xiě)/擦除周期的預(yù)期壽命。這聽(tīng)起來(lái)好像很多寫(xiě)操作,但是如果您正在循環(huán)讀取和寫(xiě)入內(nèi)容,則很容易達(dá)到此限制。一旦一個(gè)位置被寫(xiě)入和擦除了太多次,它就會(huì)開(kāi)始變得不可靠。它可能無(wú)法返回正確的數(shù)據(jù),或者無(wú)法從相鄰位返回值。
步驟2:導(dǎo)入庫(kù)
要使用此內(nèi)存,我們首先包括Arduino提供的庫(kù)。該庫(kù)提供了兩種方法:讀取和寫(xiě)入相應(yīng)的操作。讀取功能接受我們要讀取的地址,而寫(xiě)入功能接受我們要寫(xiě)入的地址和值。
在我們的示例中,目標(biāo)是在Arduino的每次啟動(dòng)時(shí)準(zhǔn)備好一系列的設(shè)置,因此我們首先定義要用于存儲(chǔ)的數(shù)組,并為每個(gè)對(duì)象定義地址。我們要存儲(chǔ)的設(shè)置。在我們有1024個(gè)可用字節(jié)的芯片中,地址位置將從0到1023。
步驟3:設(shè)置初始化標(biāo)志
初始設(shè)置默認(rèn)值的技巧是使用地址之一作為指示,以了解是否已初始化設(shè)置。我使用了最后一個(gè)地址,因?yàn)樗ǔ2挥糜谄渌魏蔚胤?。如果存?chǔ)的值中有一個(gè)“ T”字符,loadSettings函數(shù)將首先檢查該位置,如果沒(méi)有,它將通過(guò)設(shè)置進(jìn)行設(shè)置,并為每個(gè)值寫(xiě)入初始值。完成后,它將立即將跟蹤初始化設(shè)置的位置的值設(shè)置為“ T”字符,并且下次打開(kāi)Arduino電源時(shí),我們將不再初始化值,而是將保存的數(shù)據(jù)讀入
步驟4:更新設(shè)置
要更新值,我們可以使用我們擁有的write函數(shù)關(guān)于初始化,但更好的方法是使用提供的更新功能。該功能的作用是,它首先檢查我們要保存的值是否與EEPROM中已經(jīng)存在的值相同,如果不保存則不更新。這樣,它會(huì)嘗試減少寫(xiě)操作的次數(shù),以延長(zhǎng)EEPROM的壽命。
步驟5:盡情享受吧!
我希望這個(gè)Instructable對(duì)您有幫助,并且您設(shè)法學(xué)到了一些東西。
-
EEPROM
+關(guān)注
關(guān)注
9文章
1086瀏覽量
83807 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192279
發(fā)布評(píng)論請(qǐng)先 登錄
定義IO初始化結(jié)構(gòu)體
IM 系列設(shè)備過(guò)載保護(hù)機(jī)制下界面初始化中斷的底層邏輯與解決方案
STM32CubeMX用于STM32配置和初始化C代碼生成
EE-359:ADSP-CM40x啟動(dòng)時(shí)間優(yōu)化和器件初始化

EE-88:使用21xx編譯器在C中初始化變量

OMAP5912多媒體處理器初始化參考指南

STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

segger編譯器初始化問(wèn)題
基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性初始化方法

TMS320C6000 McBSP初始化

如何在i.MX RT微控制器上初始化LWIP協(xié)議棧

視頻引擎初始化失敗怎么回事
Keil中變量不被初始化方法

Jtti:MySQL初始化操作如何設(shè)置root密碼
瀚海微SD NAND應(yīng)用之SD協(xié)議存儲(chǔ)功能描述2 初始化命令

評(píng)論