アフィリエイト広告を利用しています
Ad×Ad


Ad×Adは表示されるだけで報酬がもらえます。
以下から登録すると100ptもらえます。
 → アドアド -あなたの街の無料広告サイト-
検索
最新記事

広告

posted by fanblog

2017年06月24日

I2C(Wire)送信側サンプルソフトの修正

デバッグについての過去記事と基本的には同じです。

master-writer2 コード


// Wire Master Writer
// by Nicholas Zambetti <http://www.zambetti.com>

// Demonstrates use of the Wire library
// Writes data to an I2C/TWI slave device
// Refer to the "Wire Slave Receiver" example for use with this

// Created 29 March 2006
// Modified 23 June 2017 by Papaan

#include <Wire.h>

byte x[2];  //for a serial number
const int startButton = 7;

void setup() {
 Wire.begin(); // join i2c bus (address optional for master)
 pinMode(startButton, INPUT);
 Serial.begin(115200);//Arduino IDE 1.0.6
 //Serial.begin(230400);//Arduino IDE 1.6.7
 Serial.println("===Transmit Start===");
 showButtonState();
 x[0] = 0;
 x[1] = 0;
}

void loop() {
 debugPrint("You can write keywords");//ここは適当な文字列
 debugRegPrint("TWBR*", TWBR); //read TWBR reg.  レジスター名には*をつける
 debugRegPrint("TWSR*", TWSR); //read TWSR reg.
 debugIntPrint("2byteReg*", 3841);//ex. 0xF01
 debugIntPrint("Integer", 11000);//ex. 11000
 breakPoint();
}

void showButtonState(void) {
 Serial.print("startButton = ");
 Serial.println(startButton);
 Serial.print("buttonState = ");
 Serial.println(digitalRead(startButton));
}

void debugPrint(char thisStr[]) {
 Wire.beginTransmission(8); // transmit to device #8
 Wire.write(thisStr);        // sends charcters
 Wire.write(x[0]);           // sends one byte
 Wire.write(x[1]);           // sends one byte
 Wire.endTransmission();     // stop transmitting
 if (x[0] == 255){
   x[1]++;
 }
 x[0]++;
}

void debugRegPrint(char thisStr[], byte regValue) {
 Wire.beginTransmission(8);  // transmit to device #8
 Wire.write(thisStr);        // sends charcters
 Wire.write(regValue);       // sends one byte
 Wire.write(0);              // dummy byte(debugPrintと揃える為)
 Wire.endTransmission();     // stop transmitting
}

void debugIntPrint(char thisStr[], int variable) {
 Wire.beginTransmission(8);  // transmit to device #8
 Wire.write(thisStr);        // sends charcters
 Wire.write((byte)variable); // sends low byte
 Wire.write((byte)(variable >> 8));// sends high byte
 Wire.endTransmission();     // stop transmitting
}

void breakPoint(void) {
 while (1) {
   if (digitalRead(startButton) == LOW) {
     showButtonState();
     delay(500);//wait a finger to take off
     break;
   }
 }
}

この記事へのコメント
コメントを書く

お名前: 必須項目

メールアドレス: 必須項目


ホームページアドレス: 必須項目

コメント: 必須項目

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/6402554
※ブログオーナーが承認したトラックバックのみ表示されます。

※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は30日以上新しい記事の更新がないブログに表示されております。