音センサとサーボモータを連動させる (Arduino nano)

最近ESP32についての記事が続いていたので今回はArduino nanoを使って音を感知してサーボモータを動かしていきたいと思います。

準備するもの

ハードウェア

ハードウェア1

画像の通りに配線すれば動くと思います。
また、サーボモータ用に乾電池は4本画像で用意されていますがサーボモータの動作電圧は3.3~5.0vなので3~4本(1本1.5v)乾電池があれば動くと思います。 2本だと電圧がギリギリ足りないと思うので3本は用意しておくと良い。
* 注意:サーボモータ用に別で電源(今回は乾電池)を確保してください。Arduino nanoから給電すると誤動作します。
配線する時は必ずサーボモータのGNDとArduino nanoのGND、電源のGNDはつながるように配線してください。

ソフトウェア

#include <Arduino.h>
#include <Servo.h>
Servo servo;
void setup() {
  Serial.begin(115200);
  pinMode(0,INPUT);
  servo.attach(3);
  servo.write(0);
}

int i = 0;
void loop() {
  if(analogRead(0) >= 600){
    i += 20;
    servo.write(i);
    delay(100);
  }
  if(i == 180){
    servo.write(0);
    delay(500);
    i = 0;
  }
}

わからない方は前の記事を参考に書き込んでください。
プロジェクト作成時のボード情報の場所をArduino Nano ATmega328に設定してください。
* 注意:Arduino Nano ATmega328(New Bootloader)を選択してしまうとうまく動作しないことがあるので前述の方で設定してください。

動作確認

音を出したときに20度回転するように設定しているので少しずつ回転するように動いたら成功です。

動作確認2

もしうまく動作しない場合は音センサについている可変抵抗を回転させて調節することをお勧めします。
LEDが光ったり消えたりすると思うので無音状態で光が消えるところと点灯するところのギリギリで光が点灯し続ける場所が最適です。
環境によって回す方向が違う場合があるのでご自分で回して確かめてください。

まとめ

Arduino nanoで音センサとサーボモータを組み合わせて音を感知しそれをサーボモータで確認するものを作ってみました。 注意書きにもある通りサーボモータの電源をarduinoと音センサで共有してしまうとノイズが入ってしまうことで躓き解明に時間をかけてしまったことがありました。またこの音センサは音を感知するだけで強弱は判定できないというところを注意してください。

コメント

このブログの人気の投稿

Phaser3 + Typescriptを使ってRPGゲームの基礎を作ろう!その2

M5Stackで、においセンサー(TGS2450)を使ってみる。(LCDに表示編)

Phaser3 + Typescriptを使ってRPGゲームの基礎を作ろう!その1