久しぶりの投稿になってしまいました。
ちょっとやりたいことがあったので、今回サーボのテストをしてみました。
この投稿以来ほったらかしにしていた、ESP8266を使うことと、サーボを二つ使うこと、そして圧電スピーカで音階を鳴らすことを目的としています。
参考 : 圧電スピーカでメロディを鳴らす
http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/Melody/Melody2.htm
参考 : NodeMCUのPIN配置
https://www.pinterest.jp/pin/263460646929874640/
サーボは5V必要のようですが、このボードには5Vがないので3.3Vに接続しています。(ご注意ください)
接続はサーボの赤が電源、黄がPIN、茶がGNDになります。(つなぎ変えているので色はかわっています。白はPIN)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#include <Servo.h> #define BEAT 300 #define SPK 4 #define SVO1 5 #define SVO2 14 Servo servo1; Servo servo2; void setup() { pinMode(SPK,OUTPUT); servo1.attach(SVO1); servo1.write(0); delay(1000); servo2.attach(SVO2); servo2.write(0); } void loop() { melody(262,BEAT); melody(294,BEAT); melody(330,BEAT); servo1.write(45); delay(1000); servo2.write(45); delay(1000) ; servo1.write(90); delay(1000); servo2.write(90); delay(1000); } void melody(int frequency, int duration) { long i ; int tones ; tones = 1000000L / (2 * frequency) ; for (i = 0; i < duration * 1000L; i += tones * 2) { digitalWrite(SPK, HIGH) ; delayMicroseconds(tones) ; digitalWrite(SPK, LOW) ; delayMicroseconds(tones) ; } } |
ドレミと音を鳴らした後、サーボ1,2が交互に45度、90度の位置に回転します。
やっぱりサーボは面白いです。
あと、書き込み時に以下のエラーがよくでます。
espcomm_upload_mem failed
このサイトを参考に解決しましたが、リセットの方法がよくわからなかったので、FLASHとRSTの同時押しをしています。しかしうまくいくときといかないときがあります。プログラムが動いているとだめみたいですが、音はデバッグでも役に立ちますね。