Arduino si blocca

Buonasera a tutti. Espongo brevemente il mio problema. Ho realizzato un progetto, di cui allego schema elettrico e rappresentazione grafica, in cui 4 pin analogici vanno a testare i valori di caduta di tensione di 4 coppie di resistenze poste in serie. Le 4 coppie sono a loro volta poste i parallelo tra loro. Più semplice guardare lo schema che spiegare! Arduino è collegato ad un lcd I2C.Negli allegati mi sono preso la licenza di usare un lcd normale (i2c non c’era) e di collegare i pin sca ed scl di arduino a due pin a caso dell’lcd. Sull’lcd visualizzo i valori dei pin analogici espressi in numeri da 0 a 1023.
Funziona tutto bene fin quando collego 3 coppie di resistenze. Quando collego il cavetto alla quarta coppia, arduino si blocca. Il monitor non cicla più i valori, ma rimane fisso ed il led TX sulla scheda non lampeggia più. Se non vado a collegare il cavetto analogico, il problema non si pone. Le coppie di resistenze hanno valore di (330+100)(330+220)(330+330) e (330+470). Alimento arduino dalla classica USB collegata al computer.
Non capisco l’inghippo. Qualcuno riesce a spiegarmi dove sbaglio? grazie.

Ho provato a spostare una delle coppie sull'altro lato della breadboard e fila tutto liscio. Non capisco se è un difetto della breadboard oppure se non è in grado di supportare troppi "paralleli" dallo stesso lato...

Un problema nel programma?
Hai collegato a caso...? ? ? Perché li hai collegati?

In che senso nel programma? Intendi nel codice? No quello è corretto anche perché cambiando lato della breadboard tutto torna a funzionare.
Per quanto concerne i collegamenti che vedi negli schemi allegati, fritzing mi consente di inserire uno schermo LCD normale, mentre io sto usando un i2c, con la conseguenza che i PIN SDA ed SCL non sono presenti. Quindi ho fatto partire i collegamenti tra questi 2 PIN sulla scheda Arduino ed altri 2 PIN sull'lcd. Ma è solo una rappresentazione grafica. Nella realtà lo schermo LCD i2c è collegato bene.
Spero di essermi spiegato meglio.

Occhio che alcune breadboard cinesi di basso costo hanno delle linee interrotte (sono due breadboard mezza misura messe insieme, ma le linee di alimentazione sono interrotte) ... ::slight_smile:

Guglielmo

No, la mia è unica....ma, a prescindere dalla qualità della breadboard, quale può essere il motivo per quale si blocca? Non è che non funziona, Arduino rimane proprio bloccato. LCD acceso con scritte fisse. Poi appena stacco il cavetto, riprende a funzionare.Un corto o qualcosa di simile?
Non mi spiego questa cosa....

Ciao, ti consiglio di dare più informazioni per permetterci di inquadrare il problema. Ad esempio:

  • Quando stacchi il filo tutto riprende a funzionare da dove era rimasto? Puoi far scrivere a display un intero che incrementi ogni secondo per capirlo
  • Quanti attacchi il filo il loop cicla ancora o no? Puoi testarlo sul DO col led integrato, o puoi capirlo dall'implementazione del punto 1
  • Il problema si presenta indipendentemente da che resistenze attacchi? (ad esempio se colleghi la 1-2-3 si blocca, ma se colleghi 1-2-4?)
  • Se eviti di menzionare gli analog nel codice si blocca comuque?

