スイッチの入力検知で受付ロボットを作ってみる

ArduinoのdigitalReadを使うことでスイッチの入力を検知することは理解できたので、実際にタクトスイッチをロボットに取り付けて受付ロボットを作ってみます。

digitalReadで制御してみます。

Arduinoでこんなものを作ってみます

クムクムロボットのボードはArduino Leonardo互換のボードで、既にボード内にはArduinoのブートローダーが標準で搭載されています。
そのため、クムクムロボットの背面のUSBコネクタとパソコンをUSBケーブルで接続し、パソコンではArduinoのIDEを起動すればそのまま簡単にArduinoのプログラミングができてしまします。

今日はこんなものを作ってみます。

Arduinoのプログラムと実際の動き

実際に動いている様子の動画です。(Arduinoのソースコードは後でダウンロードできます)
クムクムのポートなどの説明は 以前の投稿記事「クムクムロボット[QX-001R3J]の回路構成とArduinoプログラミング」 を見ながらプログラミングすることができます。

ブレッドボードでの接続図

クムクムロボットのサーボモータが接続されているポートはArduinoのデジタル入出力端子です。

クムクムロボットでの動きは、モータを回転させるために出力として使用していますが、入力にもセットして使えるため、このモーター接続ポートの一つをスイッチの入力として使用してみます。

実際には一番左(クムクムロボットでの右腕)の部分を今回は入力ポートとして、ArduinoのpinMode関数ではINPUTとして使用しています。

この回路では、このポートに常にデジタル信号のHIGH(+5V)が入力されていて、スイッチを押されたときデジタル信号のLOW(0V)になるので、このタイミングで目的の動作をするようなプログラムを作ってみます。

プログラム

プログラムの主要部分の説明
※ソースコード内にコメントを記載ていますのでここでは主要部分を説明します。

5行目 #include “AquesTalk.h”
Arduino用AquesTalkライブラリーはArduinoにインストールせずプログラムソースのある部分に置いていますのでインクルード分では<>を使わず””を使っています。

25行目 Servo MT[7] ;
モータは7個あるので7個分のクラスを配列で宣言しました。
今回は1個しか使いませんが、反応で腕や足などを動かしたい場合に配列宣言しておくと便利に使えます。

33行目 pinMode(MT_RARM,INPUT) ;
受付のピンポン入力スイッチはクムクムモータポートの右腕モータ部分のポートを使用します。
そのためArduino標準関数でこのポートをINPUT(入力)に設定しました。

39行目 digitalWrite(MT_POWER,HIGH) ;
モータへ電源を与えます。
この命令を送っておかないと、検出用のスイッチで使っている右腕モータの電源部分に5Vが出力されないためスイッチ検出ができません。

ArduinoIDEで読み込めるソースコードはここをクリックするとダウンロードできます。

コメント

タイトルとURLをコピーしました