8 Relè comandati via i2c ... come comandarli uno alla volta separatamente
mi scuso in anticipo per la domanda che molti di voi risulterà banale.
ho un pcb con vari integrati mcp23008 che cascata controllano 8 relè e poi degli ingressi.
per quanto concerne relè ho provato con la libreria adafruit è modificando la stessa addr in 0x22(mio indirizzo e non 0x20 standard) riesco controllare singolarmente di accendere o spegnere vari relè in modo separato cioè accendo esempio il 4 il 5 e il 6 e poi spengo solo il 5.
il problema è che non vorrei usare la libreria adafruit perché ho dovuto forzatamente modificarla come già detto.
in internet ho trovato un esempio dove utilizza solo la libreria wire.h e accende e spegne in sequenza gli 8 relè il problema che non riesco capire come posso accendere e spegnere relè singolarmente come ho riportato sopra..
qualcuno mi indica come fare
grazie mille
di seguito riporto il codice esempio
ho un pcb con vari integrati mcp23008 che cascata controllano 8 relè e poi degli ingressi.
per quanto concerne relè ho provato con la libreria adafruit è modificando la stessa addr in 0x22(mio indirizzo e non 0x20 standard) riesco controllare singolarmente di accendere o spegnere vari relè in modo separato cioè accendo esempio il 4 il 5 e il 6 e poi spengo solo il 5.
il problema è che non vorrei usare la libreria adafruit perché ho dovuto forzatamente modificarla come già detto.
in internet ho trovato un esempio dove utilizza solo la libreria wire.h e accende e spegne in sequenza gli 8 relè il problema che non riesco capire come posso accendere e spegnere relè singolarmente come ho riportato sopra..
qualcuno mi indica come fare
grazie mille
di seguito riporto il codice esempio
code: [select]
// distributed free-will license.
// use way want, profit or free, provided fits in licenses of associated works.
// mcp23008
// code designed work mcp23008_i2cr8g5le_10a i2c relay controller available controleverything.com.
// https://www.controleverything.com/content/relay-controller?sku=mcp23008_i2cr8g5le_10a#tabs-0-product_tabset-2
#include <wire.h>
// mcp23008_i2cr8g5le i2c address 0x20(32)
#define addr 0x20
int data;
void setup()
{
// initialise i2c communication master
wire.begin();
// initialise serial communication, set baud rate = 9600
serial.begin(9600);
// start i2c transmission
wire.begintransmission(addr);
// select iodir register
wire.write(0x00);
// pins configured output
wire.write(0x00);
// stop i2c transmission
wire.endtransmission();
delay(500);
}
void loop()
{
// turning relays on, 1 one
data = 0x01;
(int = 0; < 8; i++)
{
// start i2c transmission
wire.begintransmission(addr);
// select gpio register
wire.write(0x09);
// pins set logic high
wire.write(data);
// stop i2c transmission
wire.endtransmission();
// output data serial monitor
serial.print("turning relay ");
serial.print(i);
serial.println(" on");
data = data << 1;
data = data + 1;
delay(500);
}
// turning relays off, 1 one
data = 0xfe;
(int = 0; < 8; i++)
{
// start i2c transmission
wire.begintransmission(addr);
// select gpio register
wire.write(0x09);
// pins set logic low
wire.write(data);
// stop i2c transmission
wire.endtransmission();
// output data serial monitor
serial.print("turning relay ");
serial.print(i);
serial.println(" off");
data = data << 1;
delay(500);
}
}/code]
devi settare o resettare singoli bit del registro dello stato dei pin del mcp.
ciao uwe
ciao uwe
Arduino Forum > International > Italiano > Software (Moderator: leo72) > 8 Relè comandati via i2c ... come comandarli uno alla volta separatamente
arduino
Comments
Post a Comment