ArduinoからEEPROMの24LC1025を使う方法について解説します.
Arduinoと24LC1025はI2Cで通信を行います.
*この記事ではArduino Unoを使用します
I2Cや,I2Cの仕組みについて知りたい方はこちらを参照してください.
配線図
Arduino Unoと24LC1025の配線図を次の図に示します.
I2Cではプルアップ抵抗が必要になりますが,Arduino Unoでは内部でプルアップされるので使用していません.
今回は24LC1025を1つだけ使用します.
A0=0,A1=0,A2はVCCに接続しています.
WPはVCCに接続して書き込み操作を有効にします.
プログラム
プログラムを次に示します.
#include <Wire.h>
uint8_t slave_address = 0b1010000; // スレーブアドレス(B0=0, A0=0, A1=0)
uint16_t address = 0x0000; // EEPROMのアドレス
uint8_t data; // 読み出しデータ
void setup() {
Serial.begin(115200);
Wire.begin(); // Wireライブラリの初期化
Wire.beginTransmission(slave_address); // 送信開始
Wire.write(highByte(address)); // アドレスの上位1バイトをキューに送信
Wire.write(lowByte(address)); // アドレスの下位1バイトをキューに送信
Wire.write(0x7F); // 書き込むデータをキューに送信
Wire.endTransmission(); // 送信完了
delay(4);
Wire.beginTransmission(slave_address); // 送信開始
Wire.write(highByte(address)); // アドレスの上位1バイトをキューに送信
Wire.write(lowByte(address)); // アドレスの下位1バイトをキューに送信
Wire.endTransmission(); // 送信完了
Wire.requestFrom(slave_address, 1); // 受信開始
data = Wire.read(); // データの読み出し
Serial.print(data, HEX); // dataを16進数で表示
}
void loop() {
}
このプログラムは,
- 24LC1025のアドレス0x0000に0x7Fを書き込む
- 24LC1025のアドレス0x0000からデータを読み出す
- 読み出したデータを16進数で表示する
という操作を行なっています.
シリアルモニタに7Fが表示されれば正常です.