前回の記事「ライブラリを使ってサーボモーターを回してみよう」では、サーボモーターのシャフトを0~180度の範囲を一定のスピードで回転させるというものでしたが、今回は半固定抵抗を使ってシャフトを任意の角度にコントロールしてみます。
今回必要な部品
- Arduino×1
- USBケーブル( Aコネクタ – Bコネクタ )×1
- ミニブレットボード×1
- サーボモーター(SG90)×1
- 半固定抵抗(10kΩ)×1
- ジャンプワイヤー×6
回路図
スケッチ(その1)
#include <Servo.h> //ライブラリ<Servo.h>を組み込む Servo sv; //Servoオブジェクト“sv”を作成する void setup() { //svの出力をリセットした上で、D6番ピンに割り当て、パルス幅を500~2400マイクロ秒とする sv.attach(6, 500, 2400); } void loop() { int angle = analogRead(0) ; //変数angleをA0番ピンの入力値とする //angleを500~2400の整数値に変換してD6番端子に出力する sv.writeMicroseconds(map(angle, 0, 1023, 500, 2400)) ; delay(10) ; }
スケッチ(その2)
#include <Servo.h> //ライブラリ<Servo.h>を組み込む Servo sv; //Servoオブジェクト“sv”を作成する void setup() { //svの出力をリセットした上で、D6番ピンに割り当て、パルス幅を500~2400マイクロ秒とする sv.attach(6, 500, 2400); Serial.begin(9600); //シリアル通信のデータ転送レートを9600ビット/秒に設定する } void loop() { int angle = analogRead(0) ; //変数angleをA0番ピンの入力値とする //angleを0~180の整数値に変換してPCに送信する Serial.println(map(angle, 0, 1023, 0, 180)) ; //angleを500~2400の整数値に変換してD6番端子に出力する sv.writeMicroseconds(map(angle, 0, 1023, 500, 2400)) ; delay(20) ; }
Arduino IDEの“ツール” → “シリアルプロッタ”をクリックしてから“書込み”ボタンをクリックしてください。半固定抵抗を回すと、それに応じてシリアルプロッタのグラフがシャフトの角度を表示します。