I2C実験中

Naoです。

今日は、I2C通信について実験したので、内容と結果を書きたいと思います。

内容はArduino Duemilanoveを2個I2C接続して、スイッチのON/OFFで
スレーブ側のArduinoから送る内容を変更するというものです。

プログラムの内容
マスター側

#include

void setup()
{
Wire.begin(); // I2Cバスのマスター側に設定
Serial.begin(9600); // シリアル通信データ転送レートの設定
}

void loop()
{
Wire.requestFrom(2, 8); // スレーブの2番に接続されているデバイスから8バイトのデータを取得

while(Wire.available()) // Wire.available()がfalseになるまで(たぶん受信データの受信が終わるまで)ループ
{
char c = Wire.receive(); // 1バイト受信
Serial.print(c); // シリアルポートに受信データを送信
}

delay(500);
}


スレーブ側

#include
int a =0; //スイッチの値
void setup()
{
Serial.begin(9600);
Wire.begin(2); // I2Cバスのスレーブ側の2番に設定
Wire.onRequest(requestEvent); // マスターに呼ばれたときに呼び出す関数の設定
pinMode(12,INPUT); // スイッチの接続ポートの設定
}

void loop()
{
delay(100);
}

void requestEvent()
{
a = digitalRead(12); //スイッチの値の読み込み(0 or 1)
Serial.print(a); //スイッチの値をシリアルポートへ送信
if (a == 1){
Wire.send("Koisora "); // 8バイト送信
}
else{
Wire.send("NaGaTo "); // 8バイト送信
}
}

接続図です。クリックで拡大します。
I2C1

3個通信もやろうとしたのですが、失敗してしまったので、やり直したいです。

送信するバイト数が足りないと y になるっぽいです。

ロボットに使えるかな?

Nao
スポンサーサイト

Arduino

Naoです。
今日はArduinoにLCDを接続したり、
きゅうりパッドの進化形のNPADを作ったりしてました。
IFのところを作るのが、大変すぎてまだできていない上に、
ミスがかなり見つかってやばいです。
再来週までに完成させたいと思います。

Nao
プロフィール

Nao

Author:Nao
Nao:ロボカッパー,Mtgプレイヤー

FC2カウンター
FC2カウンター
現在の閲覧者数:
最新コメント
最新トラックバック
カテゴリ
FC2ブックマーク
ゆっくりみていってね
初音ミク 名曲メドレー


presented by 初音ミク オリジナル

検索フォーム
リンク
QRコード
QRコード
最新記事
月別アーカイブ