- 60th LED Luminous Clock ★シリアル通信モード コントロール★ ■モード起動条件: SW1をON(=GND)の状態で電源投入 (シリアルモードのみで使用する場合は、SW1をジャンパしても良いでしょう) ■プロトコル: ホスト:外部マイコン/PC等(本機をコントロールする側) ターゲット:本機  @ ホスト→ターゲット/コマンド送信 (1(コマンド選択バイト)+n(パラメータ)+1(終了バイト(=0xFF固定)) ex:DMD(ドットマトリックスモジュール)輝度設定 → [0x04,0x03,0xff] ([輝度設定コマンド,輝度パラメータ,終了バイト])  Aターゲット→ホスト/応答 コマンドに対して以下応答します。 A.正常/動作完了:0x55 B.コマンドフレーミングエラー:0xAA →コマンド長が規定と異なる場合、このメッセージを返します。 C.タイムアウト/バイトフレーミングエラー:0xEE →タイムアウトエラー(コマンド長が規格より長い場合etc..) バイトフレーミングエラー(USART:1byte長が合わない場合)、  このメッセージを返します。 ※タイムアウト値はコマンドで設定できます。(デフォルト=無効) D.アイドル応答/エラー復帰応答(Acknowledge):0xFF アイドル応答コマンド/ エラー→復旧後応答時にこのメッセージを返します。 ■トランザクション・パターン: 主なやりとりは以下の通りです。(ホスト側シーケンス)  Tコマンド送信→正常/動作完了 →@を送信→AA:0x55を受信  Uアイドル応答コマンド[0xFF]→応答 →@0xFF送信→AD:0xff受信(新規コマンド受入可能)  Vコマンド送信→ターゲット受信エラー発生時/異常終了 →@を送信→AB:0xAA or C:0xEEを受信→B(エラー復帰のため)終了バイト[0xff]を再送信→   CD:0xffを受信(新規コマンド受付可能)  ※Bのシーケンスで0xFF以外を送信した場合(コマンド長が規定より長い場合等)、全ての送信データは無視されます。 (終了バイト[0xff]を受け取った時点で復旧。) その際エラーメッセージは返しません。 ※原則として全ての送信コマンド/パラメータには、値:0xff(終了バイトと同じ)を含みません(一部コマンドにて解除あり) ■コマンド一覧: A. 0x01 60th LED 一括設定   [0x01,LED1輝度値,LED2輝度値,・・・LED60輝度値,0xff] (1+60+1 byte) 60個全てのLEDを1つのコマンドで一括設定します。 パラメータ:60Byte (LED1→LED60の順で輝度値をセット) 輝度設定値は以下の通りです(0:消灯→8:100%の順で明るくなります) 輝度0:0x00 [0000 0000](消灯) 輝度1:0x01 [0000 0001] 輝度2:0x02 [0000 0010] 輝度3:0x04 [0000 0100] 輝度4:0x08 [0000 1000] 輝度5:0x10 [0001 0000] 輝度6:0x20 [0010 0000] 輝度7:0x40 [0100 0000] 輝度8:0x80 [1000 0000](100%点灯) B.0x02 60th LED 個別設定  [0x02,LEDアドレス(LED1:0x00→LED60:0x3b(59)),輝度値,0xff] (1+2+1 byte) 1つのLEDだけを設定します。他のLEDの値は保持されます。 輝度値は上記A:と同様です。 C.0x03 DMD(ドットマトリックスモジュール)キャラクター描画 [0x03,(文字数),1文字目のASCIIコード,2文字目,3文字目・・・70文字目(MAX),0xff] (1+1+(8〜70)+1 byte) 指定した文字コードを、DMDに描画します。(最小8文字〜最大70文字) 送信する文字数を2バイト目にセット、以下ASCIIコードを指定文字数分送ります。 9文字以上を送信した場合、左にスクロールし、最後の8byteを表示して止まります D.0x04 DMD(ドットマトリックスモジュール)輝度設定 [0x04,(輝度0〜7),0xff](1+1+1 byte) DMDモジュールの輝度を設定します。 輝度0:100% 輝度1: 〜 輝度7:0%(消灯) E.0x05 DMD(ドットマトリックスモジュール)ユーザキャラクターコード設定 [0x05,(UCD番地(0x01-0x0f),DotData1,DotData2,・・・DotData7,0xff] (1+8+1 byte) ドットマトリックスモジュールのユーザ設定キャラクタのドットデータを送信します。 詳細はHDSP-211xデータシートの[User Charactor Data]項目を参照してください。 F.0x06 DMD 時計表示モード選択 [0x06,T_MODE(0-2),0xff] (1+1+1 byte) 通常時刻描画のON/OFFを設定します。 内臓の時刻表示ルーティンが使用できます。 T_MODE:0 (Default) 時刻描画OFF(コマンドBで直接DMD表示文字をコントロールする場合はこのモードで) T_MODE:1 24時間表示/秒表示あり [hh:mm.ss] T_MODE:2 12時間表示/秒表示なし [hh:mm] G.0x07 DotLED 時計表示エフェクト選択 [0x07 mode_s(0-5),0xff] (1+1+1 byte) 60個のLEDエフェクトON/OFFを設定します。内臓のLED表示パターンが使用できます。 MODE_S:0 (Default) 秒針表示エフェクトOFF MODE_S:1 Normal (1秒ごとにインクリメント) MODE_S:2 Ziwaziwa (幅を持った秒針がジワジワと移動。失敗作?) MODE_S:3 Furico (振り子時計のイメージ) MODE_S:4 Time Shock (5秒づつフラッシュ 全問正解?) MODE_S:5 Wheel (1秒づつ輝点が増加しつつ回りだす) MODE_S:6 Moon (60秒で左→右に満ち欠け) MODE_S:7 Roll (2秒ごとに1周。ただそれだけ テストモード) MODE_S:9 POR (起動時/クレジットを流すルーティン) H. 0x08 DotLED 輝度パラメータ(PWM点滅パターン)設定 [TEST COMMAND] [0x08,PWM点滅パターン(18byte),0xff] (1+18+1 byte) PWM点滅(LED ON/OFF)パターンをダイレクトに設定/変更します。 点滅パターンは18byteで構成され(LED制御は7Line×18パターン×31フレーム)、 8通り(8階調)+1(消灯)のパターンが設定できます。 フォーマット:bit7:「輝度8」の点滅パターン→bit0:「輝度0」の点滅パターン ×18byte 1:点灯/0:消灯 点滅パターンの設定例は下記の通りです。 ;--------------------------- @点滅パターンのデザイン ;点灯回数、点滅パターン,(点灯割合%),輝度設定値 ; 0:0000 0000 0000 0000 00 (0%) all0 =0000 0000 (輝度0/0で固定=消灯) ; 2:0000 0000 1000 0000 01 (11%) bit0 =0000 0001 (輝度1) ; 4:0001 0000 1000 1000 01 (22%) bit1 =0000 0010 (輝度2) ; 6:0010 0100 1001 0010 01 (33%) bit2 =0000 0100 (輝度3) ; 9:0101 0101 0101 0101 01 (50%) bit3 =0000 1000 (輝度4) ;11:1101 1011 0110 1101 10 (66%) bit4 =0001 0000 (輝度5) ;14:1110 1111 0111 0111 10 (77%) bit5 =0010 0000 (輝度6) ;16:1111 1111 0111 1111 10 (88%) bit6 =0100 0000 (輝度7) ;18:1111 1111 1111 1111 11 (100%)bit7 =1000 0000 (輝度8) A行→列変換して、18バイトのデータをパラメータとして格納(送信)。 1st byte: 1111 0000=0xF0 2nd byte: 1111 1000=0xF8 3rd byte: 1101 1010=0xDA 〜〜 18th byte:1000 1111=0x87 ;------------------------------- ※このコマンドのみ、パラメータに0xFFが含まれるのを許可しています。(テストコマンド)  →よって、コマンド長が短い場合でも、エラーが発生しないことに注意してください。 I.0x09 時刻設定 [0x09,(Hour:0x00〜0x17),(Min:0x00〜0x3B),(Sec:0x00〜0x3B),0xff] (1+3+1) byte 内部時計の時刻を設定します。 フレームカウンタのリセットは行いませんので、MAX:-1秒のゆらぎがあります。 J.0x0A タイムアウトエラー/タイマ値設定 [0x0A,TO値,0xff] (1+1+1)byte タイムアウトエラーの検出時間を設定します。 Tto(タイムアウト時間) = 32.768ms*(TO値-(0〜1)) (TO値:2〜255) Tto = ∞ (TO値:0,1) →タイムアウト検出禁止 ※タイムアウトはルーティン内でのフレーム数のカウントで安易に実装しています。 つまり、初回カウント時に最大 -1フレームのゆらぎがあります。。 →小さいTO値では、ゆらぎが大きくなるのでご注意ください。 K.0xFF アイドル応答(Acknowledge) [0xFF] (1byte) 0xFF(終了コマンド)と同一 エラー復旧/次のコマンドが受け入れ可能かどうかを確認するコマンドです。