LEDの次はスピーカーから音を出してみます。
以下は Wiring Pi サイトで紹介されている Software Tone Library の説明要約です。
[ Software Tone Library ]
1. WireringPi にはRaspberry Pi の任意のGPIO にソフトウェアで単純な矩形波を出力することのできる ハンドラを含んでいます。
2. これにはいくつかの制限があります。
(1) cpuの使用率を低く維持するために最小のパルス幅は100μsです。その結果、最大周波数は 1/0.0002 = 5000Hz です。
(2) ルーチーンプログラム中で実行する場合、より高い優先順のプログラムやリアルタイム処理などにより、周波数の精度は影響を受けることに注意してください。
3. 以上の制限はあるものの、ハイインピーダンススピーカー、圧電発声器などを使う事で単純な信号の発生が可能です。
SoftTone を使用する為にSoftTone のヘッダーファイルをインクルードします。
#include <wiringPi.h> #include <softTone.h> |
SoftTone の機能は次の2つです。
softToneCreate (int pin);
Softwere Tone を使用するピンを決めます。
softToneWrite (int pin, int freq);
出力するピンと信号の周波数を指定して出力を開始します。
出力は次の命令が来るまで継続します。
出力を停止するには周波数に0を指定します。
配線はLED点滅回路の抵抗とLEDを圧電スピーカに置き換えただけのものです。
使用するGPIOはGPIO4 で変わりません。
GPIO端子の出力はハイインピーダンスで受けてやる必要があります。通常の8Ωや6Ωのインピーダンスのスピーカーを接続しても音は出ないどころか、GPIO端子の設計規格では出力電流16mAのようですので、過電流になり、破損の危険があります。
高い音を1KHz、低い音を500Hzとして交互に10回繰り返します。
LED 点滅と同様にコンパイルします。
pi@raspberrypi:~/clang $ cc -o 1-buz 1-buz.c -lwiringPi |
sudoで実行します。
pi@raspberrypi:~/clang $ ./1-buz |
圧電スピーカーからは雑音混じりのような高低2種類の音が10回繰り返されます。