セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-05-17 現在

<PAL_NOTICE>

通知パル用
    通知パル NOTICE PAL のボードビヘイビアです。

    共通定義に加えボード上のセンサーを取り扱えるようになっています。

    • LEDドライバ PCA9632
    • 加速度センサー MC3630
    void setup() {
      auto&& brd = the_twelite.board.use<PAL_NOTICE>();
    }

    メンバーオブジェクト

    sns_PCA9632

    PCA9632デバイスのオブジェクトです。ボード定義ではWireの初期化、デバイスの初期化を実施します。原則として後述のPCA9632操作メソッドを用いて制御します。

    sns_MC3630

    MC3630センサーのオブジェクトです。ボード定義ではSPIの初期化、MC3630デバイスの初期化、MC3630の割り込み処理などを行っています。諸処理はsns_MC3630定義の手続きを用います。

    PCA9632 定義

    static const uint8_t LED_OFF = SnsPCA9632::LED_OFF;
    static const uint8_t LED_ON = SnsPCA9632::LED_PWM;
    static const uint8_t LED_BLINK = SnsPCA9632::LED_BLINK;
    static const uint8_t LED_NOP = SnsPCA9632::LED_NOP;
    
    static const uint8_t LED_R = SnsPCA9632::LED1;
    static const uint8_t LED_G = SnsPCA9632::LED2;
    static const uint8_t LED_B = SnsPCA9632::LED3;
    static const uint8_t LED_W = SnsPCA9632::LED4;
    
    static const uint8_t LED_REG_MAX_PWM = 127;
    static const uint8_t LED_REG_BOOST_PWM = 255;

    点灯状態

    定義意味
    PAL_NOTICE::LED_OFF消灯
    PAL_NOTICE::LED_ON点灯(PWM照度制御)
    PAL_NOTICE::LED_BLINK点滅
    PAL_NOTICE::LED_NOP変更しない

    LED識別子

    定義意味
    PAL_NOTICE::LED_RLED赤
    PAL_NOTICE::LED_GLED緑
    PAL_NOTICE::LED_BLED青
    PAL_NOTICE::LED_WLED白

    レジスタ設定定義

    定義意味
    PAL_NOTICE::LED_REG_MAX_PWM標準照度のPMWレジスタ設定値(全灯の1/2を標準とする)
    PAL_NOTICE::LED_REG_BOOST_PWMブースト時のPWMレジスタ設定値

    PCA9632 操作メソッド

    マスタースイッチ

    void set_led_master_sw_on() { digitalWrite(PIN_SNS_EN, LOW); }
    void set_led_master_sw_off() { digitalWrite(PIN_SNS_EN, HIGH); }

    NOTICE PAL では、PCA9632の出力後段にFETスイッチを設けています。このスイッチをONにしない限りLEDは点灯しません。

    点灯状態変更

    void set_led_r_blink()
    void set_led_r_on()
    void set_led_r_off()
    void set_led_g_on()
    void set_led_g_blink()
    void set_led_g_off()
    void set_led_b_on()
    void set_led_b_blink()
    void set_led_b_off()
    void set_led_w_on()
    void set_led_w_blink()
    void set_led_w_off()

    個別のLEDを消灯、点灯、点滅に設定します。

    void set_leds(uint8_t r, uint8_t g, uint8_t b, uint8_t w)
    void set_leds_off()

    set_leds()は全てのLEDの点灯状態を変更します。パラメータは点灯状態PAL_NOTICE::LED_OFF PAL_NOTICE::LED_ON PAL_NOTICE::LED_BLINK PAL_NOTICE::LED_NOP のいずれかを指定します。

    点灯照度制御

    void set_led_brightness_r_reg(uint8_t duty)
    void set_led_brightness_g_reg(uint8_t duty)
    void set_led_brightness_b_reg(uint8_t duty)
    void set_led_brightness_w_reg(uint8_t duty)
    void set_leds_brightness_reg(uint8_t r, uint8_t g, uint8_t b, uint8_t w)
    
    void set_led_brightness_r1000(uint16_t duty, bool boost = false)
    void set_led_brightness_g1000(uint16_t duty, bool boost = false)
    void set_led_brightness_b1000(uint16_t duty, bool boost = false)
    void set_led_brightness_w1000(uint16_t duty, bool boost = false)
    void set_leds_brightness1000(
        uint16_t r, uint16_t g, uint16_t b, uint16_t w, bool boost = false)

    PWMのデューティ比(LEDの点灯明るさ)を指定します。

    set_led_brightness_?_reg()set_leds_brightness_reg()はレジスタ値を直接指定します。0..255を指定し点灯は比duty/256となります。

    set_led_brightness_?1000()set_leds_brightness1000()は、デューティ比を0..1000で指定します。0は消灯相当で値が大きくなるほど明るく(点灯区間が長くなる)なります。boostfalseにすると1000を指定したときのレジスタ値が127となります。trueでは255となります。

    点滅制御

    void set_blink_cycle_ms(uint16_t x)
    void set_blink_duty1000(uint16_t x)

    PAL_NOTICE::LED_BLINK を指定したLEDは、指定した周期・点灯期間比で点滅します。

    • 個別に点滅パターンを指定することは出来ません。
    • 上記の点灯照度設定で指定したPWMデューティ比で点灯するため、明るさの制御も可能です。

    set_blink_cycle_ms()xで指定した期間[ms]を周期として点滅します。

    set_blink_duty1000()xを0..1000で指定し周期*x/1000を点灯期間として点滅します。

    テスト点灯

    void test_led()

    ごく短い間4つのLEDを点灯します。点灯後はマスタースイッチがON(set_led_master_sw_on())になります。