Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 9,549
» Latest member: s8vntooday
» Forum threads: 4,183
» Forum posts: 20,805

Full Statistics

Online Users
There are currently 17 online users.
» 0 Member(s) | 10 Guest(s)
Amazonbot, Baidu, Yandex, bot

Latest Threads
CT Clamp Compatibility
Forum: KC868-M16 / M1 / MB / M30
Last Post: admin
1 hour ago
» Replies: 10
» Views: 1,623
KinCony F8 + ESPHome: Una...
Forum: F8
Last Post: admin
08-08-2026, 11:51 PM
» Replies: 6
» Views: 67
How to get started
Forum: KC868-A16
Last Post: admin
08-07-2026, 11:42 PM
» Replies: 39
» Views: 9,615
Questions on the B4M
Forum: B4M
Last Post: admin
08-07-2026, 11:19 PM
» Replies: 3
» Views: 193
cannot see KC868-A6 in ro...
Forum: "KCS" v2 firmware system
Last Post: admin
08-07-2026, 09:59 AM
» Replies: 7
» Views: 267
CAN-BUS Transceiver
Forum: T16M
Last Post: admin
08-07-2026, 09:57 AM
» Replies: 1
» Views: 8
N60 configure yaml for ES...
Forum: N60
Last Post: chuyskywalker
08-06-2026, 07:18 AM
» Replies: 5
» Views: 1,774
KC868-A16
Forum: "KCS" v2 firmware system
Last Post: 5310h
08-05-2026, 09:40 PM
» Replies: 9
» Views: 3,018
KC868-A16 UART pins
Forum: KC868-A series and Uair Smart Controller
Last Post: meowdokugame
08-04-2026, 07:40 AM
» Replies: 2
» Views: 603
KC868-A32 Malfunction Aft...
Forum: KC868-A32/A32 Pro
Last Post: admin
08-04-2026, 06:19 AM
» Replies: 3
» Views: 99

  [arduino code examples for B24M]-04 RS485 communication test
Posted by: admin - 07-31-2025, 06:58 AM - Forum: B24M - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* RS485 Communication Test
*
* This program is a simple test for RS485 communication using ESP32-S3.
* It will send a message over RS485 and then read incoming messages.
* The TXD pin is defined as GPIO 16 and RXD pin is defined as GPIO 17.
*/

#include <HardwareSerial.h>

// Define RS485 pins
#define RS485_RXD 38
#define RS485_TXD 39

// Create a hardware serial object
HardwareSerial rs485Serial(1);

void setup() {
  // Start serial communication for debugging
  Serial.begin(115200);
  while (!Serial);

  // Initialize RS485 Serial communication
  rs485Serial.begin(9600, SERIAL_8N1, RS485_RXD, RS485_TXD);
 
  Serial.println("RS485 Test Start");
}

void loop() {
  // Send a test message
  rs485Serial.println("Hello from KinCony B24!");

  // Wait for a short period
  delay(1000);

  // Check if data is available to read
  if (rs485Serial.available()) {
    String receivedMessage = "";
    while (rs485Serial.available()) {
      char c = rs485Serial.read();
      receivedMessage += c;
    }
    // Print the received message
    Serial.print("Received: ");
    Serial.println(receivedMessage);
  }

  // Wait before sending the next message
  delay(2000);
}
arduino ino file download: 

.zip   4-RS485-Test.zip (Size: 764 bytes / Downloads: 562)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: 

.zip   4-RS485-Test.ino.merged.zip (Size: 186.53 KB / Downloads: 537)

Print this item

  [arduino code examples for B24]-04 RS485 communication test
Posted by: admin - 07-31-2025, 06:58 AM - Forum: B24 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* RS485 Communication Test
*
* This program is a simple test for RS485 communication using ESP32-S3.
* It will send a message over RS485 and then read incoming messages.
* The TXD pin is defined as GPIO 16 and RXD pin is defined as GPIO 17.
*/

#include <HardwareSerial.h>

// Define RS485 pins
#define RS485_RXD 38
#define RS485_TXD 39

// Create a hardware serial object
HardwareSerial rs485Serial(1);