Allora, ho fatto qualche prova. Intanto, come detto nel primo post, quando Arduino si blocca, il led TX che dovrebbe lampeggiare ad ogni ciclo, smette di lampeggiare. Se si blocca mentre era acceso, il led resta acceso, altrimenti rimane spento. Quindi è proprio la scheda che si blocca ed ovviamente anche l'lcd rimane fisso sulla schermata che è visualizzata al momento del blocco.Quando poi riprende, il ciclo continua lì dove si era fermato, non riprende da capo. Ho notato che il problema si pone con l'analogico A5. Nel senso che quando collego la coppia di resistenza (333+330) e (330+470), il tutto va in blocco. Ho provato ad usare A4 al posto di A5 e fa la stessa cosa. Se lo collego alle altre 2 coppie di resistori (330+100) e (330+220) funziona. Gli altri PIN invece, posso collegarli a tutte le coppie di resistori e non mi fanno problemi. Ho provato a scollegare gli altri PIN ed usare solo l'analogico A5 ed il problema si pone lo stesso. Anche disattivando da codice la lettura dell'analogico A5, Arduino va in blocco.

Ciao.
Tu hai detto che hai collegato un display in I2C.
I pin SDA e SCL che sono gli stessi di A4 eA5. Mi sa che il problema è li.

Ciao
Pippo72

Alan18:
... Ho provato ad usare A4 al posto di A5 e fa la stessa cosa. Se lo collego alle altre 2 coppie di resistori (330+100) e (330+220) funziona. Gli altri PIN invece, posso collegarli a tutte le coppie di resistori e non mi fanno problemi. Ho provato a scollegare gli altri PIN ed usare solo l'analogico A5 ed il problema si pone lo stesso. Anche disattivando da codice la lettura dell'analogico A5, Arduino va in blocco.

NON puoi usare né A4 né A5 che sono usati dal bus I2C ... i due pin a cui ti sei collegato con il LCD difatti NON sono pin dedicati al bus I2C, ma sono semplicemente la ripetizione dei pin A4 ed A5 sul lato opposto.

Hai liberi solo da A0 ad A3.

Guglielmo

P.S.: Comunque, nel tuo schema iniziale, NON stavi usando A4 ed A5 ... se lo schema era giusto ... ::slight_smile:

Praticamente nella realizzazione pratica, non riuscivo ad usare i PIN vicini perché i jumper erano troppo grossi e ho dovuto distanziarli.
Non sapevo questa cosa della ripetizione dei PIN. Ho imparato una cosa nuova. Quindi non c'è differenza se mi collego a SDA ed SCL oppure A4 e A5? Sicuramente ci sarà un motivo se lo hanno realizzato così, ma mi chiedo quale sia.
Intanto grazie x l'aiuto.

Alan18:
... Quindi non c'è differenza se mi collego a SDA ed SCL oppure A4 e A5? Sicuramente ci sarà un motivo se lo hanno realizzato così, ma mi chiedo quale sia.

No, non c'è alcuna differenza ...
... per ragioni di comodità per l'utente ed omogeneità con altre schede, hanno duplicato i due pin, ma elettricamente sono lo stesso segnale (questa cosa NON è vera su altre MCU ... es su Arduino Leonardo con ATmega32U4).

Guglielmo

E se volessi aggiungere un secondo dispositivo i2c, posso utilizzare A4 e A5 oppure il dispositivo va messo in serie all'lcd?
Quale dei 2 pin analogici corrisponde ad SDA e quale ad SCL?
Esistono delle schede che mi consentono di aggiungere PIN analogici? Visto che con 4 disponibili, sono già al limite massimo. Avevo letto da qualche parte che esistono degli I/0 extender, ma non mi era chiaro se aggiungevano solo pin digitali.
Grazie

l’I2C è un “bus” … quindi gli oggetti vanno in “parallelo”! QUI un tutorial da studiare.

Il pinout della UNO lo vedi nell’allegato dove, per ogni pin, sono indicate le possibili funzioni.

Per aumentare le porte analogiche esistono dei “multiplexer analogici” … QUESTO è un esempio.

Guglielmo

pinout diagramm unov3pdf.pdf (813 KB)

Si chiedo scusa, mi ero anche già letto qualcosa sull'argomento, non so perché mi è venuto da dire in serie.Grazie x le altre info, ora mi vedo con calma i link.