Actions

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 Level Shift x4 tester");
  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;
  }
}



Linki