モールスLEDを作ってみた [電子工作]
(2012.10.19)
ブログ仲間のnobchaさん(のブログはこちら)からLEDデバッグの技を教えて頂きました。それをアレンジしてモールス・コードをLED出力する関数を作ってみました。ちょっと大きいのですが、作成したコードを以下に記します。
アルファベット26文字分を作って動かしてみると、”ツー・ト・ツー・ツー(=Y)"などと意味ありげで、なかなか良い感じです。惜しむらくは親族SNS管理人がモールス信号を解さないことです。
使っているうちに、判るようにならないかな~
先ずは、BASE_PATTERNの6種と1st variationの4種から試してみよう。
BASE_PATTERN
T ー
M ーー
O ーーー
E ・
I ・・
S ・・・
1st variation
G ーー・
N ー・
U ・・ー
A ・ー
ブログ仲間のnobchaさん(のブログはこちら)からLEDデバッグの技を教えて頂きました。それをアレンジしてモールス・コードをLED出力する関数を作ってみました。ちょっと大きいのですが、作成したコードを以下に記します。
static const unsigned char morse_code[26]={0b01000010,0b10000100,0b10100100,0b10000011,0b00000001,0b00100100,0b11000011,0b00000100,0b00000010,0b01110100,0b10100011,0b01000100,0b11000010,0b10000010,0b11100011,0b01100100,0b11010100,0b01000011,0b00000011,0b10000001,0b00100011,0b00010100,0b01100011,0b10010100,0b10110100,0b11000100}; void short_on(void) { LED=1; delay_ms(100); } void short_off(void) { LED=0; delay_ms(100); } void long_on(void) { LED=1; delay_ms(300); } void long_off(void) { LED=0; delay_ms(300); } static unsigned char index; static unsigned char length; static unsigned char code; static unsigned char bit_pattern; void morse_led( unsigned char letter ) { bit_pattern = 0x80; if( ( letter >= 'A' ) && ( 'Z' >= letter ) ) { index = letter - 'A'; } else if( ( letter >= 'a' ) && ( 'z' >= letter ) ) { index = letter - 'a'; } else { index = letter & 0x0f; } code = morse_code[index] & 0xf0; length = morse_code[index] & 0x0f; while( length > 0 ) { if( code & bit_pattern ) { long_on(); } else { short_on(); } short_off(); bit_pattern>>=1; --length; } long_off(); }
アルファベット26文字分を作って動かしてみると、”ツー・ト・ツー・ツー(=Y)"などと意味ありげで、なかなか良い感じです。惜しむらくは親族SNS管理人がモールス信号を解さないことです。
使っているうちに、判るようにならないかな~
先ずは、BASE_PATTERNの6種と1st variationの4種から試してみよう。
BASE_PATTERN
T ー
M ーー
O ーーー
E ・
I ・・
S ・・・
1st variation
G ーー・
N ー・
U ・・ー
A ・ー
|
|
|
コメント 0