Tabla de contenido:
- Paso 1: descripción general
- Paso 2: Qué necesita / Enlaces
- Paso 3: diagrama de circuito
- Paso 4: Programación - I
- Paso 5: Programación - II
- Paso 6: video
Video: Aplicación de MCP-23008 usando la interfaz de relé (I2C) :: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Hola
Buenos saludos.. !!
Yo (Somanshu Choudhary) en nombre de las empresas tecnológicas de Dcube, voy a controlar los relés a través del protocolo I2C utilizando Arduino nano y MCP23008.
Paso 1: descripción general
- El dispositivo MCP23X08 proporciona expansión de E / S paralelas de uso general de 8 bits para aplicaciones de bus I2C o SPI.
- El MCP23X08 consta de varios registros de configuración de 8 bits para la selección de entrada, salida y polaridad. El maestro del sistema puede habilitar las E / S como entradas o salidas escribiendo los bits de configuración de E / S. Los datos de cada entrada o salida se guardan en el registro de entrada o salida correspondiente. La polaridad del registro del puerto de entrada se puede invertir con el registro de inversión de polaridad. Todos los registros pueden ser leídos por el maestro del sistema.
- ENLACE A LA HOJA DE DATOS:
Paso 2: Qué necesita / Enlaces
1. Arduino Nano ENLACE:
2. Shield para Arduino Nano LINK:
3. Cable USB tipo A a micro tipo B de 6 pies de largo
4. I²C Cable ENLACE:
5. Ocho relés controlados por SPDT I²C
6. Adaptador ENLACE:
Paso 3: diagrama de circuito
Paso 4: Programación - I
- En este código, uso el paradigma de programación de funciones
- Usé diferentes pestañas para la definición de funciones y la llamada de funciones.
CÓDIGO BAJO LA PESTAÑA q:
// Código de llamada de función simple
#include configuración vacía ()
{
// Dirección I2C del MCP23008
#define MCP_ADDR 0x20
// Únete al bus I2C como maestro
Wire.begin ();
// Inicie la comunicación en serie y configure la velocidad en baudios
Serial.begin (9600);
// Comenzar la transmisión con el dispositivo dado en el bus I2C
Wire.beginTransmission (MCP_ADDR);
// Seleccione IODIR - registro de REGISTRO DE DIRECCIÓN DE E / S
Wire.write (0x00);
// Seleccione la operación requerida (salida)
Wire.write (0x00);
// Seleccionar registro CONFIGURACIÓN
Wire.write (0x05);
// Seleccione la operación requerida
Wire.write (0x0E);
// finalizar la transmisión
Wire.endTransmission ();
}
bucle vacío ()
{
a1_on ();
retraso (1000);
a1_off ();
retraso (1000);
a2_on ();
retraso (1000);
a2_off ();
retraso (1000);
a3_on ();
retraso (1000);
a3_off ();
retraso (1000);
a4_on ();
retraso (1000);
a4_off ();
retraso (1000);
a5_on ();
retraso (1000);
a5_off ();
retraso (1000);
a6_on ();
retraso (1000);
a6_off ();
retraso (1000);
a7_on ();
retraso (1000);
a7_off ();
retraso (1000);
a8_on ();
retraso (1000);
a8_off ();
}
CÓDIGO BAJO LA PESTAÑA q1:
// Este código es para encender y apagar el relé 1 a bordo
void a1_on () {
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a1_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO BAJO LA PESTAÑA q2:
// Este código es para encender y apagar el relé 2 a bordo
void a2_on () {
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a2_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO BAJO LA PESTAÑA q3: // Este código es para encender y apagar el relé 3 a bordo
vacío a3_on ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a3_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
Paso 5: Programación - II
CÓDIGO BAJO LA PESTAÑA q4:
// Este código es para encender y apagar el relé 4 a bordo
void a4_on ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a4_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO BAJO LA PESTAÑA q5:
// Este código es para encender y apagar el relé 5 a bordo
void a5_on ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a5_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO BAJO LA PESTAÑA q6: // Este código es para encender y apagar el relé 6 a bordo
void a6_on ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a6_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO BAJO LA PESTAÑA q7: // Este código es para encender y apagar el relé 7 a bordo
void a7_on () {
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a7_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO BAJO TAB q8: // Este código es para encender y apagar el relé 8 a bordo
void a8_on () {
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
anular a8_off ()
{
// Iniciar transmisión
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
retraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Salida a la pantalla
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
Paso 6: video
Para más preguntas, no dude en visitar nuestro sitio:
www.dcubetechnologies.com
Recomendado:
Introducción a la interfaz del sensor I2C - Interfaz de su MMA8451 usando ESP32s: 8 pasos
Introducción a la interfaz del sensor I2C - Interfaz de su MMA8451 usando ESP32s: en este tutorial, aprenderá todo sobre cómo iniciar, conectar y hacer que el dispositivo I2C (acelerómetro) funcione con el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfaz Sensirion, SPS-30, sensor de materia particulada con Arduino Duemilanove usando el modo I2C: 5 pasos
Interfaz Sensirion, SPS-30, sensor de materia particulada con Arduino Duemilanove usando el modo I2C: Cuando estaba buscando en la interfaz de sensores SPS30, me di cuenta de que la mayoría de las fuentes eran para Raspberry Pi pero no tantas para Arduino. Pasé un poco de tiempo para hacer que el sensor funcionara con Arduino y decidí publicar mi experiencia aquí para que pudiera
Iterador (aplicación de interfaz gráfica de usuario de Python): 5 pasos
Iterator (Python GUI Application): Hola chicos, estoy de vuelta con otro instructable increíble. Esta vez aprendí Python, y pensé que después de aprender un lenguaje de programación es mejor desarrollar algún software. Así que tengo una idea de por qué no crear un software que pueda ayudar con la tediosa p
Creación de una aplicación de Android para pequeñas empresas con la aplicación MIT y Google Fusion Table: 7 pasos
Creación de una aplicación de Android para pequeñas empresas con la aplicación MIT y Google Fusion Table: ¿Alguna vez ha querido crear su propia aplicación que puede estar disponible en Google Play Store? Si tiene un negocio, este tutorial cambiará su vida. Después de leer esto detenidamente, podrá crear su propia aplicación. Antes
¡Hola Blynk! Interfaz de SPEEEduino con la aplicación Blynk: 5 pasos
¡Hola Blynk! Interfaz de SPEEEduino con la aplicación Blynk: ¿Qué es SPEEEduino? SPEEEduino es una placa de microcontrolador habilitada para Wi-Fi basada en el ecosistema Arduino, diseñada para educadores. El SPEEEduino combina el factor de forma y el microcontrolador del Arduino con el SoC Wi-Fi ESP8266, haciendo