組み込み系

14.Arduinoでスイッチ入力で音を鳴らす(digitarRead)

ArduinoでdigitalReadとtoneを使って、せっかくならスイッチの入力を検知して音を鳴らす回路とプログラムを作ってみます。
今回はSerial関数を使って、状態を画面上に表示してみるテクニックも使ってみます。

全体接続のイメージ

スイッチはタクトスイッチと言って、カチっと押すと接点が接触して導通するものを使います。

そしてLoopの中でスイッチを接続したポートがLOWになったら「押された!」ということで、その時にtone命令でブ~と音をならしてみます。

回路図

スイッチの片方は①です。
①はUNOから10KΩの抵抗を使ってUNOの2番の足とつながっています。
こうしておくと、スイッチを押されていない時には常に2番には+5V(HIGH)が入力されていることになります。

 

 

スイッチのもう片方は②です。
②はUNOのGNDに接続をしています。

普段は②は+5V(HIGH)ですが、スイッチが押されると①は②とつながることでGND(LOW)となります。

プログラムを作ってみる

ブザーは11番ピン、スイッチは2番ピンに接続しています。
2番ピンを入力モードにすることで、digitalReadを使うことでポートの状態を読み取ることができます。
読み取ったpinの値を判断して、LOWであれば440Hzの音を10m秒鳴らしてみます。

void setup() {
  pinMode(2,INPUT) ;     //7を入力
  pinMode(11,OUTPUT) ;   //11をブザー
  Serial.begin(115200);  //シリアルモニターで状態表示するよ宣言
}

void loop() {
  int pin2 =digitalRead(2);        // スイッチの状態
  if(pin2==LOW) tone(11,440,10) ;  // LOWだったら(PUSHされたら)440Hzを鳴らす
  Serial.println(pin2);            // シリアルモニターで状態表示
}

状態を画面に表示できるSerial

スイッチを押したときの状態をArduinoのIDE画面に表示することができます。
setup関数の中でまずSerialを使うよ~と Serial.begin(115200);をコールします。
次に見たい場所でそのデータを画面に出力するようにSerial.printlnをコールします。

 

タイトルとURLをコピーしました