Arduino 加速度センサ モーターカー その1
加速度センサを傾けると、その方向にモーターが回転し車体が動くというものです。
製作に時間がかかりました。
ベータ版
参考にしたサイト↓
加速度センサ部分(Arduinoとの接続)
モーター部分(Arduinoとの接続)
ほかの方のサイトをそのまま利用しても接続できなかったので、
一部応用(自己判断)して接続しました。
スケッチを書く際に参考↓
完成した配線がこちら↓(わかりにくいですが)
何とか写真から解読してください。
組み立てるのに時間がかかりました。
大体は参考にしているサイト通りなので接続できると思います。
いきなりすべて接続しようとすると複雑なので、
加速度センサとLED部分、モーター部分と分けてArduinoと接続してみましょう。
スケッチは何パターンか作りましたがどれも完成系ではないので、
不具合があればご自身で改良してくださるとありがたいです。
基本となる角度を求めるためのスケッチ↓(青文字部分)
void setup()
{
// シリアルモニターの初期化をする
Serial.begin(9600) ;
}
void loop()
{
long x , y , z ;
x = y = z = 0 ;
x = analogRead(3) ; // X軸
y = analogRead(4) ; // Y軸
z = analogRead(5) ; // Z軸
Serial.print("X:") ;
Serial.print(x) ;
Serial.print(" Y:") ;
Serial.print(y) ;
Serial.print(" Z:") ;
Serial.println(z) ;
delay(50) ;
}
↑により
加速度センサの角度を求めるために使用する数値を測定するのに使う
角度を求めるのにしようする計算式
(最大値-最小値)÷180=①
(現在の数値-最小値)÷①-90
シリアルモニタを使用し、
X,Yの最大値と最小値を求める↓参照
上はあくまで角度を求めるのに必要な数値を計測するだけなので、
角度を求める際は↓のスケッチ(紫文字部分)(赤文字部分は人によって異なります)
void setup()
{
// シリアルモニターの初期化をする
Serial.begin(9600) ;
}
void loop()
{
int i ;
long x,y,z;
//50回センサ値を読み込んで平均を算出
x=y=z=0;
for (i=0 ; i < 50 ; i++) {
x = x + analogRead(3) ; // X軸
y = y + analogRead(4) ; // Y軸
z = z + analogRead(5) ; // Z軸
}
x = x / 50 ;
y = y / 50 ;
z = z / 50 ;
int rotateX = (x-282)/2.54 - 90; //角度を求める式 (一部個体差あり)
int rotateY = (y-266)/2.54 - 90; (一部個体差あり)
Serial.print("X:") ;
Serial.print(x) ;
Serial.print(" ") ;
Serial.print(rotateX) ;
Serial.print(" Y:") ;
Serial.print(y) ;
Serial.print(" ") ;
Serial.println(rotateY) ;
delay(50) ;
}
これで角度がわかります。
角度があっていれば大丈夫だと思います。
角度がわかったところで今回はここまでです。
長くなるので走らせるスケッチは次回書きます。
さようなら