KAmod I2C-IOexp16 (PL): Difference between revisions
From Kamamilabs.com - Wiki
Line 44: | Line 44: | ||
===== Program testowy ===== | ===== Program testowy ===== | ||
Program testowy został napisany w środowisku Arduino dla płytki [https://kamami.pl/esp32/1191671-kamod-esp32-powrs485-plytka-ewaluacyjna-z-modulem-wi-fi-typu-esp32-wroom-i-interfejsem-rs485-5906623488070.html KAmodESP32 POW RS485]. Moduł KAmod I2C-IOexp16 został podłączony poprzez interfejs I2C. | Program testowy został napisany w środowisku Arduino dla płytki [https://kamami.pl/esp32/1191671-kamod-esp32-powrs485-plytka-ewaluacyjna-z-modulem-wi-fi-typu-esp32-wroom-i-interfejsem-rs485-5906623488070.html KAmodESP32 POW RS485]. Moduł KAmod I2C-IOexp16 został podłączony poprzez interfejs I2C. | ||
<br><br> | |||
<syntaxhighlight lang="arduino" line> | <syntaxhighlight lang="arduino" line> | ||
#include <Wire.h> | #include <Wire.h> | ||
#include <Adafruit_MCP23X17.h> | #include <Adafruit_MCP23X17.h> | ||
//LED | //LED | ||
#define LED_PIN 2 | #define LED_PIN 2 | ||
#define MY_DELAY 2000 | #define MY_DELAY 2000 | ||
#define TEST_LED_ON 1 | #define TEST_LED_ON 1 | ||
#define TEST_LED_OFF 0 | #define TEST_LED_OFF 0 | ||
//I2C | //I2C | ||
#define I2C_SDA 33 | #define I2C_SDA 33 | ||
#define I2C_SCL 32 | #define I2C_SCL 32 | ||
#define I2C_FREQ 100000 | #define I2C_FREQ 100000 | ||
#define MCP23017_ARD 0x20 | #define MCP23017_ARD 0x20 | ||
TwoWire I2Cbus = TwoWire(0); | TwoWire I2Cbus = TwoWire(0); | ||
Adafruit_MCP23X17 MCPIO; | Adafruit_MCP23X17 MCPIO; | ||
int i; | int i; | ||
//----------------------------------------------------------------- | //----------------------------------------------------------------- | ||
void setup() { | void setup() { | ||
Serial.begin(115200); | Serial.begin(115200); | ||
Serial.println(); | Serial.println(); | ||
Serial.println("Hello. KAmod | Serial.println("Hello. KAmod IOexp16 test"); | ||
pinMode(LED_PIN, OUTPUT); | |||
digitalWrite(LED_PIN, HIGH); | pinMode(LED_PIN, OUTPUT); | ||
delay(500); | digitalWrite(LED_PIN, HIGH); | ||
while(!I2Cbus.begin(I2C_SDA, I2C_SCL, I2C_FREQ)){ | |||
Serial.println("I2C init failed..."); | delay(500); | ||
delay(500); | while(!I2Cbus.begin(I2C_SDA, I2C_SCL, I2C_FREQ)){ | ||
} | Serial.println("I2C init failed..."); | ||
while (!MCPIO.begin_I2C(MCP23017_ARD, &I2Cbus)) { | delay(500); | ||
Serial.println("MCP init failed..."); | } | ||
delay(500); | while (!MCPIO.begin_I2C(MCP23017_ARD, &I2Cbus)) { | ||
} | Serial.println("MCP init failed..."); | ||
Serial.println("I2C init OK"); | delay(500); | ||
delay(100); | } | ||
MCPIO.pinMode(TEST_LED, OUTPUT); | |||
Serial.println("I2C init OK"); | |||
delay(100); | |||
MCPIO.pinMode(TEST_LED, OUTPUT); | |||
} | } | ||
//----------------------------------------------------------------- | //----------------------------------------------------------------- | ||
void loop() { | void loop() { | ||
if (i & 1){ | if (i & 1){ | ||
digitalWrite(LED_PIN, TEST_LED_ON); | digitalWrite(LED_PIN, TEST_LED_ON); | ||
} else { | } else { | ||
digitalWrite(LED_PIN, TEST_LED_OFF); | digitalWrite(LED_PIN, TEST_LED_OFF); | ||
} | } | ||
MCPIO.pinMode(i, OUTPUT); | |||
MCPIO.digitalWrite(i, TEST_LED_ON); | MCPIO.pinMode(i, OUTPUT); | ||
delay(100); | MCPIO.digitalWrite(i, TEST_LED_ON); | ||
MCPIO.pinMode(i, OUTPUT); | delay(100); | ||
MCPIO.digitalWrite(i, TEST_LED_OFF); | MCPIO.pinMode(i, OUTPUT); | ||
delay(100); | MCPIO.digitalWrite(i, TEST_LED_OFF); | ||
i++; | delay(100); | ||
if (i >= 16){ | |||
i = 0; | i++; | ||
} | if (i >= 16){ | ||
i = 0; | |||
} | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 12:07, 3 April 2025

Opis
KAmod I2C-IOexp16 - Expander 16 cyfrowych linii I/O z układem MCP23017
Moduł KAmod I2C-IOexp16 zawiera 16 linii cyfrowych, które mogą działać jako wejścia lub wyjścia. Sterowanie odbywa się poprzez magistralę I2C.

Podstawowe cechy i parametry
- 16 linii które mogą działać jako wejścia lub wyjścia, o maksymalnym prądzie 20 mA
- Zawiera expander typu MCP23017
- Sterowanie poprzez interfejs I2C o taktowaniu max 1 MHz
- 3 linie adresowe umożliwiają dołączenie 8 modułów do jednej magistrali I2C
- Wyjście przerwania, które może być przypisane do linii portu A
- Zasilanie 2...5 V
Wyposażenie standardowe
Kod | Opis |
---|---|
KAmod I2C-IOexp16 | Zmontowany i uruchomiony moduł |
Schemat elektryczny

Rozmieszczenie linii I/O
Sygnały sterujące
Zasilanie
Wymiary
Program testowy
Program testowy został napisany w środowisku Arduino dla płytki KAmodESP32 POW RS485. Moduł KAmod I2C-IOexp16 został podłączony poprzez interfejs I2C.
#include <Wire.h>
#include <Adafruit_MCP23X17.h>
//LED
#define LED_PIN 2
#define MY_DELAY 2000
#define TEST_LED_ON 1
#define TEST_LED_OFF 0
//I2C
#define I2C_SDA 33
#define I2C_SCL 32
#define I2C_FREQ 100000
#define MCP23017_ARD 0x20
TwoWire I2Cbus = TwoWire(0);
Adafruit_MCP23X17 MCPIO;
int i;
//-----------------------------------------------------------------
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Hello. KAmod IOexp16 test");
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
delay(500);
while(!I2Cbus.begin(I2C_SDA, I2C_SCL, I2C_FREQ)){
Serial.println("I2C init failed...");
delay(500);
}
while (!MCPIO.begin_I2C(MCP23017_ARD, &I2Cbus)) {
Serial.println("MCP init failed...");
delay(500);
}
Serial.println("I2C init OK");
delay(100);
MCPIO.pinMode(TEST_LED, OUTPUT);
}
//-----------------------------------------------------------------
void loop() {
if (i & 1){
digitalWrite(LED_PIN, TEST_LED_ON);
} else {
digitalWrite(LED_PIN, TEST_LED_OFF);
}
MCPIO.pinMode(i, OUTPUT);
MCPIO.digitalWrite(i, TEST_LED_ON);
delay(100);
MCPIO.pinMode(i, OUTPUT);
MCPIO.digitalWrite(i, TEST_LED_OFF);
delay(100);
i++;
if (i >= 16){
i = 0;
}
}