Android+Arduino
こんな感じで何か出来ないか考え中↓
自分にはソフトウェアの能力が足りないですが,こんな感じの配置も目標↓
今日の進展.
SoftModemのようなことが出来ないかと思って,オーディオ信号をデジタル化して入力する回路を作って
Ardumoto上に載せてデジタル入出力ピンに直接はんだ付け.
Androidでピアノのアプリを使って音を出してArduinoでパルス幅を読み取ってみました.
波形が歪んでいるので安定した値は取れませんが,パルス幅(単位はμs)はちゃんと計測できている
ことがシリアル通信でモニタできました.
あとは音階でモータコントロールするスケッチを書けば,お手軽なAndroidコントロール移動ロボの出来上がり.
動き出しました.
Ardumotoのサンプルスケッチを改変して,
まずピン定義.
int ch_R = 2; // audio channel R
int ch_L = 4; // audio channel L
setup中に以下を記述.
pinMode(ch_R, INPUT); // 右チャンネル入力設定
pinMode(ch_L, INPUT); // 左チャンネル入力設定
digitalWrite(dir_a, LOW); //Set motor direction, 1 low, 2 high
digitalWrite(dir_b, LOW); //Set motor direction, 3 high, 4 low
analogWrite(pwm_a, 0);
analogWrite(pwm_b, 0);
loop中に以下を記述.元のサンプルの記述は削除.
パルス幅を測って,500μs以上か以下かでモータの方向を決めて回してます.
pR=pulseIn(ch_R,HIGH,10000);
pL=pulseIn(ch_L,HIGH,10000);
if (pR !=0 ){
if (pR<500) { digitalWrite(dir_a, LOW); } else {digitalWrite(dir_a, HIGH); }
analogWrite(pwm_a, 200);
} else {analogWrite(pwm_a, 0); }
if (pL !=0 ){
if (pL<500) { digitalWrite(dir_b, LOW); } else {digitalWrite(dir_b, HIGH); }
analogWrite(pwm_b, 200);
} else {analogWrite(pwm_b, 0); }
delay(100);
ピアノで動かした動画
音楽をかけたりするとプルプル踊ってるようにも見えます.