準備
◆Arduino IDE (PCにインストール)
◆できれば、何か電圧レベル変換するもの(N-JFETを使った)
工作開始
◆ 接続します
※(外部抵抗不要)GY-50 L3G4200D の SCL、SDA端子は 10kΩでpullUpされています
※(外部抵抗不要)Arduino の Wire ライブラリーを利用すると、内部の抵抗を利用して プルアップしてくれます
◆接続を確認します
確認1
確認2(Arduino Uno がつながっているポート)
◆スケッチを書きます。Y軸のみ
#include <Wire.h>
int GyroAddress = 0b1101001;
void setup() {
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(GyroAddress);
Wire.write(0x20);//Adress to set output selection
Wire.write(0b00001010);//I set output selection with only Y-axis
Wire.endTransmission();
delay(1500);
}
void loop(){
Wire.beginTransmission(GyroAddress);
Wire.write(0x2B); //(high)Address of Y-axis angular rate data.
Wire.endTransmission();
Wire.requestFrom(GyroAddress, 1); // read a byte
while(!Wire.available()) {
// waiting
}
int yH = Wire.read();
Wire.beginTransmission(GyroAddress);
Wire.write(0x2A); //(low)Address of Y-axis angular rate data.
Wire.endTransmission();
Wire.requestFrom(GyroAddress, 1); // read a byte
while(!Wire.available()) {
// waiting
}
int yL = Wire.read();
int y = 256 * yH + yL;
Serial.print(" angular=");
Serial.print(y);
Wire.beginTransmission(GyroAddress);
Wire.write(0x26); //Address of temperature
Wire.endTransmission();
Wire.requestFrom(GyroAddress, 1); // read a byte
while(!Wire.available()) {
// waiting
}
int t = Wire.read();
Serial.print(" temperature=");
Serial.println(t);
delay(100);
}
→
◆シリアルモニタで見ます
・角速度も温度も0点調整をやらないといけないようだ。
・温度が上がると数値が下がるようだ。
・割り込みはどうするのだ?
What is Interrupt ?
Does anyone have some obvious fix / advice / a direction to try?
◆Arduino IDE (PCにインストール)
◆Arduino Uno (360円 + 送料170円)
◆USBケーブル AーBタイプ (100円+送料170円)
◆GY-50 L3G4200D ジャイロセンサーモジュール (470円 + 送料170円)
・角速度と温度の検出
・VCC電圧は5V
・SCL、SDA電圧は3.3V
・SCL、SDA端子は 10kΩでpullUpされています
工作開始
◆ 接続します
※(外部抵抗不要)GY-50 L3G4200D の SCL、SDA端子は 10kΩでpullUpされています
※(外部抵抗不要)Arduino の Wire ライブラリーを利用すると、内部の抵抗を利用して プルアップしてくれます
◆接続を確認します
確認1
確認2(Arduino Uno がつながっているポート)
◆スケッチを書きます。Y軸のみ
#include <Wire.h>
int GyroAddress = 0b1101001;
void setup() {
Serial.begin(9600);
Wire.begin();
Wire.beginTransmission(GyroAddress);
Wire.write(0x20);//Adress to set output selection
Wire.write(0b00001010);//I set output selection with only Y-axis
Wire.endTransmission();
delay(1500);
}
void loop(){
Wire.beginTransmission(GyroAddress);
Wire.write(0x2B); //(high)Address of Y-axis angular rate data.
Wire.endTransmission();
Wire.requestFrom(GyroAddress, 1); // read a byte
while(!Wire.available()) {
// waiting
}
int yH = Wire.read();
Wire.beginTransmission(GyroAddress);
Wire.write(0x2A); //(low)Address of Y-axis angular rate data.
Wire.endTransmission();
Wire.requestFrom(GyroAddress, 1); // read a byte
while(!Wire.available()) {
// waiting
}
int yL = Wire.read();
int y = 256 * yH + yL;
Serial.print(" angular=");
Serial.print(y);
Wire.beginTransmission(GyroAddress);
Wire.write(0x26); //Address of temperature
Wire.endTransmission();
Wire.requestFrom(GyroAddress, 1); // read a byte
while(!Wire.available()) {
// waiting
}
int t = Wire.read();
Serial.print(" temperature=");
Serial.println(t);
delay(100);
}
→
◆シリアルモニタで見ます
・角速度も温度も0点調整をやらないといけないようだ。
・温度が上がると数値が下がるようだ。
・割り込みはどうするのだ?
What is Interrupt ?
Does anyone have some obvious fix / advice / a direction to try?
0 件のコメント:
コメントを投稿