Salve, è la prima volta che scrivo sul forum. Spero di essere nel posto giusto.
Sono un neofita di Arduino.
Il problema dovrebbe riguardare qualsiasi dispositivo multiplo attaccato sul bus I2C.
Devo collegare 10 lettori di corrente INA260, che lavorano su I2C, ovviamente con indirizzi diversi. C'è una bella libreria, Adafruit INA260 che funziona benissimo con un singolo integrato.
Ho provato a creare più istanze nella classe INA260, ma mi sono perso in una vagonata di errori.
C'è un modo per risolvere il problema?
Grazie a tutti
Buongiorno e benvenuto nella sezione Italiana del forum,
cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
Strano, normalmente si possono creare più istanze della stessa classe e tu, ovviamnete, devi crearne una per ogni sensore ... prova a mettere qui il codice e gli errori che ti da (... fai copia/incolla e lo racchiudi, obbligatoriamente, tra i tag "code" ovvero ... dopo averlo copiato, selezioni la parte di codice e premi l'icona <code/> nella barra degli strumenti per contrassegnarla, appunto, come codice. Stessa cosa con gli errori. Non solo, ma, al fine di rendere il codice più leggibile, assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac, sempre all'interno del IDE).
Guglielmo
Oltre a ciò che ti chiede @gpb01, sarebbe conveniente se ci fornissi un link ai moduli che stai utilizzando e come hai configurato gli indirizzi I2C in ciascun modulo.
Grazie a tutti per le risposte.
Per i test ho usato la demoboard Adafruit INA260.
Prima prova:
//Adafruit_INA260 ina260 = Adafruit_INA260();
Adafruit_INA260 ina260_0 = Adafruit_INA260(0x40);
Adafruit_INA260 ina260_1 = Adafruit_INA260(0x41);
ma quando compila dice:
C:\Users\Stefano\OneDrive\Documenti\Arduino\Test_INA260\Test_INA260.ino:13:48: error: no matching function for call to 'Adafruit_INA260::Adafruit_INA260(int)'
Adafruit_INA260 ina260_0 = Adafruit_INA260(0x40);
Forse dovrei modificare anche la libreria? Ho provato, ma sono caduto in un gorgo...
Buona serata
Stefano
Ovviamente quelli tra parentesi nelle 2 istanze sono gli indirizzi dell'INA260.
Credo che l'errore sia proprio quello. Stando al sorgente della libreria, il costruttore ( Adafruit_INA260()) non accetta parametri, l'indirizzo lo devi specificare nel metodo begin:
class Adafruit_INA260 {
public:
Adafruit_INA260();
bool begin(uint8_t i2c_addr = INA260_I2CADDR_DEFAULT,
TwoWire *theWire = &Wire);
Ciao, Ale.
quindi
Adafruit_INA260_0();
bool begin(uint8_t i2c_addr =0x40,
TwoWire *theWire = &Wire);
Adafruit_INA260_1();
bool begin(uint8_t i2c_addr =0x41,
TwoWire *theWire = &Wire);
ecc.
Grazie, proverò
Stefano
ci sa che sei partito nella direzione sbagliata
non devi personalizzare la libreria, una copia per ogni sensore
quanti sensori hai, 10?
crei 10 istanze del sensore
noi faremmo così:
Adafruit_INA260 ina260[10] = [0]; // array non popolato
// lo popolo
for (int i=0; i<10; i++){
ina260[i]=Adafruit_INA260();
}
per poi settare i singoli indirizzi
ina260[0].begin(indirizzo....)
// e poi tutti gli altri
e usarli al bisogno
Serial.print(ina260[5].readCurrent());
prova prima con solo 2
noi non abbiamo la libreria, non proviamo
tieni sotto controllo il consumo di memoria
Ciao Salvohardin,
il tuo metodo ha funzionato. Grazie!
Stefano
prego,
è stato un piacere
5 posts were split to a new topic: Sensori Sensirion scd30 I2C ma col medesimo indirizzo
A post was merged into an existing topic: Sensori Sensirion scd30 I2C ma col medesimo indirizzo