5
Arduinoはどのようにして特定の(つまり56 kHz)キャリア周波数を出力できますか?
私は、2点間でデータをワイヤレスで送信するための自由空間光学プロジェクトに取り組んでいます。これを達成するために、送信機には56 kHzの搬送周波数でパルスするArduino Unoに接続されたIR LEDを使用し、受信機には56 kHzのIR検出器モジュールを持つ2番目のArduinoを使用しています。 キャリア周波数を作成するために、pin highコマンドとpin lowコマンドの間にdelayMicroseconds()を使用してみました。この種の方法は機能しますが、周波数は常に同じであるとは限らず、信号をパルスするための追加の遅延(つまり、関数を呼び出してデクリメントするのに必要な時間)によって、信号が変化する可能性があります。 ATmega328のデータシートを読むと、チップのタイマーを使用してより正確なパルスを設定する方法があるようです。それは可能ですか?可能であれば、タイマーを使用して56 kHzパルスをどのように作成しますか?