void setup() {
  // Start serial communication for debugging
  Serial.begin(115200);
  while (!Serial);

  // Initialize RS485 Serial communication
  rs485Serial.begin(9600, SERIAL_8N1, RS485_RXD, RS485_TXD);
 
  Serial.println("RS485 Test Start");
}

void loop() {
  // Send a test message
  rs485Serial.println("Hello from KinCony B24!");

  // Wait for a short period
  delay(1000);

  // Check if data is available to read
  if (rs485Serial.available()) {
    String receivedMessage = "";
    while (rs485Serial.available()) {
      char c = rs485Serial.read();
      receivedMessage += c;
    }
    // Print the received message
    Serial.print("Received: ");
    Serial.println(receivedMessage);
  }

  // Wait before sending the next message
  delay(2000);
}
arduino ino file download: 

.zip   4-RS485-Test.zip (Size: 764 bytes / Downloads: 503)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: 

.zip   4-RS485-Test.ino.merged.zip (Size: 186.53 KB / Downloads: 524)

Print this item

  [arduino code examples for B32M]-04 RS485 communication test
Posted by: admin - 07-31-2025, 06:58 AM - Forum: B32M - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* RS485 Communication Test
*
* This program is a simple test for RS485 communication using ESP32-S3.
* It will send a message over RS485 and then read incoming messages.
* The TXD pin is defined as GPIO 16 and RXD pin is defined as GPIO 17.
*/

#include <HardwareSerial.h>

// Define RS485 pins
#define RS485_RXD 38
#define RS485_TXD 39

// Create a hardware serial object
HardwareSerial rs485Serial(1);

void setup() {
  // Start serial communication for debugging
  Serial.begin(115200);
  while (!Serial);

  // Initialize RS485 Serial communication
  rs485Serial.begin(9600, SERIAL_8N1, RS485_RXD, RS485_TXD);
 
  Serial.println("RS485 Test Start");
}

void loop() {
  // Send a test message
  rs485Serial.println("Hello from KinCony B24!");

  // Wait for a short period
  delay(1000);

  // Check if data is available to read
  if (rs485Serial.available()) {
    String receivedMessage = "";
    while (rs485Serial.available()) {
      char c = rs485Serial.read();
      receivedMessage += c;
    }
    // Print the received message
    Serial.print("Received: ");
    Serial.println(receivedMessage);
  }

  // Wait before sending the next message
  delay(2000);
}
arduino ino file download: 

.zip   4-RS485-Test.zip (Size: 764 bytes / Downloads: 540)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: 

.zip   4-RS485-Test.ino.merged.zip (Size: 186.53 KB / Downloads: 547)

Print this item

  [arduino code examples for B24M]-03 Read ADS1115 analog input ports value
Posted by: admin - 07-31-2025, 06:57 AM - Forum: B24M - No Replies

Code:
/*
* This program reads voltage values from the ADS1115 analog-to-digital converter
* on all four channels (A0, A1, A2, A3) and prints the results through the serial port.
* The ADS1115 communicates via the I2C protocol. This version of the code includes
* the capability to specify custom SDA and SCL pins for I2C communication.
*
* Copyright: Made by KinCony IoT: https://www.kincony.com
*
*/

#include <Wire.h>                // Library for I2C communication
#include <DFRobot_ADS1115.h>     // Library for ADS1115 ADC module

// Define the I2C SDA and SCL pins for communication with ADS1115
#define SDA_PIN 8 
#define SCL_PIN 18

// Initialize ADS1115 instance using the Wire library
DFRobot_ADS1115 ads(&Wire);

void setup(void)
{
    // Begin serial communication at a baud rate of 115200
    Serial.begin(115200);

    // Initialize the I2C bus using the defined SDA and SCL pins
    Wire.begin(SDA_PIN, SCL_PIN);

    // Set the I2C address for the ADS1115 (default: 0x49)
    ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // Address is 0x49

    // Set the gain for the ADS1115 (2/3x gain allows for a maximum input voltage of 6.144V)
    ads.setGain(eGAIN_TWOTHIRDS);

    // Set the ADS1115 to operate in single-shot mode (each reading is a single conversion)
    ads.setMode(eMODE_SINGLE);

    // Set the sample rate to 128 samples per second (SPS)
    ads.setRate(eRATE_128);

    // Set the operational status mode to single-conversion start
    ads.setOSMode(eOSMODE_SINGLE);

    // Initialize the ADS1115 module
    ads.init();
}

