Module13.2 4In8out
SKU:M122
説明
MODULE 13.2 4IN8OUT は、4ch パッシブ入力/スイッチ + 8ch MOS 駆動出力
ドライブモジュールです。I2C IO チップとして STM32F030 を採用し、9-24V DC 入力をサポートし、5V への DC-DC 回路が内蔵されています。
製品の特徴
- Basic/Fire/Core2/CoreS3に対応
- STM32F030をIOチップとして採用、I2C通信、I2Cアドレスはレジスタの変更により変更可能
- 8チャネルMOSドライブ回路はVCCを共有、チャネル負荷<1A
- 4チャンネル受動入力は同じGNDを共有、アクティブ信号または>5V信号は不可
- MP1584内蔵、9〜24V -> 5V DC-DCコンバータ。
含まれるもの
- 1x モジュール 13.2 4IN8OUT
- 13x 2P ターミナル
アプリケーション
- 多チャンネル負荷駆動 (リレー, バルバ, 単相モータ, シンガルLED)
- リミットスイッチやボタンテスト
仕様
仕様 | パラメータ |
入力電圧 | 9~24V |
出力チャンネル | 8 |
入力チャンネル | 4 |
出力負荷 | 各チャンネル1A以下 |
通信インターフェイス | I2C |
I2Cアドレス | デフォルト0x45、レジスタ0xF0を変更することにより変更可能 |
製品重量 | 21.9g |
梱包重量 | 52.5g |
製品サイズ | 54*54*13mm |
梱包サイズ | 95*65*25mm |
ピンマップ
M5Core | GPIO22 | GPIO21 | 5V | GND |
4IN8OUT MODULE 13.2 | SCL | SDA | 5V | GND |
回路図
UIFlow
How to use Module 4in8out on the UIFlow 1.0 graphical programming platform and related API instructions.
Example
Arduino
#include <M5Stack.h>
#include "MODULE_4IN8OUT.h"
MODULE_4IN8OUT module;
int _I2C_dev_scan();
void setup() {
M5.begin(1,1,1,1);
while (!module.begin(&Wire, 21, 22, MODULE_4IN8OUT_ADDR)) {
Serial.println("4IN8OUT INIT ERROR");
M5.Lcd.println("4IN8OUT INIT ERROR");
_I2C_dev_scan();
delay(1000);
};
Serial.println("4IN8OUT INIT SUCCESS");
}
long interval = 0;
bool level = false;
void loop() {
for (uint8_t i = 0; i < 4; i++) {
if (module.getInput(i) != 1) {
M5.Lcd.fillRect(60 + 60 * i, 0, 25, 25, TFT_GREEN);
} else {
M5.Lcd.fillRect(60 + 60 * i, 0, 25, 25, TFT_RED);
}
M5.Lcd.drawString("IN" + String(i), 40 + 60 * i, 5);
}
M5.Lcd.drawString("4IN8OUT MODULE", 60, 80, 4);
if (millis() - interval > 1000) {
interval = millis();
level = !level;
for (uint8_t i = 0; i < 8; i++) {
module.setOutput(i, level);
if (level) {
M5.Lcd.fillRect(20 + 35 * i, 200, 25, 25, TFT_BLACK);
M5.Lcd.fillRect(20 + 35 * i, 200, 25, 25, TFT_BLUE);
} else {
M5.Lcd.fillRect(20 + 35 * i, 200, 25, 25, TFT_BLACK);
M5.Lcd.drawRect(20 + 35 * i, 200, 25, 25, TFT_BLUE);
}
M5.Lcd.drawString("OUT" + String(i), 18 + 35 * i, 180);
}
}
delay(500);
}
int _I2C_dev_scan() {
uint8_t error, address;
int nDevices;
Serial.println("[I2C_SCAN] device scanning...");
nDevices = 0;
for (address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("[I2C_SCAN]: device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
}
else if (error == 4) {
Serial.print("[I2C_SCAN]: unknow error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
Serial.print("[I2C_SCAN]:");
Serial.printf(" %d devices was found\r\n", nDevices);
return nDevices;
}
Video