I2Cセンサーの種類 |
16bit 100mA/40V |
|
主な機能 |
100mA/40Vまでシンクできる出力ポートが16個 8bitのPWM信号で輝度調整可能、ポートをまとめてグループ化し一括制御可能 |
|
I2Cデバイス名 |
PCA9622 |
|
写真
|
||
開発したデバイスの入手先 製品名 品番・型番 |
スイッチサイエンス I2C 8×8 LEDマトリックス基板(写真のLED実装基板の製品は生産終了) |
|
デバイスのData-Sheet |
||
デバイスの主な仕様
|
電源電圧 I2Cアドレス 1ポート電流電圧 I2C通信速度 全出力時規格 |
2.3V~5.5V A0~A6までの128通りをPINで設定可能 100mA/ 40Vまでシンク可能 1Mbps 1.6A/ 40V |
説明 |
一つの出力ポートで100mA/40Vまでシンク可能なオープンドレイン出力が16ch有ります。Data-Sheetでは、LED制御とかバックライト制御との記述が有りますが、16chでこの容量は、一般のP.L.C(プログラマブル・コントローラ)のトランジスタ出力モジュールに匹敵する容量が有ります。外部にトランジスタアレー等を使用せず、P.L.CとのDIOでのやり取り、小型のアクチェータとの直接接続も可能と思います。 各ポートは8bitの分解能ですがPWM出力も可能です。
複数の出力を一つのレジスタで一発変更する為の機能(輝度調整目的?)も有り、電光掲示版等での利用を想定していると思います。 また、I2Cの通信ラインにはノイズフィルタを内臓し、I2C通信も1Mbpsまでサポートしています。
出力ステートコントロールレジスタ等、1Byteを2bit毎に分割し、各出力ポートに割り当ててありますが、I2Cセンサードライバーでは各々2bit毎に個別にプロパティを準備していますので、bit位置をきにせず、プロパティセットのみで利用可能です。
通常のレジスタの読み書きは、register |
|
|
|
|
開発・テスト風景
各、列毎に輝度調整をしましたが、写真では余り解りませんね。 |
|
I2Cデバイス内部のレジスタ構成(レジスタに対する設定値、レジスタの内容等のご質問はお答えできません)
<![endif]> |
I2Cセンサー・ドライバーで準備済みのプロパティ・メソッド
プロパティ
機能名 |
機能説明 |
MODE1 |
MODE1レジスタを取得または設定します。 |
MODE2 |
MODE2レジスタを取得または設定します。 |
PWM0 |
LED0の輝度制御値を取得または設定します。 |
PWM1 |
LED1の輝度制御値を取得または設定します。 |
PWM2 |
LED2の輝度制御値を取得または設定します。 |
PWM3 |
LED3の輝度制御値を取得または設定します。 |
PWM4 |
LED4の輝度制御値を取得または設定します。 |
PWM5 |
LED5の輝度制御値を取得または設定します。 |
PWM6 |
LED6の輝度制御値を取得または設定します。 |
PWM7 |
LED7の輝度制御値を取得または設定します。 |
PWM8 |
LED8の輝度制御値を取得または設定します。 |
PWM9 |
LED9の輝度制御値を取得または設定します。 |
PWM10 |
LED10の輝度制御値を取得または設定します。 |
機能名 |
機能説明 |
PWM11 |
LED11の輝度制御値を取得または設定します。 |
PWM12 |
LED12の輝度制御値を取得または設定します。 |
PWM13 |
LED13の輝度制御値を取得または設定します。 |
PWM14 |
LED14の輝度制御値を取得または設定します。 |
PWM15 |
LED15の輝度制御値を取得または設定します。 |
GRPPWM |
グループ輝度制御レジスタを取得または設定します。 |
GRPFREQ |
グループ周波数レジスタ(点滅周期)を取得または設定します。 |
LDR0 |
LED0の出力制御を取得または設定します。 |
LDR1 |
LED1の出力制御を取得または設定します。 |
LDR2 |
LED2の出力制御を取得または設定します。 |
LDR3 |
LED3の出力制御を取得または設定します。 |
LDR4 |
LED4の出力制御を取得または設定します。 |
LDR5 |
LED5の出力制御を取得または設定します。 |
LDR6 |
LED6の出力制御を取得または設定します。 |
LDR7 |
LED7の出力制御を取得または設定します。 |
LDR8 |
LED8の出力制御を取得または設定します。 |
LDR9 |
LED9の出力制御を取得または設定します。 |
LDR10 |
LED10の出力制御を取得または設定します。 |
LDR11 |
LED11の出力制御を取得または設定します。 |
LDR12 |
LED12の出力制御を取得または設定します。 |
LDR13 |
LED13の出力制御を取得または設定します。 |
LDR14 |
LED14の出力制御を取得または設定します。 |
LDR15 |
LED15の出力制御を取得または設定します。 |
SUBADR1 |
I2C-bus |
SUBADR2 |
I2C-bus |
SUBADR3 |
I2C-bus |
ALLCALLADR |
ALLCALL |
メソッド
機能名 |
機能説明 |
Init |
I2Cバスコントローラに指定された接続設定を使って非同期的に接続します。 |
Read |
指定レジスタ読込 |
Write |
指定レジスタ書込 |
定数
機能名 |
機能説明 |
定数値 |
REG_ADDR.MODE1 |
レジスタMODE1 |
0x00 |
REG_ADDR.MODE2 |
レジスタMODE2 |
0x01 |
REG_ADDR.PWM0 |
レジスタPWM0 |
0x02 |
REG_ADDR.GRPPWM |
レジスタGRPPWM |
0x12 |
REG_ADDR.LEDOUT0 |
レジスタLEDOUT0 |
0x14 |
REG_ADDR.SUBADR1 |
レジスタSUBADR1 |
0x18 |
REG_ADDR.ALLCALLADR |
レジスタALLCALLADR |
0x1B |
I2Cセンサードライバーを使ったVBでのサンプルソース
Imports I2CLibrary Public NotInheritable Class PCA9622Page Inherits Page Private Const PCA9622_Address As Byte = &H50 Private PCA9622 As PCA9622 = New PCA9622() Public Sub New() InitializeComponent() Call Init() End Sub
Private Async Sub Init() Await PCA9622.Init(PCA9622_Address) End Sub
Private Sub btnLEDOn_Click(sender As Object, e As RoutedEventArgs) PCA9622.Read(PCA9622.REG_ADDR.MODE1) PCA9622.Read(PCA9622.REG_ADDR.MODE2) PCA9622.Read(PCA9622.REG_ADDR.PWM0) PCA9622.Read(PCA9622.REG_ADDR.LEDOUT0) PCA9622.MODE1 = &H0 PCA9622.Write(PCA9622.REG_ADDR.MODE1) PCA9622.LDR0 = &H0 PCA9622.LDR1 = &H0 PCA9622.LDR2 = &H0 PCA9622.LDR3 = &H2 PCA9622.LDR4 = &H2 PCA9622.LDR5 = &H0 PCA9622.LDR6 = &H0 PCA9622.LDR7 = &H0 PCA9622.LDR8 = &H2 PCA9622.LDR9 = &H2 PCA9622.LDR10 = &H2 PCA9622.LDR11 = &H2 PCA9622.LDR12 = &H2 PCA9622.LDR13 = &H2 PCA9622.LDR14 = &H2 PCA9622.LDR15 = &H2 PCA9622.Write(PCA9622.REG_ADDR.LEDOUT0) PCA9622.PWM0 = &H0 PCA9622.PWM1 = &H0 PCA9622.PWM2 = &H0 PCA9622.PWM3 = &HFF PCA9622.PWM4 = &HFF PCA9622.PWM5 = &H0 PCA9622.PWM6 = &H0 PCA9622.PWM7 = &H0 PCA9622.PWM8 = &H2 PCA9622.PWM9 = &H4 PCA9622.PWM10 = &H8 PCA9622.PWM11 = &H10 PCA9622.PWM12 = &H20 PCA9622.PWM13 = &H40 PCA9622.PWM14 = &H80 PCA9622.PWM15 = &HFF PCA9622.Write(PCA9622.REG_ADDR.PWM0) End Sub
Private Sub btnLEDOff_Click(sender As Object, e As RoutedEventArgs) PCA9622.LDR0 = 0 PCA9622.LDR1 = 0 PCA9622.LDR2 = 0 PCA9622.LDR3 = 0 PCA9622.LDR4 = 0 PCA9622.LDR5 = 0 PCA9622.LDR6 = 0 PCA9622.LDR7 = 0 PCA9622.LDR8 = 0 PCA9622.LDR9 = 0 PCA9622.LDR10 = 0 PCA9622.LDR11 = 0 PCA9622.LDR12 = 0 PCA9622.LDR13 = 0 PCA9622.LDR14 = 0 PCA9622.LDR15 = 0 PCA9622.Write(PCA9622.REG_ADDR.LEDOUT0) End Sub
Private Sub btnBack_Click(sender As Object, e As RoutedEventArgs) RefreshTimer.Stop() ADC121C021.close() App.rootFrame.Navigate(GetType(MenuPage)) End Sub
End Class
|