void loop(void)
{
    // Check if the ADS1115 is properly connected and functioning
    if (ads.checkADS1115())
    {
        // Variables to store the voltage readings for each channel
        int16_t adc0, adc1, adc2, adc3;

        // Read the voltage from channel A0 and print the value
        adc0 = ads.readVoltage(0);
        Serial.print("A0:");
        Serial.print(adc0);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A1 and print the value
        adc1 = ads.readVoltage(1);
        Serial.print("A1:");
        Serial.print(adc1);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A2 and print the value
        adc2 = ads.readVoltage(2);
        Serial.print("A2:");
        Serial.print(adc2);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A3 and print the value
        adc3 = ads.readVoltage(3);
        Serial.print("A3:");
        Serial.print(adc3);
        Serial.println("mV");     // Print the value in millivolts and end the line
    }
    else
    {
        // If ADS1115 is not connected, print a message indicating disconnection
        Serial.println("ADS1115 Disconnected!");
    }

    // Wait for 1 second before the next loop iteration
    delay(1000);
}
arduino ino file download: 

.zip   3-ads1115_adc.zip (Size: 1.2 KB / Downloads: 517)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   3-ads1115_adc.ino.merged.zip (Size: 192.69 KB / Downloads: 523)

Print this item

  [arduino code examples for B24]-03 Read ADS1115 analog input ports value
Posted by: admin - 07-31-2025, 06:57 AM - Forum: B24 - No Replies

Code:
/*
* This program reads voltage values from the ADS1115 analog-to-digital converter
* on all four channels (A0, A1, A2, A3) and prints the results through the serial port.
* The ADS1115 communicates via the I2C protocol. This version of the code includes
* the capability to specify custom SDA and SCL pins for I2C communication.
*
* Copyright: Made by KinCony IoT: https://www.kincony.com
*
*/

#include <Wire.h>                // Library for I2C communication
#include <DFRobot_ADS1115.h>     // Library for ADS1115 ADC module

// Define the I2C SDA and SCL pins for communication with ADS1115
#define SDA_PIN 8 
#define SCL_PIN 18

// Initialize ADS1115 instance using the Wire library
DFRobot_ADS1115 ads(&Wire);

void setup(void)
{
    // Begin serial communication at a baud rate of 115200
    Serial.begin(115200);

    // Initialize the I2C bus using the defined SDA and SCL pins
    Wire.begin(SDA_PIN, SCL_PIN);

    // Set the I2C address for the ADS1115 (default: 0x49)
    ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // Address is 0x49

    // Set the gain for the ADS1115 (2/3x gain allows for a maximum input voltage of 6.144V)
    ads.setGain(eGAIN_TWOTHIRDS);

    // Set the ADS1115 to operate in single-shot mode (each reading is a single conversion)
    ads.setMode(eMODE_SINGLE);

    // Set the sample rate to 128 samples per second (SPS)
    ads.setRate(eRATE_128);

    // Set the operational status mode to single-conversion start
    ads.setOSMode(eOSMODE_SINGLE);

    // Initialize the ADS1115 module
    ads.init();
}

void loop(void)
{
    // Check if the ADS1115 is properly connected and functioning
    if (ads.checkADS1115())
    {
        // Variables to store the voltage readings for each channel
        int16_t adc0, adc1, adc2, adc3;

        // Read the voltage from channel A0 and print the value
        adc0 = ads.readVoltage(0);
        Serial.print("A0:");
        Serial.print(adc0);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A1 and print the value
        adc1 = ads.readVoltage(1);
        Serial.print("A1:");
        Serial.print(adc1);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A2 and print the value
        adc2 = ads.readVoltage(2);
        Serial.print("A2:");
        Serial.print(adc2);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A3 and print the value
        adc3 = ads.readVoltage(3);
        Serial.print("A3:");
        Serial.print(adc3);
        Serial.println("mV");     // Print the value in millivolts and end the line
    }
    else
    {
        // If ADS1115 is not connected, print a message indicating disconnection
        Serial.println("ADS1115 Disconnected!");
    }

    // Wait for 1 second before the next loop iteration
    delay(1000);
}
arduino ino file download: 

