此篇是介紹Arduino外接EEPROM記憶體 繼上一篇讀取Arduino內部記憶體文章之後 https://tcweng.blogspot.com/2019/05/tcwengarduino-eeprom.html 要存取外部EEPROM記憶體 相對存取內部記憶體 程式就要麻煩了很多 內容包含了存取位置的相關問題 如要了解EEPROM請見 https://tcweng.blogspot.com/2019/05/eeprom.html 先解決接線的部分 VCC跟GND分別接上5V跟接地 如果是電是吃3.3的話就要接Arduino的3.3 SDA >> A4 SCL >> A5 程式的部分: |
愛體驗認證
2019年5月4日 星期六
TCweng_讀寫外接EEPROM Arduino (AT24C256)
TCweng_讀寫Arduino EEPROM記憶體
繼上一篇:EEPROM 記憶體介紹https://tcweng.blogspot.com/2019/05/eeprom.html
TC就一直很想要介紹怎麼讀寫arduino的EEPROM了
因此隔天就馬上跑來寫這篇文章XD
這邊先提供外接EEPROM記憶體的教學連結
https://tcweng.blogspot.com/2019/05/tcwengeeprom-arduino-at24c256.html
先簡單介紹一下:
EEPROM在系統斷電後
資料依然能夠留存
因此如果利用EEPROM儲存檔案
可以省去外接EEPROM的麻煩
而且在下次開機時也可以繼續使用上次的資料
是不是有讀者想到這個可以用來幹嘛了😁😁😏
TC看到Arduino有這個功能後
想到的就是可以拿來儲存紀錄天氣
這樣就不用外接任何的SD卡等等裝置
而且穩定度上非常高!!!!!
用過SD模組的就知道
就算在怎麼想破頭腦
就是有那麼一點的不穩定
進入今天的正題:
要使用Arduino內建的記憶體
要先匯入<EEPROM.h>函示庫
#include <EEPROM.h>
而在setup()區域中
不需要寫任何的程式做設定
(除非有要先寫入某些數值進入記憶體)
底下是最重要的幾個指令:
addr=地址 . val=數值
寫入指令:
EEPROM.write(addr, val);
讀取指令:
底下是兩個實作範例
TC就一直很想要介紹怎麼讀寫arduino的EEPROM了
因此隔天就馬上跑來寫這篇文章XD
這邊先提供外接EEPROM記憶體的教學連結
https://tcweng.blogspot.com/2019/05/tcwengeeprom-arduino-at24c256.html
先簡單介紹一下:
EEPROM在系統斷電後
資料依然能夠留存
因此如果利用EEPROM儲存檔案
可以省去外接EEPROM的麻煩
而且在下次開機時也可以繼續使用上次的資料
是不是有讀者想到這個可以用來幹嘛了😁😁😏
TC看到Arduino有這個功能後
想到的就是可以拿來儲存紀錄天氣
這樣就不用外接任何的SD卡等等裝置
而且穩定度上非常高!!!!!
用過SD模組的就知道
就算在怎麼想破頭腦
就是有那麼一點的不穩定
進入今天的正題:
要使用Arduino內建的記憶體
要先匯入<EEPROM.h>函示庫
#include <EEPROM.h>
而在setup()區域中
不需要寫任何的程式做設定
(除非有要先寫入某些數值進入記憶體)
底下是最重要的幾個指令:
addr=地址 . val=數值
寫入指令:
EEPROM.write(addr, val);
讀取指令:
EEPROM.read(addr);
清除指令EEPROM.clear!!!這個指令是清除全部記憶體底下是兩個實作範例
寫入檔案範例:
#include <EEPROM.h>
int addr = 0;
void setup() {
}
void loop() {
int val = analogRead(0) / 4; // val=讀取類比0腳位的訊號
EEPROM.write(addr, val); //將數值val存入位置addr
addr = addr + 1; // 將位置加1,類似門牌號加一的意思
if (addr == EEPROM.length()) { //假設記憶體全部用完則從門牌號0開始
addr = 0;
}
delay(100);
}
讀取檔案範例:
#include <EEPROM.h>
int address = 0;
byte value;
void setup() {
Serial.begin(9600);
}
void loop() {
value = EEPROM.read(address);
Serial.print(address);
Serial.print("\t");
Serial.print(value, DEC);
Serial.println();
address = address + 1;
if (address == EEPROM.length()) {
address = 0;
}
delay(500);
}
訂閱:
文章 (Atom)
