前にもやった気がしなくもないですが、自分が完全に忘れていたので今回はi2cをします。
まず、勘違いしていたのですが、SoftwareSerialや普通のシリアル通信はI2Cとは関係ありません。なんでこれを間違えていたのかわからないのですが、なぜかRX,TXピンで通信しようとしていました。正しくはSDA(A4),SCL(A5)ピンですね。
とりあえず今回はArduino同士でI2Cをします。
・配線

SDAとSDA、SCLとSCL、GNDとGNDをつなぎます。
・プログラム
①master
5秒おきにリクエスト送っているだけです。
まず、勘違いしていたのですが、SoftwareSerialや普通のシリアル通信はI2Cとは関係ありません。なんでこれを間違えていたのかわからないのですが、なぜかRX,TXピンで通信しようとしていました。正しくはSDA(A4),SCL(A5)ピンですね。
とりあえず今回はArduino同士でI2Cをします。
・配線

SDAとSDA、SCLとSCL、GNDとGNDをつなぎます。
・プログラム
①master
5秒おきにリクエスト送っているだけです。
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
}
void loop() {
Wire.requestFrom(8, 6);
while (Wire.available()) {
char c = Wire.read();
Serial.print(c);
}
Serial.println("");
delay(500);
}
②slave
リクエストが来た時にセンサーの値を返します。
②slave
リクエストが来た時にセンサーの値を返します。
#include <Wire.h>
void setup() {
Wire.begin(8);
Wire.onRequest(requestEvent);
}
void loop() {
delay(100);
}
void requestEvent() {
Wire.write("hello ");
}
これを二台のArduinoに入れて動かすとmasterのシリアルモニタにhelloと表示されます。
今回はここまでです。次回はどうにかします。それではまた今度。
これを二台のArduinoに入れて動かすとmasterのシリアルモニタにhelloと表示されます。
今回はここまでです。次回はどうにかします。それではまた今度。