You are here

SERVO-BOOSTER

SERVO-BOOSTERの概要

SERVO-BOOSTERは12個のRCサーボを接続でき、加速度・ジャイロセンサーを搭載できる、Arduinoシールドキットです。
SERVO-BOOSTERを使用することで、RCサーボで手足を動かし、加速度・ジャイロセンサーで姿勢を取得し、
シリアルカラーLEDで鮮やかに光り、電子音を奏でるロボットを作成することができます。

SERVO-BOOSTERの組み立て例


  • RCサーボモータを12個接続できるコネクタを装備しています。
  • RCサーボは、Arduino IDEに標準で組み込まれているServoライブラリで制御できます。
  • RCサーボ用のコネクタには、シリアル接続のカラーLED WS2812B/NeoPixelを接続することができます。
  • 2個のLEDを装備しておりPWMで明るさの制御を行うことができます。
  • タクトスイッチを2個搭載しています。
  • 圧電スピーカーを搭載し、電子音を鳴らすことができます。
  • 5VのI2C機器を接続する端子を装備しています。
  • I2Cの信号を3.3Vに変換する回路を搭載しており、3.3VのI2C機器を接続する端子を装備しています。
  • MPU6050/MPU9250加速度・ジャイロセンサーモジュールを搭載することができ、機体の姿勢や動きを取得することができます。

ネットショップ:


MPU6050の接続例

タクトスイッチとLED/圧電スピーカー

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) ;
}

LEDのPWM制御

下記の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);
}

RCサーボ

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の回路図を示します。

SERVO-BOOSTERの回路図


開発ソフト: 
チップファミリー: 
MCUチップ: