2343412 ランダム
 HOME | DIARY | PROFILE 【お気に入りブログ登録】 【ログイン】

CPUを作ろう ~計算機教材とマイコンと電子工作~

Android+Arduino

まとめました↓

-----------------------------------
こんな感じで何か出来ないか考え中↓

CIMG1963.JPG

自分にはソフトウェアの能力が足りないですが,こんな感じの配置も目標↓

CIMG1965.JPG

-----------------------------------
今日の進展.
SoftModemのようなことが出来ないかと思って,オーディオ信号をデジタル化して入力する回路を作ってArdumoto上に載せてデジタル入出力ピンに直接はんだ付け.

CIMG1968.JPG

Androidでピアノのアプリを使って音を出してArduinoでパルス幅を読み取ってみました.

CIMG1970.JPG

波形が歪んでいるので安定した値は取れませんが,パルス幅(単位はμs)はちゃんと計測できていることがシリアル通信でモニタできました.

CIMG1973.JPG

あとは音階でモータコントロールするスケッチを書けば,お手軽な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);


ピアノで動かした動画

音楽をかけたりするとプルプル踊ってるようにも見えます.

CIMG1982.JPG

-----------------------------------






Copyright (c) 1997-2018 Rakuten, Inc. All Rights Reserved.