
Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-23 14:49

Ciao
Buoni saluti..!!
I (Somanshu Choudhary) per conto di Dcube tech ventures andando a controllare i relè tramite il protocollo I2C utilizzando Arduino nano e MCP23008.
Passaggio 1: Panoramica

- Il dispositivo MCP23X08 fornisce espansione I/O parallela a 8 bit per uso generico per bus I2C o applicazioni SPI.
- L'MCP23X08 è costituito da più registri di configurazione a 8 bit per la selezione di input, output e polarità. Il master del sistema può abilitare gli I/O come ingressi o uscite scrivendo i bit di configurazione degli I/O. I dati per ogni ingresso o uscita sono conservati nel registro di ingresso o uscita corrispondente. La polarità del registro Input Port può essere invertita con il registro Polarity Inversion. Tutti i registri possono essere letti dal master di sistema.
- LINK SCHEDA TECNICA:
Passaggio 2: cosa ti serve / link

1. Arduino Nano LINK:
2. Shield per Arduino Nano LINK:
3. Cavo USB da tipo A a micro tipo B lungo 6 piedi
4. COLLEGAMENTO del cavo I²C:
5. Otto relè controllati I²C SPDT
6. Collegamento adattatore:
Passaggio 3: schema elettrico


Fase 4: Programmazione - I


- In questo codice, utilizzo il paradigma di programmazione delle funzioni
- Ho usato diverse schede per la definizione delle funzioni e la chiamata di funzioni
CODICE SOTTO TAB q:
// Semplice codice di chiamata di funzione
#include void setup()
{
// Indirizzo I2C dell'MCP23008
#define MCP_ADDR 0x20
// Unisciti a I2C Bus come master
Wire.begin();
// Avvia la comunicazione seriale e imposta la velocità di trasmissione
Serial.begin(9600);
// Inizia la trasmissione con un dato dispositivo sul bus I2C
Wire.beginTransmission(MCP_ADDR);
// Seleziona IODIR – REGISTRO DIREZIONE I/O registrati
Wire.write(0x00);
// Seleziona l'operazione richiesta (output)
Wire.write(0x00);
// Seleziona CONFIGURAZIONE registro
Wire.write(0x05);
// Seleziona l'operazione richiesta
Wire.write(0x0E);
// termina la trasmissione
Wire.endTransmission();
}
ciclo vuoto()
{
a1_on();
ritardo(1000);
a1_off();
ritardo(1000);
a2_on();
ritardo(1000);
a2_off();
ritardo(1000);
a3_on();
ritardo(1000);
a3_off();
ritardo(1000);
a4_on();
ritardo(1000);
a4_off();
ritardo(1000);
a5_on();
ritardo(1000);
a5_off();
ritardo(1000);
a6_on();
ritardo(1000);
a6_off();
ritardo(1000);
a7_on();
ritardo(1000);
a7_off();
ritardo(1000);
a8_on();
ritardo(1000);
a8_off();
}
CODICE SOTTO TAB q1:
// Questo codice serve per attivare e disattivare il relè 1 a bordo
void a1_on() {
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x01);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a1_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
CODICE SOTTO TAB q2:
// Questo codice serve per attivare e disattivare il relè 2 a bordo
void a2_on() {
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x02);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a2_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
CODICE SOTTO TAB q3:// Questo codice serve per attivare e disattivare il relè 3 a bordo
void a3_on()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x04);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a3_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
Passaggio 5: Programmazione - II

CODICE SOTTO TAB q4:
// Questo codice serve per attivare e disattivare il relè 4 a bordo
void a4_on()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x08);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a4_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
CODICE SOTTO TAB q5:
// Questo codice serve per attivare e disattivare il relè 5 a bordo
void a5_on()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x10);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a5_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
CODICE SOTTO TAB q6:// Questo codice serve per attivare e disattivare il relè 6 a bordo
void a6_on()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x20);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a6_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
CODICE SOTTO TAB q7:// Questo codice serve per attivare e disattivare il relè 7 a bordo
void a7_on() {
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x40);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a7_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
CODICE SOTTO TAB q8:// Questo codice serve per attivare e disattivare il relè 8 a bordo
void a8_on() {
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x80);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
void a8_off()
{
// Inizia la trasmissione
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
ritardo (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Uscita sullo schermo
Serial.print("Valore GPIO:");
Serial.println(GPIO, BIN);
}
Passaggio 6: video
Per ulteriori domande Non esitate a visitare il nostro sito:
www.dcubetechnologies.com
Consigliato:
[2020] Utilizzo dell'iPhone o dell'iPad e dell'app Micro:bit Game Pad per controllare un'auto RC: 23 passaggi
![[2020] Utilizzo dell'iPhone o dell'iPad e dell'app Micro:bit Game Pad per controllare un'auto RC: 23 passaggi [2020] Utilizzo dell'iPhone o dell'iPad e dell'app Micro:bit Game Pad per controllare un'auto RC: 23 passaggi](https://i.howwhatproduce.com/images/001/image-1423-j.webp)
[2020] Utilizzo dell'iPhone o dell'iPad e dell'app Micro:bit Game Pad per controllare un'auto radiocomandata: hai mai pensato di utilizzare il tuo iPhone o iPad per controllare il tuo micro:bit?Sai che Micro:bit Educational Foundation fornisce l'app iOS nel App Store? Cerca "micro:bit" nell'App Store e puoi scaricare l'app gratuitamente. Il
Iniziare con l'interfaccia del sensore I2C?? - Interfaccia il tuo MMA8451 utilizzando ESP32: 8 passaggi

Iniziare con l'interfaccia del sensore I2C?? - Interfaccia il tuo MMA8451 utilizzando ESP32: in questo tutorial imparerai tutto su come avviare, connettere e far funzionare il dispositivo I2C (accelerometro) con il controller (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Arduino per principianti: spiegazione dell'interfaccia Arduino con LCD 16x2: 5 passaggi

Arduino per principianti: spiegazione dell'interfaccia Arduino con LCD 16x2: ciao a tutti, oggigiorno Arduino è diventato molto popolare e tutti lo accettano anche per la facilità di codifica. Ho creato la serie di basi di Arduino che aiutano i principianti, i principianti e anche gli sviluppatori per far funzionare il modulo. Questo s
Interfaccia DHT11 Utilizzo di Arduino: 4 passaggi

Interfaccia DHT11 Utilizzo di Arduino: in questo Instructables imparerai come configurare il sensore di umidità e temperatura DHT11 sul tuo Arduino UNO. E scopri come funziona il sensore di umidità e come controllare le letture in uscita dal monitor seriale Descrizione: il DHT11 rileva wa
Interfaccia display Nextion con scheda a quattro relè ESP 32: 7 passaggi

Interfaccia display Nextion con scheda a quattro relè ESP 32: in questa istruzione andremo ad interfacciare il display nextion da 5 "a scheda a quattro relè Esp 32. La scheda è controllata dal protocollo MQTT. Board ha anche funzioni di controllo a due vie. Può essere controllato sia da mqtt che da touch screen. Touch screen