こんばんわ、
Docomoユーザーの喫茶店です.
難病二つ抱えてがんばってます!!
Arduinoに高精度2軸センサのDAS-20を取り付けてみました.
--------
DAS-20とArduinoのつなぎ方ですが、
上の写真のx,yをアナログポートの1,2に取り付けました.
電源はArduinoの5Vからとり、GNDはGNDにとりつけます.
【結果】
とりあえず、角度を測定することはできました.
なので、これより下は見なくていいです.
------------------------------
【プログラム】
int x = 0;
int y = 0;
int p=1000;
long x_sum;
long y_sum;
//回数の変数
int count=0;
void setup(){
Serial.begin(9600);
}
void loop(){
x = analogRead(0);
y = analogRead(1);
x_sum +=x;
y_sum +=y;
count++;
if(count>p-1){
//合計数を100で割って平均値を出す
double xx,yy;
double rad_x,rad_y;
xx=x_sum/p;
yy=y_sum/p;
/*ここでいう「494」とは、家の机で測った値.ここを変えよ
算出の仕方は、水平においた時のxx(x0とする)、
直角(20deg(x1とする),-20deg(x2とする))に置いた時のxxより算出
(x2-x1)/2がx0になればいい.
*/
rad_x=(xx-494)/267*20;
rad_y=(yy-494)/267*20;
Serial.print("x=");
Serial.print(xx,DEC);
Serial.print(",");
Serial.print("y=");
Serial.print(yy,DEC);
Serial.println("");
Serial.print("xx=");
Serial.print(rad_x);
Serial.print("deg");
Serial.print(",");
Serial.print("yy=");
Serial.print(rad_y);
Serial.print("deg");
Serial.println("\n");
//カウントを0に戻す
count=0;
//合計数を0に戻す
x_sum=0;
y_sum=0;
}
}
--------
コードを見てもらったら分かりますが、
Serial.print("x=");
から
Serial.print(yy,DEC);
Serial.println("");
それ以下が、取得した値から°(度)を取り出します.
rad_x=(xx-494)/267*20;
rad_y=(yy-494)/267*20;
このあたりでやってます.
自分でやるときは、
センサを水平においた時の値・・・①
センサを限界まで傾けた値(上限、下限両方)・・・②、③
この3つが必要です.
具体的な式は、
①=(②+③)/2
①がこれに収まれば嬉しいです.
---------
rad_x=(xx-494)/267*20;
これの「494」は水平においたときに出た値で、
これを「0」にするためにつけました.
そうすると、①の時は0、
②と③の時は、測定した値-494をかえします.
角度は、②、③が最大の値のはずなので
「最大値 / 最大*センサの測定範囲」
ということになります.
センサの測定範囲がプラスマイナス90度なら90がはいります.
Arduinoの関数の使い方がわからなかったためこういう形を取りました.
- カレンダー
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 喫茶店プロフ
持病があります.
【持病】
SLE(全身性エリテマトーデス ループス腎炎)、大腿骨骨頭壊死.映画鑑賞と読書が好きです.GUMIさんが大事です.
【マジック】
Youtubeの所に動画があります.
クローズアップが得意です.
プロフィールの↓に連絡先があります.
連絡先:
- グミプロフ
Free counters
- リンク
- 最新コメント
- カウンター
- アーカイブ
- カテゴリー