このプロジェクトでは、ArduinoUnoを使用してトーンジェネレータを開発します。UNOと連動するボタンがあり、それぞれが異なる強度のトーンを生成します。UNOによって生成されるトーンの周波数は、すべての内部で同じです。押すたびに変化する音の強さです。これは、ArduinoUnoでピアノを作る最も簡単な方法の1つです。このピアノ回路もチェックしてください。
トーンは最大20まで上げることができます。これにより、最高のトーンバリエーションとはるかにスムーズな変化が得られます。トーンの強さはPWM(パルス幅変調)によって変更されます。PWMの例を下のグラフに示します。
PWMでは、信号の周波数または信号の期間(Ton + Toff)は常に一定です。ターンオン時間とターンオフ時間の比率のみが変化します。たとえば、上の図の2番目のグラフでは、ターンオン時間は80%であり、ターンオフ時間は完全な期間の20%です。
3番目のグラフでは、ターンオン時間は50%であり、ターンオフ時間は完全な期間の50%です。したがって、最初のケースではデューティー比が80%であり、2番目のケースではデューティー比が20%です。
このデューティ比の変化により、Vrms(電圧の二乗平均平方根値)が変化します。この電圧がブザーに与えられると、デューティ比が変化するたびに異なるノイズが発生します。
ボタンごとに異なるデューティ比のPWM信号を提供するようにUNOをプログラムします。そのため、ボタンを押すたびに異なるトーンを生成するトーンジェネレータが手元にあります。
必要なコンポーネント
ハードウェア: Arduino Uno、電源(5v)、1000 uFコンデンサ、100 nFコンデンサ、ブザー、ボタン(8個)。
ソフトウェア: AURDINOナイトリーまたはAtmelスタジオ6.2
回路図と動作説明
音源の回路を下図に示します。
供給電圧からのノイズを除去するために、図に示すようにコンデンサが端子間に配置されます。
Arduino UnoのPWMは、PCBボード上の「〜」で表される任意のピンで実現できます。UNOには6つのPWMチャネルがあります。ただし、PINSはボタンインターフェイスに優先されるため、PINS 0〜7で確立されたPWMピンを使用することはできません。
PINS 0〜7はマイクロコントローラのポートを表すため、入力としてPIN 0〜7を選択する理由があります。したがって、後者の場合、PORTDの完全なBYTEを取得できます。
ここで、異なるデューティ比PWMを取得するために、次のコマンドを使用します。
AnalogWrite(9、VALUE); |
上記の条件から、対応するピンでPWM信号を直接取得できます。括弧内の最初のパラメータは、PWM信号のピン番号を選択するためのものです。2番目のパラメータはデューティ比を書き込むためのものです。
ArduinoUnoのPWM値は0から255まで変更できます。「0」を最低から「255」を最高にします。デューティ比として255を使用すると、PIN9で5Vが得られます。デューティ比が125と指定されている場合、PIN9で2.5Vが得られます。UNOのPORTDに接続されている8つのボタン間で0〜250のデューティ比を分割します。ここでは、ボタンごとに25の増分を選択しますが、それはあなたの選択です。
これにより、ボタンごとにデューティ比が変化するPWM信号が得られます。これはブザーに与えられ、トーンジェネレーターがあります。この Arduinoベースのトーンジェネレータの動作 は、以下のCコードで段階的に説明されています。