Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Bonjour
Bonnes salutations..!!
Je (Somanshu Choudhary) au nom de Dcube tech ventures va contrôler les relais via le protocole I2C en utilisant Arduino nano et MCP23008.
Étape 1: Aperçu
- Le dispositif MCP23X08 fournit une extension d'E/S parallèle à usage général 8 bits pour les applications de bus I2C ou SPI.
- Le MCP23X08 se compose de plusieurs registres de configuration 8 bits pour la sélection d'entrée, de sortie et de polarité. Le maître du système peut activer les E/S en tant qu'entrées ou sorties en écrivant les bits de configuration des E/S. Les données de chaque entrée ou sortie sont conservées dans le registre d'entrée ou de sortie correspondant. La polarité du registre du port d'entrée peut être inversée avec le registre d'inversion de polarité. Tous les registres peuvent être lus par le maître du système.
- LIEN DE LA FICHE TECHNIQUE:
Étape 2: Ce dont vous avez besoin / Liens
1. LIEN Arduino Nano:
2. Shield pour Arduino Nano LINK:
3. Câble USB Type A vers Micro Type B 6 pieds de long
4. LIEN de câble I²C:
5. Huit relais contrôlés SPDT I²C
6. LIEN de l'adaptateur:
Étape 3: schéma de circuit
Étape 4: Programmation - I
- Dans ce code, j'utilise Function Programming Paradigm
- J'ai utilisé différents onglets pour la définition des fonctions et l'appel de fonction
CODE SOUS ONGLET q:
// Code d'appel de fonction simple
#include void setup()
{
// Adresse I2C du MCP23008
#définir MCP_ADDR 0x20
// Rejoindre le bus I2C en tant que maître
Fil.begin();
// Démarrer la communication série et définir le débit en bauds
Serial.begin(9600);
// Commencer la transmission avec le périphérique donné sur le bus I2C
Wire.beginTransmission(MCP_ADDR);
// Sélectionnez IODIR – Registre I/O DIRECTION REGISTER
Wire.write(0x00);
// Sélectionnez l'opération requise (sortie)
Wire.write(0x00);
// Sélectionner le registre CONFIGURATION
Wire.write(0x05);
// Sélectionnez l'opération requise
Wire.write(0x0E);
// terminer la transmission
Wire.endTransmission();
}
boucle vide()
{
a1_on();
retard(1000);
a1_off();
retard(1000);
a2_on();
retard(1000);
a2_off();
retard(1000);
a3_on();
retard(1000);
a3_off();
retard(1000);
a4_on();
retard(1000);
a4_off();
retard(1000);
a5_on();
retard(1000);
a5_off();
retard(1000);
a6_on();
retard(1000);
a6_off();
retard(1000);
a7_on();
retard(1000);
a7_off();
retard(1000);
a8_on();
retard(1000);
a8_off();
}
CODE SOUS ONGLET q1:
// Ce code sert à activer et désactiver le relais 1 à bord
annuler a1_on() {
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x01);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a1_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
CODE SOUS ONGLET q2:
// Ce code sert à activer et désactiver le relais 2 à bord
annuler a2_on() {
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x02);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a2_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
CODE SOUS TAB q3:// Ce code sert à allumer et éteindre le relais 3 à bord
annuler a3_on()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x04);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a3_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
Étape 5: Programmation - II
CODE SOUS ONGLET q4:
// Ce code sert à activer et désactiver le relais 4 à bord
annuler a4_on()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x08);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a4_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
CODE SOUS ONGLET q5:
// Ce code sert à activer et désactiver le relais 5 à bord
annuler a5_on()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x10);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a5_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
CODE SOUS ONGLET q6:// Ce code sert à activer et désactiver le relais 6 à bord
annuler a6_on()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x20);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a6_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
CODE SOUS ONGLET q7:// Ce code sert à activer et désactiver le relais 7 à bord
annuler a7_on() {
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x40);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a7_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
CODE SOUS TAB q8:// Ce code sert à activer et désactiver le relais 8 à bord
void a8_on() {
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x80);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
annuler a8_off()
{
// Commencer la transmission
Wire.beginTransmission(MCP_ADDR);
Wire.write(0x09);
Wire.write(0x00);
retard (1800);
Wire.requestFrom(MCP_ADDR, 1);
int GPIO = Wire.read();
Wire.endTransmission();
// Sortie à l'écran
Serial.print("Valeur GPIO:");
Serial.println(GPIO, BIN);
}
Étape 6: Vidéo
Pour plus d'informations, n'hésitez pas à visiter notre site:
www.dcubetechnologies.com