Previous: 9.4.1. USART |
Up: 9.4. ソフトウェアと外付け回路の詳細 |
Next: 9.4.3. 振動モータ |
図 9?8 回路図
人間の視覚効果上、LEDはPWM点灯をさせても、暗くなったと感じにくく、結果消費電力の節約になるそうです。そこでPWM点灯時に輝度を低下させないようにするため、本来の定格電流よりも大きな電流が流れる抵抗値を選定して接続しました。だいたい定格の4倍程度になるように抵抗値を計算してみました。上記の抵抗値だと、そのまま5Vの電源に接続したときには、赤71mA、黄79mA、緑75mAの電流が流れました。その上でデューティー比を4分の1以下にできれば、消費電流の節約になったといえます。このサンプルでは5%~9%にまで落としましたが、室内での状態確認用としては十分な視認性が得られました。全部のLEDを点灯させたときに、各LEDの輝度が同程度になるように調整するとよいでしょう。ちなみに本来はこういった使い方は定格違反ですから、LEDやドライブしているバッファICが壊れない保証はどこにもありません(壊れても誰にも文句は言えません)。
prvTask_StatusLED_Control関数によるタスクは複数のLEDをそれぞれ別々の点灯パターンで点灯させるためのものです。キューprvTask_StatusLED_ControlにStatusLEDQueue_Type型変数で指令送ると、指定したLEDが一定のパターンで点滅します。
typedef struct { ? uint8_t LEDNumber; ? uint8_t LEDStatus; } StatusLEDQueue_Type; |
点灯パターンは列挙型StatusLEDStatus_Typeで指定できます。
typedef enum {STATUSLED_OFF = 0, STATUSLED_ON = 1, STATUSLED_FAST = 2, STATUSLED_SLOW = 3, STATUSLED_FLASH = 4} StatusLEDStatus_Type; |
Previous: 9.4.1. USART |
Up: 9.4. ソフトウェアと外付け回路の詳細 |
Next: 9.4.3. 振動モータ |