.zip   3-ads1115_adc.zip (Size: 1.2 KB / Downloads: 581)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   3-ads1115_adc.ino.merged.zip (Size: 192.69 KB / Downloads: 565)

Print this item

  [arduino code examples for B32M]-03 Read ADS1115 analog input ports value
Posted by: admin - 07-31-2025, 06:57 AM - Forum: B32M - No Replies

Code:
/*
* This program reads voltage values from the ADS1115 analog-to-digital converter
* on all four channels (A0, A1, A2, A3) and prints the results through the serial port.
* The ADS1115 communicates via the I2C protocol. This version of the code includes
* the capability to specify custom SDA and SCL pins for I2C communication.
*
* Copyright: Made by KinCony IoT: https://www.kincony.com
*
*/

#include <Wire.h>                // Library for I2C communication
#include <DFRobot_ADS1115.h>     // Library for ADS1115 ADC module

// Define the I2C SDA and SCL pins for communication with ADS1115
#define SDA_PIN 8 
#define SCL_PIN 18

// Initialize ADS1115 instance using the Wire library
DFRobot_ADS1115 ads(&Wire);

void setup(void)
{
    // Begin serial communication at a baud rate of 115200
    Serial.begin(115200);

    // Initialize the I2C bus using the defined SDA and SCL pins
    Wire.begin(SDA_PIN, SCL_PIN);

    // Set the I2C address for the ADS1115 (default: 0x49)
    ads.setAddr_ADS1115(ADS1115_IIC_ADDRESS0);   // Address is 0x49

    // Set the gain for the ADS1115 (2/3x gain allows for a maximum input voltage of 6.144V)
    ads.setGain(eGAIN_TWOTHIRDS);

    // Set the ADS1115 to operate in single-shot mode (each reading is a single conversion)
    ads.setMode(eMODE_SINGLE);

    // Set the sample rate to 128 samples per second (SPS)
    ads.setRate(eRATE_128);

    // Set the operational status mode to single-conversion start
    ads.setOSMode(eOSMODE_SINGLE);

    // Initialize the ADS1115 module
    ads.init();
}

void loop(void)
{
    // Check if the ADS1115 is properly connected and functioning
    if (ads.checkADS1115())
    {
        // Variables to store the voltage readings for each channel
        int16_t adc0, adc1, adc2, adc3;

        // Read the voltage from channel A0 and print the value
        adc0 = ads.readVoltage(0);
        Serial.print("A0:");
        Serial.print(adc0);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A1 and print the value
        adc1 = ads.readVoltage(1);
        Serial.print("A1:");
        Serial.print(adc1);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A2 and print the value
        adc2 = ads.readVoltage(2);
        Serial.print("A2:");
        Serial.print(adc2);
        Serial.print("mV,  ");    // Print the value in millivolts

        // Read the voltage from channel A3 and print the value
        adc3 = ads.readVoltage(3);
        Serial.print("A3:");
        Serial.print(adc3);
        Serial.println("mV");     // Print the value in millivolts and end the line
    }
    else
    {
        // If ADS1115 is not connected, print a message indicating disconnection
        Serial.println("ADS1115 Disconnected!");
    }

    // Wait for 1 second before the next loop iteration
    delay(1000);
}
arduino ino file download: 

.zip   3-ads1115_adc.zip (Size: 1.2 KB / Downloads: 583)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   3-ads1115_adc.ino.merged.zip (Size: 192.69 KB / Downloads: 527)

Print this item

  [arduino code examples for B24M]-02 Read digital input ports state
Posted by: admin - 07-31-2025, 06:55 AM - Forum: B24M - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Description:
* This Arduino program reads the state of two 16-channel PCF8575 I/O expanders
* and prints the state of all input pins (1-24) to the Serial Monitor.
*
* Pin Definitions:
* - SDA: GPIO 8
* - SCL: GPIO 18
* - PCF8575 I2C Address: 0x22 for inputs 1-16, 0x25 for inputs 17-24
*/

#include "Arduino.h"
#include "PCF8575.h"

// Define I2C pins
#define I2C_SDA 8  // Define SDA pin
#define I2C_SCL 18  // Define SCL pin

