SERVO-BOOSTERは12個のRCサーボを接続でき、加速度・ジャイロセンサーを搭載できる、Arduinoシールドキットです。
SERVO-BOOSTERを使用することで、RCサーボで手足を動かし、加速度・ジャイロセンサーで姿勢を取得し、
シリアルカラーLEDで鮮やかに光り、電子音を奏でるロボットを作成することができます。
SERVO-BOOSTERの組み立て例
ネットショップ:
MPU6050の接続例
SW1-SW2を押すと、対応するLEDが点灯し、それぞれ異なる音を鳴らすスケッチを以下に示します。
タクトスイッチSW1, SW2に接続されている端子にはプルアップ抵抗が接続されていないため、その端子を初期化する際には、MCUの内部プルアップを有効にするために、入出力モードとしてINPUT_PULLUPを指定してください。
#define SW1 A0 #define SW2 A1 #define LED1 5 #define LED2 6 #define SOUNDER A2 void setup() { pinMode(SW1, INPUT_PULLUP) ; pinMode(SW2, INPUT_PULLUP) ; pinMode(LED1, OUTPUT) ; pinMode(LED2, OUTPUT) ; } void loop() { int hz = 0 ; if (digitalRead(SW1) == LOW) { hz += 400 ; digitalWrite(LED1, HIGH) ; } else digitalWrite(LED1, LOW) ; if (digitalRead(SW2) == LOW) { hz += 800 ; digitalWrite(LED2, HIGH) ; } else digitalWrite(LED2, LOW) ; if (hz != 0) tone(SOUNDER, hz) ; else noTone(SOUNDER) ; delay(100) ; }
下記のArduino IDEに標準で付属するServoライブラリの使用法にも示されているように、Servoライブラリを使用すると、デジタルピン9,10のPWM機能は利用できなくなります。
しかしながら、デジタルピン5,6のPWM機能は引き続き利用することができます。
https://www.arduino.cc/en/Reference/Servo
LEDをPWMで制御する例として、Arduino IDEに付属するサンプルスケッチFadeの抜粋スケッチを示します。
元々のサンプルスケッチでは、デジタルピンの9に接続されたLEDを点滅させるようになっていますが、このスケッチでは、デジタルピンの5(LED1)に接続されたLEDを制御するように変更しています。
int led = 5; // the PWM pin the LED is attached to int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by void setup() { pinMode(led, OUTPUT); } void loop() { // set the brightness of pin 5: analogWrite(led, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } delay(30); }
Arduino IDEに標準で付属するServoライブラリの使用法は以下のURLに示されており、
最大12個のRCサーボを接続して制御することができます。
https://www.arduino.cc/en/Reference/Servo
Arduino IDEに付属するサンプルスケッチSweepの抜粋スケッチを示します。
このスケッチでは、デジタルピンの9に接続されたRCサーボを制御するようになっています。
したがって、SERVO-BOOSTERのRCサーボコネクタの中ほどのD9にRCサーボを接続してください。
SERVO-BOOSTER のRCサーボコネクタは、上の列(SV5)が信号、真中の列(SV6)が電源、下の列(SV7)がグランドとなっています。
このサンプルスケッチは、1つだけのRCサーボを制御するために、1つだけのServoオブジェクト(myservo)を定義して利用していますが、
制御するRCサーボ分のServoオブジェクトを定義して利用することで、最大12個のRCサーボを制御することができます。
#include <Servo.h> Servo myservo; // create servo object to control a servo // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position void setup() { // attaches the servo on pin 9 to the servo object myservo.attach(9); } void loop() { // goes from 0 degrees to 180 degrees for (pos = 0; pos <= 180; pos += 1) { // in steps of 1 degree myservo.write(pos); delay(15); } // goes from 180 degrees to 0 degrees for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } }
SERVO-BOOSTERの回路図を示します。
SERVO-BOOSTERの回路図