SSブログ

モールスLEDを作ってみた [電子工作]

(2012.10.19)
ブログ仲間の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 ・ー

にほんブログ村 IT技術ブログへ
に

ほんブログ村 ネットブログ コミュニティサイトへ
にほんブログ村 IT技術ブログ オープンソースへ


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。