// Set I2C addresses
PCF8575 pcf8575_IN1(0x22); // The I2C address of the first PCF8575 (inputs 1-16)
PCF8575 pcf8575_IN2(0x25); // The I2C address of the second PCF8575 (inputs 17-24)

void setup() {
    Serial.begin(115200);

    // Initialize I2C communication
    Wire.begin(I2C_SDA, I2C_SCL); // Initialize I2C with defined SDA and SCL pins

    // Initialize both PCF8575 modules
    pcf8575_IN1.begin();
    pcf8575_IN2.begin();

    Serial.println("KinCony B24 24 channel input state 0:ON  1:OFF");
}

void loop() {

if (pcf8575_IN1.read(8)==0) {Serial.print("DI1 state="); Serial.println("on");}
if (pcf8575_IN1.read(9)==0) {Serial.print("DI2 state="); Serial.println("on");}
if (pcf8575_IN1.read(10)==0) {Serial.print("DI3 state="); Serial.println("on");}
if (pcf8575_IN1.read(11)==0) {Serial.print("DI4 state="); Serial.println("on");}
if (pcf8575_IN1.read(12)==0) {Serial.print("DI5 state="); Serial.println("on");}
if (pcf8575_IN1.read(13)==0) {Serial.print("DI6 state="); Serial.println("on");}
if (pcf8575_IN1.read(14)==0) {Serial.print("DI7 state="); Serial.println("on");}
if (pcf8575_IN1.read(15)==0) {Serial.print("DI8 state="); Serial.println("on");}

if (pcf8575_IN1.read(0)==0) {Serial.print("DI9 state="); Serial.println("on");}
if (pcf8575_IN1.read(1)==0) {Serial.print("DI10 state="); Serial.println("on");}
if (pcf8575_IN1.read(2)==0) {Serial.print("DI11 state="); Serial.println("on");}
if (pcf8575_IN1.read(3)==0) {Serial.print("DI12 state="); Serial.println("on");}
if (pcf8575_IN1.read(4)==0) {Serial.print("DI13 state="); Serial.println("on");}
if (pcf8575_IN1.read(5)==0) {Serial.print("DI14 state="); Serial.println("on");}
if (pcf8575_IN1.read(6)==0) {Serial.print("DI15 state="); Serial.println("on");}
if (pcf8575_IN1.read(7)==0) {Serial.print("DI16 state="); Serial.println("on");}

if (pcf8575_IN2.read(0)==0) {Serial.print("DI17 state="); Serial.println("on");}
if (pcf8575_IN2.read(1)==0) {Serial.print("DI18 state="); Serial.println("on");}
if (pcf8575_IN2.read(2)==0) {Serial.print("DI19 state="); Serial.println("on");}
if (pcf8575_IN2.read(3)==0) {Serial.print("DI20 state="); Serial.println("on");}
if (pcf8575_IN2.read(4)==0) {Serial.print("DI21 state="); Serial.println("on");}
if (pcf8575_IN2.read(5)==0) {Serial.print("DI22 state="); Serial.println("on");}
if (pcf8575_IN2.read(6)==0) {Serial.print("DI23 state="); Serial.println("on");}
if (pcf8575_IN2.read(7)==0) {Serial.print("DI24 state="); Serial.println("on");}


    delay(1000); // Delay 500ms
}
arduino ino file download:

.zip   2-digital-input.zip (Size: 880 bytes / Downloads: 529)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: 

.zip   2-digital-input.ino.merged.zip (Size: 192.64 KB / Downloads: 518)

Print this item

  [arduino code examples for B24]-02 Read digital input ports state
Posted by: admin - 07-31-2025, 06:55 AM - Forum: B24 - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Description:
* This Arduino program reads the state of two 16-channel PCF8575 I/O expanders
* and prints the state of all input pins (1-24) to the Serial Monitor.
*
* Pin Definitions:
* - SDA: GPIO 8
* - SCL: GPIO 18
* - PCF8575 I2C Address: 0x22 for inputs 1-16, 0x25 for inputs 17-24
*/

#include "Arduino.h"
#include "PCF8575.h"

// Define I2C pins
#define I2C_SDA 8  // Define SDA pin
#define I2C_SCL 18  // Define SCL pin

