テレビくん+サーボモータで、何か動かしてみたい!ホントは、手を上げたり下げたりしたかったんだけど、サイズ的に収まりそうになかったので、アンテナを回してみます。(本物のテレビくんはアンテナ回さないけど)
M5Stack でArduinoからのサーボモータ制御は、こちらのページを参考にしました。
OGIMOノート:M5Stack(ESP32)を使い始めてみた
http://ogimotokin.hatenablog.com/entry/2018/07/22/182140
いろいろDefine指定。
#define LEDC_CHANNEL_3 3 //LEDCのチャンネル指定 #define LEDC_TIMER_BIT 16 //LEDCのPWMタイマーの精度設定 #define LEDC_SERVO_FREQ 50 //サーボ信号の1サイクル 50Hz:20ms #define SERVO_PIN 22 //ServoPWMピン #define SERVO_MIN_WIDTH_MS 0.6 #define SERVO_MAX_WIDTH_MS 2.4
SERVO_PINは22番を使いました。GROVE A ポートの黄色コードです。
int servo_pwm_count(int v) { float vv = (v + 90) / 180.0 ; return (int)(65536 * (SERVO_MIN_WIDTH_MS + vv * (SERVO_MAX_WIDTH_MS -SERVO_MIN_WIDTH_MS)) / 20.0) ; }
pwm引数はこれで計算してます。(参考ページそのまま使いました)
最初に初期化。
// servoモーター設定 ledcSetup(LEDC_CHANNEL_3, LEDC_SERVO_FREQ, LEDC_TIMER_BIT) ; // 16ビット精度で制御 ledcAttachPin(SERVO_PIN, LEDC_CHANNEL_3) ; // CH3をRC SERVOに
delay 入れて、少しずつ動かす。
for(int i = -100 ; i <= 80;i = i + 5){ int pos = i; if(pos > 70){pos = 70;} ledcWrite(LEDC_CHANNEL_3, servo_pwm_count(pos)) ; delay(125); }
値の範囲は、うちのサーボだと -100 ~ 75 ぐらいを指定すると可動範囲内に収まりました。個体差あると思います。
かなり無理やりな固定。
サーボモーターでアンテナ回転。
(テレビくん本物はアンテナ回転しないけど) pic.twitter.com/0fL88k6PE1— Nochi (@shikarunochi) 2018年10月14日
決めゼリフ「おきらくごくらく」も言わせたいです!以前から気になっていた音声合成ライブラリ「AquesTalk-ESP32」を使ってみました!
使い方は、こちらのページがくわしいです。
N.Yamazaki’s blog:「AquesTalk-ESP32 Ver.2.0」を使う
http://blog-yama.a-quest.com/?eid=970195
まだライセンスキー入手してないので「ナ行とマ行がすべてヌと発声される」制限かかったままです。
TTS.play("okirakugokuraku",50); TTS.play("hai',yo'kudekimashita",100);
発声指定はこういう感じで。
AquesTalkによる発声と、サーボによる(かなりむりやりな)ターン!#ウゴウゴルーガ #M5Stack https://t.co/gnLvbsTFfq pic.twitter.com/LofLeLFf5i
— Nochi (@shikarunochi) 2018年10月17日
シャベッタァァァ!
サーボモータ、今回は体の向きを回転させるのに使ってみます。台ごと回転させる大がかりな仕掛けになった。
ターン動作のための設置ベースは、もはや基地とか合体ロボといった様相。
回転に耐えられるように、サーボモーターをガッチリ固定できた! pic.twitter.com/8WUX8ZFMxP— Nochi (@shikarunochi) 2018年10月17日
これの応用で、仮面ライダージオウの変身アイテム「ライドウォッチ」のスイッチを押して変身してみます!
なんか…行ける気がする!#仮面ライダージオウ#M5Stack pic.twitter.com/B04kYa2dXe
— Nochi (@shikarunochi) 2018年10月20日
「なんか…行ける気がする!」
これがライドウォッチ制御装置だ! pic.twitter.com/9LP3R80UvP
— Nochi (@shikarunochi) 2018年10月20日