M
M
MWX Library
検索…
PCA9632 - LEDドライバ
通知パル (NOTICE PAL) に使用されている LED ドライバです。
通知PAL上での制御はボード(BRD) PAL_NOTICEより行います。

処理の流れ

  1. 1.
    Wire.begin(): バスの初期化
  2. 2.
    .setup(): クラスオブジェクトの初期化
  3. 3.
    .reset(): ドライバの初期化
  4. 4.
    各種手続き

PCA9632について

4chのLEDドライバです。
  • 各chは消灯・全点灯・PWM点灯・点滅の4つの状態を指定できる
  • 各chで独立して照度制御(PWM)できる
  • 点滅指定したchはすべて同じ点滅パターンとなる
  • 点滅時はPWMによる各ch個別の照度制御ができる

動作に必要な手続き

Wireバス

setup()メソッド呼び出し前にWire.begin()によりWireが動作状態にしておきます。

スリープ復帰時の手続き

スリープ直前もWireバスが動作状態にしておきます(スリープ復帰後自動でWireを回復します)。

コード例

1
#include <TWELITE>
2
#include <SNS_PCA9632>
3
4
SNS_PCA9632 pca;
Copied!
#include <SNS_PCA9632>SNS_PCA9632クラスオブジェクトの宣言が必要です。

初期化&リセット

1
void setup() {
2
Wire.begin();
3
pca.setup();
4
pca.reset();
5
}
Copied!

点灯

1
...
2
​ pca.set_led_duty_all(
3
127,
4
127,
5
127,
6
127
7
);
8
9
pca.set_led_status(
10
SNS_PCA9632::LED_PWM,
11
SNS_PCA9632::LED_NOP,
12
SNS_PCA9632::LED_PWM,
13
SNS_PCA9632::LED_NOP);
Copied!
上記の例ではLED1,3をPWM制御により点灯します。
点灯時はドライバが消費する電流値に気を付けてください。

メソッド

コンストラクタ, setup()

1
SnsPCA9632(uint8_t i2c_addr = DEFAULT_I2C_ADDRESS)
2
void setup(uint8_t i2c_addr = DEFAULT_I2C_ADDRESS)
Copied!
コンストラクタではi2c_addrを指定します。
グローバル宣言でクラスオブジェクトを定義した場合、コンストラクタが呼びだされませんので、setup()を呼び出すようにしてください。

reset()

1
bool reset()
Copied!
デバイスを初期化します。 レジスタアドレス 0x0 から順に {0x81, 0x35, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x0B, 0x00} を書き込みます。

set_mode2()

1
bool set_mode2(uint8_t u8var = 0x35)
Copied!
MODE2レジスタに値を書き込みます。

set_power_mode()

1
bool set_power_mode(bool b_pow_on)
Copied!
b_pow_ontrueにすると通常運用、falseにするとスリープします。
1
bool set_blink_cycle(uint8_t u8var)
2
bool set_blink_cycle_ms(uint16_t u16ms)
Copied!
点滅(グループPWM)周期を決めます。
u8varを指定すると周期は(u8var+1)/24[秒]となります。
u16msは周期を[ms]で指定します。
1
bool set_blink_duty(uint8_t u8duty);
Copied!
点滅(グループPWM)のデューティ比を決めます。点灯期間はu8duty/256となり、0は消灯相当、255は全灯相当になります。

set_led_duty()

1
bool set_led_duty(uint8_t port, uint8_t duty)
Copied!
明るさ(PMW制御のデューティ比)を指定します。
portは対象のLED(SNS_PCA9632::LED1..4)を指定します。
dutyは0..255を指定し、比率duty/256で点灯します。

set_led_duty_all()

1
bool set_led_duty_all(uint8_t p1, uint8_t p2, uint8_t p3, uint8_t p4)
Copied!
全てのLEDに対して明るさ(PMW制御のデューティ比)を指定します。
p1,p2,p3,p4はLED1..4のデューティで0..255を指定します。比率duty/256で点灯します。

set_led_status()

1
bool set_led_status(uint8_t u8led1, uint8_t u8led2, uint8_t u8led3, uint8_t u8led4)
Copied!
全てのLEDの点灯状態を変更します。
u8led1..4は順にLED1..4の状態を指定します。
指定できる状態は、以下の通りです。
内容
SNS_PCA9632::LED_OFF
消灯
SNS_PCA9632::LED_ON
全灯
SNS_PCA9632::LED_PWM
照度制御(PWM)
SNS_PCA9632::LED_BLINK
点滅制御(グループPWM)
SNS_PCA9632::LED_NOP
状態を変更しない

probe()

1
bool probe()
Copied!
I2Cバス上にデバイスが存在すればtrueを返します。

show_registers()

1
void show_registers()
Copied!
レジスタ(0x0-0x8)の値を表示します。
最終更新 1yr ago