// Set I2C addresses
PCF8575 pcf8575_IN1(0x22); // The I2C address of the first PCF8575 (inputs 1-16)
PCF8575 pcf8575_IN2(0x25); // The I2C address of the second PCF8575 (inputs 17-24)

void setup() {
    Serial.begin(115200);

    // Initialize I2C communication
    Wire.begin(I2C_SDA, I2C_SCL); // Initialize I2C with defined SDA and SCL pins

    // Initialize both PCF8575 modules
    pcf8575_IN1.begin();
    pcf8575_IN2.begin();

    Serial.println("KinCony B24 24 channel input state 0:ON  1:OFF");
}

void loop() {

if (pcf8575_IN1.read(8)==0) {Serial.print("DI1 state="); Serial.println("on");}
if (pcf8575_IN1.read(9)==0) {Serial.print("DI2 state="); Serial.println("on");}
if (pcf8575_IN1.read(10)==0) {Serial.print("DI3 state="); Serial.println("on");}
if (pcf8575_IN1.read(11)==0) {Serial.print("DI4 state="); Serial.println("on");}
if (pcf8575_IN1.read(12)==0) {Serial.print("DI5 state="); Serial.println("on");}
if (pcf8575_IN1.read(13)==0) {Serial.print("DI6 state="); Serial.println("on");}
if (pcf8575_IN1.read(14)==0) {Serial.print("DI7 state="); Serial.println("on");}
if (pcf8575_IN1.read(15)==0) {Serial.print("DI8 state="); Serial.println("on");}

if (pcf8575_IN1.read(0)==0) {Serial.print("DI9 state="); Serial.println("on");}
if (pcf8575_IN1.read(1)==0) {Serial.print("DI10 state="); Serial.println("on");}
if (pcf8575_IN1.read(2)==0) {Serial.print("DI11 state="); Serial.println("on");}
if (pcf8575_IN1.read(3)==0) {Serial.print("DI12 state="); Serial.println("on");}
if (pcf8575_IN1.read(4)==0) {Serial.print("DI13 state="); Serial.println("on");}
if (pcf8575_IN1.read(5)==0) {Serial.print("DI14 state="); Serial.println("on");}
if (pcf8575_IN1.read(6)==0) {Serial.print("DI15 state="); Serial.println("on");}
if (pcf8575_IN1.read(7)==0) {Serial.print("DI16 state="); Serial.println("on");}

if (pcf8575_IN2.read(0)==0) {Serial.print("DI17 state="); Serial.println("on");}
if (pcf8575_IN2.read(1)==0) {Serial.print("DI18 state="); Serial.println("on");}
if (pcf8575_IN2.read(2)==0) {Serial.print("DI19 state="); Serial.println("on");}
if (pcf8575_IN2.read(3)==0) {Serial.print("DI20 state="); Serial.println("on");}
if (pcf8575_IN2.read(4)==0) {Serial.print("DI21 state="); Serial.println("on");}
if (pcf8575_IN2.read(5)==0) {Serial.print("DI22 state="); Serial.println("on");}
if (pcf8575_IN2.read(6)==0) {Serial.print("DI23 state="); Serial.println("on");}
if (pcf8575_IN2.read(7)==0) {Serial.print("DI24 state="); Serial.println("on");}


    delay(1000); // Delay 500ms
}
arduino ino file download:

.zip   2-digital-input.zip (Size: 880 bytes / Downloads: 540)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: 

.zip   2-digital-input.ino.merged.zip (Size: 192.64 KB / Downloads: 526)

Print this item

  [arduino code examples for B32M]-02 Read digital input ports state
Posted by: admin - 07-31-2025, 06:55 AM - Forum: B32M - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* Description:
* This Arduino program reads the state of two 16-channel PCF8575 I/O expanders
* and prints the state of all input pins (1-24) to the Serial Monitor.
*
* Pin Definitions:
* - SDA: GPIO 8
* - SCL: GPIO 18
* - PCF8575 I2C Address: 0x22 for inputs 1-16, 0x25 for inputs 17-24
*/

#include "Arduino.h"
#include "PCF8575.h"

// Define I2C pins
#define I2C_SDA 8  // Define SDA pin
#define I2C_SCL 18  // Define SCL pin

