PWMの応用例として、モールス符号練習機を作ってみます。
RA0にKEY(電鍵)をつけ、KEY downの時にPWM信号(800Hz)をRA2(P1A)に出力し、接続した圧電スピーカーから音を出します。音と同時にモニター用のLEDを点灯させます。電源は電池(3V)とします。
MCCで各ピンの入出力を設定します。
RA0は入力とし、WPU(ウィークプルアップ)します。、RA2は出力(PWM用P1A)、RA4も出力(LED用)とします。
PWM関係のMCC設定は、前の記事と同じです。
プログラムです。
PWM信号をスタートさせるには、TMR2_StartTimer()を
ストップさせるには、TMR2_StopTimer()を使います。
------------------------------------------------------------------------------
/*
* PIC12F1822 Morse Trainer
* 2021.05.22
* JH7UBC Keiji Hata
*/
#include "mcc_generated_files/mcc.h"
#define LED LATA4
void main()
{
SYSTEM_Initialize(); // initialize the device
LED = 0;
TMR2_StopTimer();
unsigned char val = 1;
unsigned char old_val =0;
while (1)
{
val = RA0;
if(val != old_val){
if(val == 0){
LED = 1;
TMR2_StartTimer();
}else{
LED = 0;
TMR2_StopTimer();
}
old_val = val;
__delay_ms(10);
}
}
}
* PIC12F1822 Morse Trainer
* 2021.05.22
* JH7UBC Keiji Hata
*/
#include "mcc_generated_files/mcc.h"
#define LED LATA4
void main()
{
SYSTEM_Initialize(); // initialize the device
LED = 0;
TMR2_StopTimer();
unsigned char val = 1;
unsigned char old_val =0;
while (1)
{
val = RA0;
if(val != old_val){
if(val == 0){
LED = 1;
TMR2_StartTimer();
}else{
LED = 0;
TMR2_StopTimer();
}
old_val = val;
__delay_ms(10);
}
}
}
---------------------------------------------------------------------------
ブレッドボードです。
KEYの代わりにタクトスイッチがつけてあります。
タクトスイッチを押すとLEDが点灯し、800Hzの音が圧電スピーカーから出ます。圧電スピーカーの音はあまりよくありませんが、モールス符号の練習用に使えると思います。
PWM信号にローパスフィルタをつけ、アンプとスピーカーをつければ、もっと良い音になると思います。
※コメント投稿者のブログIDはブログ作成者のみに通知されます