音量をダイレクトにサーボの角度へ
#include <Servo.h> Servo myservo;
//センサーから読み取った値を格納するための変数。0〜1023までの整数が入ってくるから int型で宣言 int val1 = 0;
void setup() { //シリアルモニタで値の変化を確認するため、Serial.beginでシリアル通信つかうよ宣言 //115200は通信速度の設定 Serial.begin(115200); //Arduinoの表面についてるLEDが13番ピンに接続されていて、それをアウトプットで使うよという宣言 pinMode(13,OUTPUT); myservo.attach(3); // 3番のピンをサーボに使う }
void loop() { //arduinoのA0番ピンの値を読んで、val1に格納するよという意味 val1 = analogRead(A0); //マイクセンサーは、2.5vを中心に波の形の変化をする。 //で、analogRead()は0〜1023(0v〜5vの電圧変化)なので、真ん中の512を引いて、 //その値の差=音量を取得する。普通に引き算するだけだと、マイナスの負の値も //出てくるので、abs()で絶対値に変えて、val1に再び格納しなおす。 val1 = abs(512-val1); //
int s_angle = map(val1,0,300,10,180); //センサーの値を、そのままサーボの角度に変換する myservo.write(s_angle);
Serial.println(val1);
//analogRead()を使う場合、少しdelay()で待ち時間を設けると値が安定する。 delay(10); }
















