EEPROM,叫作電可擦可編程可讀寄存器(是否是以爲好官方,不知道是什麼鬼?反正我也一臉懵逼),只須要知道這是一種斷電後數據不會丟失的存儲設備,能夠用來應對須要作記錄作保存的場合。簡而言之,若想斷電後Arduino仍然記住數據,就能夠使用EEPROM。至於板子是否支持EEPROM,能夠自主去查看板子的簡潔。常見Arduino的EEPROM以下:編程
Arduino EEPROM類庫中,EEPROM的地址被設定從0開始,每一個地址能夠存儲1B數據。因此當數據大於1B時,須要逐個字節讀寫。函數
Arduino有EEPROM類庫,只須要調用EEPROM.h頭文件,而後使用write()和read()函數就能夠對EEPROM進行讀寫操做;oop
做用:對指定地址寫入數據;
語法: EEPROM.write(address,value);
參數:測試
返回值:無;ui
做用:從指定地址讀出數據。一次讀取1B數據。若是指定地址沒有數據,則讀出值爲255;
語法: EEPROM.read(address);
參數:code
返回值:byte型,返回指定地址存儲的數據;blog
注意:it
實驗內容:
在setup中往地址0~3中依次寫入2~5,而後在loop中讀取地址0~3而後把數據打印到串口顯示器;
實驗代碼:class
/** * @Desc 測試EEPROM * @author 單片機菜鳥 * @Date 2016/12/25 * * 注意:Arduino Mega 2560的EEPROM空間是4KB * 也就是4*1024 B = 4096B * 也就是地址是0~4095 */ #include<EEPROM.h> //表示EEPROM的當前地址,也就是即將要寫入的地址 int addr = 0; void setup() { // 初始化串口 Serial.begin(9600); //等待串口準備好 while(!Serial); int value = 2; //在地址0~3依次寫入2~5 for(int i = addr;i<4;i++){ EEPROM.write(i,value++); //延時100ms 等待寫入 delay(100); } } void loop() { // put your main code here, to run repeatedly: Serial.println("read data start"); int value; for(int i = addr;i<4;i++){ value = EEPROM.read(i); Serial.print("addr:"); Serial.print(i); Serial.print("\n"); Serial.print("value:"); Serial.print(value); Serial.print("\n"); } Serial.println("read data end"); while(1); }
實驗結果:
語法
總體上這課仍是很是簡單的,惟一須要注意就是不要擦寫頻繁。講完這課後,我就能夠在藍牙多彩燈加入這個功能了,記錄存儲當前燈顏色而後下次打開就能夠使用。