サーボモーターの制御信号を光や音にする
【第04期 サーボモーターを動かす】よりServoライブラリのwriteメソッドが送る制御信号でLEDを光らせ、圧電スピーカーを鳴らす。■材料・パーツ・道具可変抵抗10kΩ(つまみ付き半固定抵抗・3端子)×1サーボモーターSG90/SG92R(マイクロサーボモーター・PWM方式・コネクタはJRタイプ)×1電解コンデンサー47μF(耐電圧は使用する電圧より高めのもの)×1赤色LED(砲弾型φ5mm)×1抵抗510Ω(カラーコードは緑茶茶金、LEDの電流制限抵抗)×1圧電スピーカー(他励式)×1抵抗1kΩ(カラーコードは茶黒赤金)×1※電解コンデンサーはバイパスコンデンサーとして使用。モーター始動時の 大電流による電圧降下を防ぐため、電源近くに接続します。■手順(1) 回路を組み立てます。デジタル9番ピンはLEDにつなぎます。(2) スケッチを入力し、コンパイルしてエラーが出ないかどうか確かめます。 可変抵抗のつまみを左いっぱいに回しておきます。スケッチをArduinoに 書き込み、動作を確かめます。(3) 可変抵抗のつまみをゆっくり右に回します。LEDの明るさはどのように 変わりましたか?(4) 可変抵抗のつまみを左いっぱいに回しておきます。デジタル9番ピンを 圧電スピーカーにつなぎかえます。可変抵抗のつまみをゆっくり右に 回すと、わずかに音色が変わります。※デジタル9番ピンにサーボモーターをつなぐと(もちろん、電源とGNDも 正しくつなぎます)、サーボモーターを動かすことができます。■回路下のブレッドボード図では、LEDや圧電スピーカーの+端子側のジャンパーワイヤーが接続してありません。手順にしたがって、デジタル9番ピンに接続して動作確認しましょう。※アナログ0番ピンで可変抵抗の電圧レベルを検出する。※デジタル9番ピンでLEDを光らせる/圧電スピーカーを鳴らす。※デジタル10番ピンでサーボモーターを動かす。※サーボモーターによってケーブルの配列と色に違いがあります。※上図のサーボモーターの端子は、黒がGND、赤が電源、黄がPWM制御信号です。※SG90/SG92Rでは、茶がGND、赤が電源(約5V)、橙がPWM制御信号のケーブルです。■スケッチ#include <Servo.h>#define VR 0#define CNTL 9#define SERVO 10Servo myservo;Servo mycntl;void setup() { myservo.attach(SERVO); myservo.write(0); mycntl.attache(CNTL); mycntl.write(0); delay(500);}void loop() { int val; val = analogRead(VR); val = map(val, 0, 1023, 0, 180); myservo.write(val); mycntl.write(val);}手順(4)の圧電スピーカーで鳴っている音の高さはどれぐらいでしょうか?サーボモーターの制御信号の周波数を求めてみましょう。制御振動の周期は20ミリ秒で、1秒=1000ミリ秒なので、(1000÷20)ヘルツ=50ヘルツピアノの低い「ソ」に近い音の高さです。■コメントServoライブラリの主なメソッドは使いました(使ってないのは detach)。次回からは「リンク機構」に関する話へ移っていきます。せっかくだから、動くリンクを載せたいと思い、CADソフトを半年余り前にちょっと触ってみたのですが…その後ほぼ手をつけられず(今年は夏休みもあまりとれず)。ということで、準備ができるまで「電子工作プログラミング」の記事はしばらく休止します。