​PCA9622DR I2C 16ch LEDドライバ の設定を覚えるのは3箇所

LINEで送る
[`evernote` not found]

今日も仕事終わってからやきとり屋で作業してます。
今宵は PCA9622DRの理解を深めるをテーマにやってます。

スイッチサイエンスさんの
LEDドライバ PCA9622DR の使い方
少し理解ができてきて余裕ができたのか
ようやく書いてることが理解できました
サンプルプログラムの上から順に
覚えるべきは3箇所をまとめます。

調光用デューティー比の設定 

PWMを使った明るさを調整する設定で
各LED毎に設定できます。
0x00〜0xFFまでHEX(16進数)入力
254段階の明るさが調整できます。

// 調光用デューティー比の設定
    ledPWM[0] = 0x10;
    ledPWM[1] = 0x04;
    ledPWM[2] = 0x02;
    ledPWM[3] = 0x01;

    ledPWM[4] = 0x00;
    ledPWM[5] = 0x01;
    ledPWM[6] = 0x04;
    ledPWM[7] = 0x10;

    ledPWM[8] = 0x10;
    ledPWM[9] = 0x30;
    ledPWM[10] = 0x80;
    ledPWM[11] = 0xD0;

    ledPWM[12] = 0xFF;
    ledPWM[13] = 0x70;
    ledPWM[14] = 0x30;
    ledPWM[15] = 0x10;
    datasend(PCA9622DR_ADDR, PWM0 | AI_ALLEN,ledPWM,16);

※サンプルプログラムではLED0から3の設定が省かれてます。

全体点滅の設定 

点滅の幅と時間の設定ができます

// 全体点滅の設定
    int grp_pwm = 0x80; // 5:5
    datasend(PCA9622DR_ADDR, GRPPWM,&grp_pwm,1);

    int grp_freq = 0x2F; // (0x2F+1)/24 秒周期 = 2秒周期
    datasend(PCA9622DR_ADDR, GRPFREQ,&grp_freq,1);

・変数grp_pwmはデューティー比の設定
0x00〜0xFFまでHEX(16進数)入力
254段階の幅を調整できます。

・変数grp_freqは点灯周期の設定
0x00〜0xFFまでHEX(16進数)入力
41msから10.73sの周期が設定できます。

LED出力設定 

各LEDの点灯の設定をします

 // 
    ledOut[0] = B01010101;  // LEDの個別調光や全体の点滅(PWM)は影響されない
    ledOut[1] = B10101010;  // LEDは個別調光に影響される
    ledOut[2] = B10101010;
    ledOut[3] = B11111111;  // LEDは個別調光と全体の点滅(PWM)に影響される
    datasend(PCA9622DR_ADDR,LEDOUT0 | AI_ALLEN,ledOut,4);

・各LED2ビットを使って点灯設定します
00  =消灯
01  =点灯
10 =PWM調光
11 =PWM調光 + 全体点滅

・一つの配列変数で4つのLEDを制御します。
ledOut[0] =LED0〜3の設定を行います
ledOut[1] =LED4〜7の設定を行います
ledOut[2] =LED8〜11の設定を行います
ledOut[3] =LED12〜15の設定を行います
16個を制御するため4つの配列変数が必要となります。

スイッチサイエンスさんと同じ内容ですが
少し言い回しを変えて書いてみました。

lirevo の紹介

ものづくりの末端で働いてます。 理不尽なこと無理難題の要求、数々あります。 その要求に答えるため多くのチャレンジをしてます。 そこでの気付きを書いていきます。
カテゴリー: アルディーノ, ものづくり タグ: , , , パーマリンク

コメントを残す