Board difettosa?

Mi è stato da poco regalato uno starter kit con UNO R3.

Anche se sono un tecnico elettronico e programmatore industriale, ho comunque pensato di seguire i progetti sul libro dei progetti, anche per imparare la sintassi.

Al progetto 2 però riscontro dei problemi con la board. La logica è semplice:
se la variabile associata a un pulsante è uguale a Low, si accende un led verde fisso; viceversa lampeggiano 2 led rossi.

Sembrava tutto molto semplice, se non per il fatto che secondo la board, l'ingresso del pulsante è alto anche se sul piedino non collego nulla.

Come faccio già nel mio mestiere, ho iniziato a cercare il problema per altre vie, iniziando a scambiare gli ingressi e le uscite sulla board. Risultato: tutti i piedini funzionano normalmente come uscite, ma come ingressi danno un po' di problemi, per esempio sul piedino 8, tutto funziona perfettamente (quindi led verde acceso con pulsante low) fino a che non sfioro uno dei fili del pulsante sulla breadboard: in quel momento l'ingresso cambia stato da solo da High a Low senza apparente motivo.

Personalmente sono quasi sicuro che si tratti di un difetto dei morsetti sulla board, ma magari c'è qualche ipotesi che sto ignorando.

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

grazie della dritta Guglielmo, anche se, da come è scritto nel regolamento, non è chiaro che sia obbligatorio presentarsi, altrimenti lo avrei fatto senz'altro...

--- Quando si quota un post, NON è necessario riportarlo (inutilmente) tutto; bastano poche righe per far capire di cosa si parla ed a cosa ci si riferisce, inoltre, se si risponde al post immediatamente precedente, normalmente NON è necessario alcun "quote" dato che è sottinteso. :slight_smile:

Gli utenti da device "mobile" ringrazieranno per la cortesia :wink: - gpb01

nicknick90:
... anche se, da come è scritto nel regolamento, non è chiaro che sia obbligatorio presentarsi, altrimenti lo avrei fatto senz'altro...

Leggilo meglio ...

  • Punto 13: Poi, quando si arriva in un posto nuovo è sempre necessario presentarsi ...
  • Punto 16.7 : Alcuni non capiscono il perché della "presentazione" (obbligatoria) ...

... mi sembra invece sia piuttosto chiaro :slight_smile:

Guglielmo

Tornando invece al tuo problema ...
... credo che tu sita sottovalutando il fatto che gli ingressi di Arduino sono ad altissima impedenza e ... sentono anche il disturbo di una mosca che passa :smiley:

In pratica ogni pin in ingresso va forzato ad una condizione stabile mediante una resistenza di pull-up (per HIGH) o di pull-down (per LOW) e mai lasciato aperto.

Guglielmo

Sì: il microcontrollore è in tecnologia CMOS, con gli ingressi ad altissima impedenza e anche con una discreta capacità. Di conseguenza, se un ingresso viene lasciato non collegato, può assumere qualsiasi stato per piccolissime cariche che vengono accumulate. Addirittura, se porti un ingresso a livello alto o basso per un attimo, questo rimane in quella condizione per parecchio tempo (pur senza alcuna affidabilità!). Pertanto è sempre necessario portare gli ingressi a una tensione ben definita, senza MAI lasciarli aperti (salvo voler fare un generatore di numeri casuali...).

Se la sorgente ha una condizione in cui l'ingresso rimane aperto (ad esempio un pulsante aperto), è necessario collegare una resistenza di pull-up o di pull-down, a seconda che il pulsante chiuda verso massa o verso il positivo. Se scegli di adottare le resistenze di pull-up, puoi usare quelle presenti per ogni ingresso all'interno dello stesso microcontrollore:
pinMode(PIN_n, INPUT_PULLUP);

Datman:
Sì: il microcontrollore è in tecnologia CMOS, con gli ingressi ad altissima impedenza e anche con una discreta capacità. Di conseguenza, se un ingresso viene lasciato non collegato, può assumere qualsiasi stato

Ehm, si però, diciamo che teoricamente un "tecnico elettronico" queste cose dovrebbe saperle... :wink:

C'è poco da fare gli spirtitosi. Se compro una guida mi aspetto che questa mi fornisca le informazioni sul prodotto, come faccio a sapere se il microcontrollore e TTL o CMOS se non c'è nessuna indicazione? Ho studiato elettronica non cartomanzia! Inoltre si suppone anche che i progetti sullo stesso libro siano corretti e non che vadano interpretati come la bibbia. A quel punto tanto valeva comprare solo la board e andare a tentativi!

Si, nick non te la prendere :wink: , però, scusami, se hai un input digitale che ad ogni minima interferenza ti passa da LOW a HIGH e viceversa senza un apparente motivo, il primo sospetto è proprio quello non ti pare?

Magari hai sempre lavorato con TTL e mai con i CMOS o nulla open collector, ci può stare, ma in ogni caso intendevo dire che il tuo seppur legittimo dubbio che sia la scheda difettosa avrebbe dovuto indirizzarti a cercare una spiegazione più concreta, tutto qui.

PS e comunque se avessi almeno letto il reference di Arduino relativo alla funzione digitalRead() avresti letto questo:

Notes and Warnings
If the pin isn’t connected to anything, digitalRead() can return either HIGH or LOW (and this can change randomly).

Inoltre si suppone anche che i progetti sullo stesso libro siano corretti e non che vadano interpretati come la bibbia. A quel punto tanto valeva comprare solo la board e andare a tentativi!

Esatto. Non ho la guida in questione, penso sia un opuscoletto, cioè poche pagine in cui è impossibile dare tutte le informazioni di base. Quindi considera la guida per quello che è. Il riferimento assoluto (la bibbia) è il datasheet del microcontrollore, ma anche li possono esserci errori e difatti periodicamente viene aggiornato il documento e documentati gli errata.

Lo schema della board è stato rilasciato ed è quindi consultabile (e scaricabile).

come faccio a sapere se il microcontrollore e TTL o CMOS se non c'è nessuna indicazione?

Si, avrebbero potuto scrivere che la scheda è basata sul microcontrollore ATmegaxxx con I/O in tecnologia CMOS.
Comunque tutto ciò che di elettronica mi è capitato di recente è CMOS e i datasheet specificano se un pin può o meno essere lasciato flottante e cosa comporta ciò.

Spero che questo episodio non abbia effetti traumatici tali da farti riporre la scheda nella sua custodia.

Ciao.

Maurotec:
Si, avrebbero potuto scrivere che la scheda è basata sul microcontrollore ATmegaxxx con I/O in tecnologia CMOS.

Il libro dei progetti presente nello Starter Kit è un "manuale" pratico, nel senso che ogni progetto introduce un componente o un concetto base di elettronica, guidando l'utente nell'assemblaggio (metti questo qui e quello la) e spiegando i listati per far girare il progetto.
In definitiva è indirizzato principalmente ai principianti di elettronica (come me), ed essendo principianti sapere o meno che sia CMOS non cambia nulla in quanto, essendo principiante, a mala pena sa cosa è una resistenza!

Obiettivo del libro è quello di incuriosire fornendo gli strumenti base, e IMHO ci riesce bene, essendo "molto pratico", ma appena prendi un po' di dimestichezza, senti il bisogno di andare oltre, e quindi di utilizzare altre fonti per approfondire.

Federico