Índice:
- Etapa 1: Visão geral
- Etapa 2: O que você precisa / links
- Etapa 3: Diagrama de Circuito
- Etapa 4: Programação - I
- Etapa 5: Programação - II
- Etapa 6: Vídeo
Vídeo: Aplicação de MCP-23008 usando interface de relé (I2C): 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Olá
Boas saudações.. !!
Eu (Somanshu Choudhary), em nome da tecnologia Dcube, vai controlar relés via protocolo I2C usando Arduino nano e MCP23008.
Etapa 1: Visão geral
- O dispositivo MCP23X08 oferece expansão de E / S paralela de 8 bits para uso geral para barramento I2C ou aplicações SPI.
- O MCP23X08 consiste em vários registros de configuração de 8 bits para entrada, saída e seleção de polaridade. O mestre do sistema pode habilitar as E / S como entradas ou saídas, escrevendo os bits de configuração de E / S. Os dados para cada entrada ou saída são mantidos no registro de entrada ou saída correspondente. A polaridade do registro da porta de entrada pode ser invertida com o registro de inversão de polaridade. Todos os registros podem ser lidos pelo mestre do sistema.
- LINK DE FOLHA DE DADOS:
Etapa 2: O que você precisa / links
1. Arduino Nano LINK:
2. Shield para Arduino Nano LINK:
3. Cabo USB Tipo A para Micro Tipo B 6 pés de comprimento
4. LINK do cabo I²C:
5. Oito relés controlados SPDT I²C
6. Adaptador LINK:
Etapa 3: Diagrama de Circuito
Etapa 4: Programação - I
- Neste código, eu uso o Paradigma de Programação de Função
- Usei diferentes guias para definição e chamada de funções
CÓDIGO SOB TAB q:
// Código de chamada de função simples
#include void setup ()
{
// endereço I2C do MCP23008
# define MCP_ADDR 0x20
// Junte-se ao barramento I2C como mestre
Wire.begin ();
// Inicie a comunicação serial e defina a taxa de transmissão
Serial.begin (9600);
// Comece a transmissão com determinado dispositivo no barramento I2C
Wire.beginTransmission (MCP_ADDR);
// Selecione o registro IODIR - I / O DIRECTION REGISTER
Wire.write (0x00);
// Selecione a operação necessária (saída)
Wire.write (0x00);
// Selecione o registro de CONFIGURAÇÃO
Wire.write (0x05);
// Selecione a operação necessária
Wire.write (0x0E);
// fim da transmissão
Wire.endTransmission ();
}
void loop ()
{
a1_on ();
atraso (1000);
a1_off ();
atraso (1000);
a2_on ();
atraso (1000);
a2_off ();
atraso (1000);
a3_on ();
atraso (1000);
a3_off ();
atraso (1000);
a4_on ();
atraso (1000);
a4_off ();
atraso (1000);
a5_on ();
atraso (1000);
a5_off ();
atraso (1000);
a6_on ();
atraso (1000);
a6_off ();
atraso (1000);
a7_on ();
atraso (1000);
a7_off ();
atraso (1000);
a8_on ();
atraso (1000);
a8_off ();
}
CÓDIGO SOB TAB q1:
// Este código é para ligar e desligar o relé 1 a bordo
void a1_on () {
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x01);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a1_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO SOB TAB q2:
// Este código é para ligar e desligar o relé 2 a bordo
void a2_on () {
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x02);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a2_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO SOB TAB q3: // Este código é para ligar e desligar o relé 3 a bordo
void a3_on ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x04);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a3_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
Etapa 5: Programação - II
CÓDIGO SOB A TAB. Q4:
// Este código é para ligar e desligar o relé 4 a bordo
void a4_on ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x08);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a4_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO SOB TAB q5:
// Este código é para ligar e desligar o relé 5 a bordo
void a5_on ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x10);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a5_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO SOB TAB q6: // Este código é para ligar e desligar o relé 6 a bordo
void a6_on ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x20);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a6_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO SOB A TAB q7: // Este código é para ligar e desligar o relé 7 a bordo
void a7_on () {
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x40);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a7_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
CÓDIGO SOB A TAB q8: // Este código é para ligar e desligar o relé 8 a bordo
void a8_on () {
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x80);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
void a8_off ()
{
// Comece a transmissão
Wire.beginTransmission (MCP_ADDR);
Wire.write (0x09);
Wire.write (0x00);
atraso (1800);
Wire.requestFrom (MCP_ADDR, 1);
int GPIO = Wire.read ();
Wire.endTransmission ();
// Saída para a tela
Serial.print ("valor GPIO:");
Serial.println (GPIO, BIN);
}
Etapa 6: Vídeo
Para obter mais informações, visite nosso site:
www.dcubetechnologies.com
Recomendado:
Placa de aplicação do 555 Timer IC: 11 etapas
Placa de aplicação do 555 Timer IC: Introdução: O 555 timer IC é um dos mais úteis e conhecidos IC para todos nós. Minha operadora profissional de hardware embarcado começou há dois anos e em 2019, minha resolução é preparar 45 circuitos diferentes usando 555 CI temporizador para
Introdução à interface do sensor I2C ?? - Interface do seu MMA8451 usando ESP32s: 8 etapas
Introdução à interface do sensor I2C ?? - Faça a interface do seu MMA8451 usando ESP32s: neste tutorial, você aprenderá tudo sobre como iniciar, conectar e fazer com que o dispositivo I2C (acelerômetro) funcione com o controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
LÂMPADA DE DESKTOP DE LED RGB SIMPLES COM APLICAÇÃO DO ANDROID: 5 etapas
LÂMPADA DE DESKTOP DE LED RGB SIMPLES COM APLICAÇÃO ANDROID CONTROLADA: então, neste tutorial, vou mostrar a você como controlar rgb led com smartphone Android. Os leds RGB trabalham com o conceito básico de combinação das cores básicas de qualquer tonalidade, ou seja, vermelho, verde e azul. Todas as cores têm essas cores elementares
Aplicação de manutenção de pontuação Petanque / Jeu-de-Boules: 7 etapas
Aplicativo de manutenção de pontuação Petanque / Jeu-de-Boules: Este é um aplicativo de manutenção de pontuação Petanque (também conhecido como Jeu de Boules) para Android. Este aplicativo pode ser usado exatamente como está e é totalmente funcional. Ou pode ser usado em combinação com o display Petanque Matrix [instruções separadas
Sistema de gerenciamento de motor para aplicação de içamento usando Arduino Mega 2560 e IoT: 8 etapas (com imagens)
Sistema de gerenciamento de motor para aplicação de içamento usando Arduino Mega 2560 e IoT: Atualmente, os microcontroladores baseados em IoT são amplamente usados na aplicação industrial. Economicamente, eles são usados em vez de um computador. O objetivo do projeto é o controle totalmente digitalizado, registrador de dados e monitoramento do motor de indução trifásico w