LoginSignup
2
1

More than 5 years have passed since last update.

Nefry BTでGrove Servoを動かしてみる

Last updated at Posted at 2018-12-24

Groveのコネクタでサーボモータを動くようにしてくれているものがあります。

スイッチサイエンスなどで購入できます。

GROVE - サーボモータ

いつもSG90で試しててこれは触ったことなかったので試してみます。

このサーボモーターモジュールをNefry BTで使っていきます。ライブラリは1.4.1です。

ESP32系だとGroveのWikiにあるサンプルは動かない(はず)なので注意してください。

ESP32だとArduinoのServoが通常通り使えない

まず、#include <Servo.h>がコンパイルが通らないです。

警告:ライブラリServoはアーキテクチャ(avr, sam, samd, nrf52, stm32f4)に対応したものであり、アーキテクチャ(esp32)で動作するこのボードとは互換性がないかもしれません。
In file included from /Users/n0bisuke/dotstudio/Arduino/nefrybt/servo/servo_arduino_test/servo_arduino_test.ino:1:0:
/Applications/Arduino.app/Contents/Java/libraries/Servo/src/Servo.h:73:2: error: #error "This library only supports boards with an AVR, SAM, SAMD, NRF52 or STM32F4 processor."
 #error "This library only supports boards with an AVR, SAM, SAMD, NRF52 or STM32F4 processor."
  ^
exit status 1
ボードNefry BT R2 / R3に対するコンパイル時にエラーが発生しました。

などのエラーがでます。そういうものなので焦らずいきましょう。

PWM制御する

代わりにPWMで制御します。

@takudooonくんのPWM制御をマスターしよう!Node-REDでサーボモータを遠隔制御する方法&初ハンズオンレポートが分かりやすいです。

  • D2のGroveピンに接続します。
servo.ino
//基本Iotは2.4GHz帯を使うこと
#include<Nefry.h>
#include"esp32-hal-ledc.h"

#define SERVO_PIN D2

//PWM信号の周波数をPWMをつくっているクロック周波数で割ったもの
//ledcSetupでPWMの範囲を8bitに設定したとき、0~255 10bitのときは0~1023となる、2進数の話
#define PWM_BITWIDTH 16

//角度 -> PWM
int deg2pw(int deg){
    double ms = ((double) deg - 90.0) * 0.95 / 90.0 + 1.45;
    return (int) (ms / 20.0 * pow(2, PWM_BITWIDTH));
}

void setup() {
  Serial.begin(115200);
//ledcSetup(チャンネル数(0~),周波数(たとえばPWMサイクル20mHzなら50Hzになるという意味(SG90の場合))、分解能は任意(ただし限度はある))
  ledcSetup(0,50,PWM_BITWIDTH);
  ledcAttachPin(SERVO_PIN,0);//left_motor
}

void loop(){
  ledcWrite(0,deg2pw(0));
  delay(800);
  ledcWrite(0,deg2pw(180));
  delay(800);
}

deg2pw関数が便利で、角度指定してpwm出力に変えてくれます。たくどんさん神。
loopの中はシャフトが0~180度で回るプログラムになっています。

200度くらいまで動いた雰囲気ですがサンプルコードに180度までが書いてあったので180度くらいで試しています。

SG90もだけど、ハードウェア的に180度くらいまでしか回らないものが多いと思います。

試してみる

これで無事に動きましたね。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1