// Set I2C addresses
PCF8575 pcf8575_IN1(0x22); // The I2C address of the first PCF8575 (inputs 1-16)
PCF8575 pcf8575_IN2(0x25); // The I2C address of the second PCF8575 (inputs 17-24)
PCF8575 pcf8575_IN3(0x26); // The I2C address of the second PCF8575 (inputs 25-32)

void setup() {
    Serial.begin(115200);

    // Initialize I2C communication
    Wire.begin(I2C_SDA, I2C_SCL); // Initialize I2C with defined SDA and SCL pins

    // Initialize both PCF8575 modules
    pcf8575_IN1.begin();
    pcf8575_IN2.begin();
    pcf8575_IN3.begin();

    Serial.println("KinCony B32 32 channel input state 0:ON  1:OFF");
}

void loop() {

if (pcf8575_IN1.read(8)==0) {Serial.print("DI1 state="); Serial.println("on");}
if (pcf8575_IN1.read(9)==0) {Serial.print("DI2 state="); Serial.println("on");}
if (pcf8575_IN1.read(10)==0) {Serial.print("DI3 state="); Serial.println("on");}
if (pcf8575_IN1.read(11)==0) {Serial.print("DI4 state="); Serial.println("on");}
if (pcf8575_IN1.read(12)==0) {Serial.print("DI5 state="); Serial.println("on");}
if (pcf8575_IN1.read(13)==0) {Serial.print("DI6 state="); Serial.println("on");}
if (pcf8575_IN1.read(14)==0) {Serial.print("DI7 state="); Serial.println("on");}
if (pcf8575_IN1.read(15)==0) {Serial.print("DI8 state="); Serial.println("on");}

if (pcf8575_IN1.read(0)==0) {Serial.print("DI9 state="); Serial.println("on");}
if (pcf8575_IN1.read(1)==0) {Serial.print("DI10 state="); Serial.println("on");}
if (pcf8575_IN1.read(2)==0) {Serial.print("DI11 state="); Serial.println("on");}
if (pcf8575_IN1.read(3)==0) {Serial.print("DI12 state="); Serial.println("on");}
if (pcf8575_IN1.read(4)==0) {Serial.print("DI13 state="); Serial.println("on");}
if (pcf8575_IN1.read(5)==0) {Serial.print("DI14 state="); Serial.println("on");}
if (pcf8575_IN1.read(6)==0) {Serial.print("DI15 state="); Serial.println("on");}
if (pcf8575_IN1.read(7)==0) {Serial.print("DI16 state="); Serial.println("on");}

if (pcf8575_IN2.read(0)==0) {Serial.print("DI17 state="); Serial.println("on");}
if (pcf8575_IN2.read(1)==0) {Serial.print("DI18 state="); Serial.println("on");}
if (pcf8575_IN2.read(2)==0) {Serial.print("DI19 state="); Serial.println("on");}
if (pcf8575_IN2.read(3)==0) {Serial.print("DI20 state="); Serial.println("on");}
if (pcf8575_IN2.read(4)==0) {Serial.print("DI21 state="); Serial.println("on");}
if (pcf8575_IN2.read(5)==0) {Serial.print("DI22 state="); Serial.println("on");}
if (pcf8575_IN2.read(6)==0) {Serial.print("DI23 state="); Serial.println("on");}
if (pcf8575_IN2.read(7)==0) {Serial.print("DI24 state="); Serial.println("on");}

if (pcf8575_IN3.read(0)==0) {Serial.print("DI25 state="); Serial.println("on");}
if (pcf8575_IN3.read(1)==0) {Serial.print("DI26 state="); Serial.println("on");}
if (pcf8575_IN3.read(2)==0) {Serial.print("DI27 state="); Serial.println("on");}
if (pcf8575_IN3.read(3)==0) {Serial.print("DI28 state="); Serial.println("on");}
if (pcf8575_IN3.read(4)==0) {Serial.print("DI29 state="); Serial.println("on");}
if (pcf8575_IN3.read(5)==0) {Serial.print("DI30 state="); Serial.println("on");}
if (pcf8575_IN3.read(6)==0) {Serial.print("DI31 state="); Serial.println("on");}
if (pcf8575_IN3.read(7)==0) {Serial.print("DI32 state="); Serial.println("on");}

    delay(1000); // Delay 500ms
}

