見よう見まねのラズベリーパイ (10) ~スイッチ入力~

スイッチからの入力で音を出すプログラムを試して見ました。
プログラムは圧電スピーカーから音を出すソースコードを流用してスイッチを押すと音を出すように変更します。
Rapberry Pi の配線は、配線がすっきりするように使用するGPIO端子を変更しました。
3.スピーカとスイッチの回路 DSCN0977
ブレッドボードに乗る部品は圧電スピーカーとスイッチだけです。
スイッチを接続するGPIO15端子は内部的にプルアップして使用します。

 

 

 

 
wiringPi で新たに使う関数について、Wiring Pi のウェブサイトで調べます。

pinMode(int pin, int mode);
“int pin” にはpin 番号を入れます。以下のプログラムではスイッチを接続するGPIO15ピンを#define で”SW_PORT” としていますので、int pin は”SW_PORT”とします。
“int mode”にはピンの用途を指定します。
“INPUT”、”OUTPUT”、”PWM_OUTPUT”、”GPIO_CLOCK”等があるようですが、スイッチ入力に使うので、”INPUT”とします。

pullUpDnControl(int pin, int pud);
“int pin” にはpinMode と同様にpin 番号を入れます。
“int pud” には”PUD_OFF”(プルアップもプルダウンもしない)、”PUD_DOWN”(プルダウン)、 “PUD_UP”(プルアップ)のいずれかを指定します。

digitalRead(int pin);
“int pin” にはpinMode と同様にpin 番号を入れます。
指定したピンの状態を読んでHIGH(1) またはLOW(0) の値を返します。

以下のように、スイッチを押している間は高音と低音を交互に繰り返すプログラムを作成しました。
buz_sw
コンパイルして実行してみます。

pi@raspberrypi:~/clang $ cc -o 1-buz_sw 1-buz_sw.c -lwiringPi
pi@raspberrypi:~/clang $ sudo ./1-buz_sw

スイッチを押している間、高音と低音を繰り返します。チョン押しすると高音と低音を1回ずつ発信して止まります。
プログラム自体に終了機能を付けませんでしたので、Ctrl+c で終了します。
終了しないと延々とスイッチの状態を監視するプログラムが走り続けることになります。

 

カテゴリー: Raspberry Pi タグ: , , , , , , , , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です