arduino ino file download:

.zip   2-digital-input.zip (Size: 942 bytes / Downloads: 211)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: 

.zip   2-digital-input.ino.merged.zip (Size: 198.36 KB / Downloads: 264)

Print this item

  [arduino code examples for B24M]-01 Turn ON/OFF OUTPUT
Posted by: admin - 07-31-2025, 06:54 AM - Forum: B24M - No Replies

Code:
/*
* Made by KinCony IoT: https://www.kincony.com
*
* This program controls a 24-channel relay board via two PCF8575 I/O expanders.
* It sequentially turns on each relay and then turns them off in a loop.
*
* Pin Definitions:
* - SDA: GPIO 8
* - SCL: GPIO 18
*
* Delay Time:
* - 200 milliseconds between switching relays
*/

#include <Wire.h>        // Include the Wire library for I2C communication
#include <PCF8575.h>     // Include the PCF8575 library to control the I/O expander

#define SDA 8            // Define the SDA pin
#define SCL 18           // Define the SCL pin
#define DELAY_TIME 200   // Define the delay time in milliseconds

// Set I2C addresses of the PCF8575 modules
#define I2C_ADDRESS_R1 0x25 // I2C address of the first PCF8575 module
#define I2C_ADDRESS_R2 0x24 // I2C address of the second PCF8575 module

PCF8575 pcf8575_R1(I2C_ADDRESS_R1); // Create a PCF8575 object for the first module (for relays 9-24)
PCF8575 pcf8575_R2(I2C_ADDRESS_R2); // Create a PCF8575 object for the second module (for relays 1-8)

void setup() {
  // Initialize I2C communication
  Wire.begin(SDA, SCL); // SDA on GPIO 8, SCL on GPIO 18 (according to your board's configuration)
 
  // Initialize serial communication for debugging (optional)
  Serial.begin(115200);
  Serial.println("PCF8575 Relay Control: Starting...");

  // Initialize the PCF8575 modules
  pcf8575_R1.begin();
  pcf8575_R2.begin();

  // Turn off all relays initially (set all pins HIGH)

  for (int i = 8; i < 16; i++) {
    pcf8575_R1.write(i, HIGH); // Set relays 1-8 to OFF (assuming HIGH means OFF for relays)
  }

  for (int i = 0; i < 16; i++) {
    pcf8575_R2.write(i, HIGH); // Set relays 9-24 to OFF (assuming HIGH means OFF for relays)
  }
}

void loop() {
  // Sequentially turn on each relay (1-24)
 
  // First control the relays on the second PCF8575 (relays 1-8)
  for (int i = 8; i < 16; i++) {
    pcf8575_R1.write(i, LOW);   // Turn on the relay at pin i (LOW means ON for the relay)
    delay(DELAY_TIME);          // Wait for DELAY_TIME milliseconds
  }

  // Then control the relays on the first PCF8575 (relays 9-24)
  for (int i = 0; i < 16; i++) {
    pcf8575_R2.write(i, LOW);   // Turn on the relay at pin i (LOW means ON for the relay)
    delay(DELAY_TIME);          // Wait for DELAY_TIME milliseconds
  }

  // Sequentially turn off each relay (1-24)
 
  // First control the relays on the second PCF8575 (relays 1-8)
  for (int i = 8; i < 16; i++) {
    pcf8575_R1.write(i, HIGH);  // Turn off the relay at pin i (HIGH means OFF for the relay)
    delay(DELAY_TIME);          // Wait for DELAY_TIME milliseconds
  }

  // Then control the relays on the first PCF8575 (relays 9-24)
  for (int i = 0; i < 16; i++) {
    pcf8575_R2.write(i, HIGH);  // Turn off the relay at pin i (HIGH means OFF for the relay)
    delay(DELAY_TIME);          // Wait for DELAY_TIME milliseconds
  }
}
arduino ino file download:

.zip   1-relay.zip (Size: 1.01 KB / Downloads: 544)
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:

.zip   1-relay.ino.merged.zip (Size: 192.11 KB / Downloads: 533)

Print this item