Gettoniera - Problema collegamento (Pulse).

Buongiorno a tutti,

Premetto che non sono un utente esperto, ma semplicemente mi piace provare a realizzare, smontare, fare e disfare.. Possiedo già arduino da diversi anni, l ho utilizzato in qualche progetto fatto da me tanto per passare il tempo, e sono affascinato dalle incredibili potenzialità di questo microprocessore ma, bando alle ciance e ora vi spiego l inghippo.

Recentemente ho deciso di realizzare una gettoniera, attivabile tramite impronta digitale.
Il suo funzionamento dovrebbe essere molto semplice (almeno per ora voglio fare solo le basi poi l idea è di implementargli display etc):

Ogni utente si "Logga" tramite la sua impronta digitale acquisita precedentemente (e fin qui, dopo liti, pc rotti, bestemmie e autoschiaffi, sono riuscito a otterenere il risultato), dopo di che, una volta "Loggati" si verifica se "L'utente X" ha credito sufficiente a Tot. , Nel caso questa condizione risulti vera, faccio girare un servo di 360°, altrimenti passiamo alla parte B del programma.

(Tutto quello scritto fin ora son riuscito a farlo, quello che non riesco a fare stà in questa seconda parte).

In questa seconda parte, ho bisogno di acquisire il valore della moneta inserita all interno della gettoniera per poi fare tutti i miei calcoli etc.
Ho acquistato una gettoniera 616 programmabile che, una volta settata tramite i pulsanti che già di per se ha, riesce autonomamente a discriminare la moneta inserita, mi spiego meglio. Ho acquistato la gettoniera e l ho settata per monete da 10,20,50 cent, 1,2€.
X ogni moneta ho la possibilità di scegliere la quantità di impulsi (pulse) che la stessa gettoniera dovrebbe emettere tramite un pin ad esso collegata (il cavo bianco) e per questo ho scelto di impostare la quantià di impulsi rispettivamente a 1,2,3,4,5 e 6 impulsi per l ultima moneta da 2€.
Detto ciò, lato gettoniera riesco a visualizzare perfettamente la quantità di impulsi inviati (perché sulla gettoniera è presente un display), ovvero inserendo le rispettive monete, sul display appare il numero corretto (che sarebbe il numero di impulsi da me scelto in fase di set della gettoniera);

-------- ECCO IL PROBLEMA --------

Quello che non riesco dannatamente a risolvere, è come acquisire tramite Arduino il numero degli impulsi sprigionati dalla gettoniera stessa.
Su internet ho trovato vari sketch che in realtà sembrano anche molto semplici che dovrebbero permettermi di fare ciò ma in realtà non c'è verso per cui io riesca.
Sostanzialmente negli sketch reperiti in rete viene indicato di collegare il famoso cavetto bianco (il numero di impulsi) al Pin 2 di Arduino, e successivamente tramite un interrupt leggere gli impulsi ricevuti.

La cosa strana è che in alcuni video che ho visto viene utilizzato un tester "sonoro" per fare le prove collegando il cavetto bianco (Pulse) e il GND ed effettivamente il tester emette Tot. Bip quanti sono gli impulsi prescelti (Ogni qualvolta venga inserita una moneta).
A me tutto ciò non accade, sul tester visualizzo un continuo bip unico anche quando non viene inserita nessuna moneta... Come è possibile?

Chiedo scusa se mi sono dilungato troppo nella descrizione del progetto ma ho preferito questo rispetto all'essere striminzito.

Buongiorno,
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, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

EnigmaAren:
Sostanzialmente negli sketch reperiti in rete viene indicato di collegare il famoso cavetto bianco (il numero di impulsi) al Pin 2 di Arduino, e successivamente tramite un interrupt leggere gli impulsi ricevuti.
A me tutto ciò non accade, sul tester visualizzo un continuo bip unico anche quando non viene inserita nessuna moneta... Come è possibile?

O ci fai vedere il codice che hai usato per testare gli impulsi sul pin 2 e ci fai uno schema (anche fatto a penna e poi fotografato) dei collegamenti, o ci fornisci una sfera di cristallo...

Ecco qui: (Mentre scrivevo il codice mi è venuta in mente una cosa, possibile che io sbagli a collegare il Pin "Coin" della gettoniera, con il Pin 2 di Arduino? L interupt peró dovrebbe essere associato ai Pin 1 e 2 su Arduino uno.. Bho!)

Comunque vi posto il tutto!
Il link contenente il codice è il seguente:
Link Sketch

E invece lo schema è il seguente (In allegato).
Nell immagine non ho disegnato il cavetto usb che è comunque collegato al pc per permettere di seguire lo sketch tramite monitor seriale.

Ok gli darò un'occhiata, comunque ricorda che puoi mettere allegati (non grandi ovviamente) anche direttamente qui, basta cliccare sotto all'editor, su "Attachments and other options", così oltre ad evitare tu di dover uploadare da qualche parte e darci i link (che comunque dovresti marcare col tasto "Insert a link" dell'editor, non marcarli come "quote" o nel testo stesso, come hai fatto ora), permetti a chi vuole aiutarti di scaricare semplicemente i tuoi allegati... :wink:

EnigmaAren:
E invece lo schema è il seguente:

Scusa ma secondo te come fa a funzionare se colleghi il solo pin "coin"? Devi mettere in comune anche GND, altrimenti per Arduino quello è un input "flottante"...
Aggiungi quel collegamento e facci sapere.

In che senso? Nello schema ho dato per scontato, erroneamente forse, che arduino è collegato con il cavo Usb al pc in modo tale da seguire seguire lo sketch da monitor seriale.

Le masse (GND) di TUTTI gli oggetti devono essere in comune, quindi prendi la massa della gettoniera e uniscila alla massa di Arduino.

Guglielmo

Altra cosa che mi è saltata all'occhio non hai messo la resistenza nel collegamento al led, mettila non è opzionale

EnigmaAren:
In che senso? Nello schema ho dato per scontato, erroneamente forse, che arduino è collegato con il cavo Usb al pc in modo tale da seguire seguire lo sketch da monitor seriale.

Provo a spiegarti in maniera semplificata, ma insomma, sono le basi dell'elettronica...

Se tu hai un segnale, in questo caso il pin "coin", questo assume dei livelli di tensione alto o basso a seconda del segnale. Ma la tensione la si misura tra DUE punti, tu non è che sul tester hai un solo puntale, no? Tu per misurare lo stato di quel pin cosa fai? Metti un puntale su "coin" e l'altro su GND! Lo stesso deve fare Arduino.
Non è che si dice che Arduino non ha una massa, è che la massa di Arduino è diversa da quella di quell'apparato, pertanto se col tester cerchi di misurare lo stato del piedino "coin" mettendoci un puntale e l'altro lo metti a GND di Arduino, non misuri nulla di attendibile perché i riferimenti (GND) è probabile che siano a livelli differenti.

Quindi tu DEVI avere il pin GND della gettoniera collegata al GND di Arduino (che a sua volta sarà collegato anche al GND della USB ma questo non influisce sulla gettoniera, va bene tenerlo per l'output seriale).

Poi ha ragione anche fabpolli, DEVI mettere una resistenza, anche piccola (in genere metto una 220 Ohm) al LED per limitare la corrente (per proteggere Arduino più che il led).

E anche una resistenza di PullUp, sull'ingresso del pin2, o al limite abilitare quella interna

Primo, vi ringrazio tutti..
Secondo, e non so quanto mi convenga dirlo, son perito elettronico ma ovviamente, non è che tutti quelli che di diplomano sia detto che abbiano capito l elettronica. A me le cose piacciono e le apprendo, se mi vengono spiegate per bene! E poi, per come son fatto io purtroppo le cose le dimentico se non le metto in pratica costantemente..
Comunque vi ringrazio tutti quanti, più tardi provo e spero di risolvere.

A scuola parlavano sempre di pullup e pulldown, ma perchè proteggono Arduino in questo caso? Io le cose come detto le vorrei capire più che fare.. E poi perchè son curioso.. Anche l altra resistenza interna.. Bho.. Un po di dubbi li ho.. Anche se si discostano dal mio problema ma è comunque interessante conoscere le cose!

Pullup e pulldown non proteggono il pin di arduino servono a dare uno stato certo al pin, immagina che il savo pulse della gettoniera fornisca uno stato LOW (basso, corrispodente a GND) quando un gettone viene inserito e uno stato di alta impedenza quando nessun gettone viene inserito, mettendo la resistenza di pullup sei certo che quando arriva l'impulso il pin va in stato LOW e quando non vi è alcun impulso la resistenza di pullup lo mette a HIGH (alto, +5V), senza resistenza di pullup con l'uscita delle gettoniera in alta impedenza il cavo capterebbe tutti i disturbi che gli stanno attorno causando potenziali false letture.
La resistenza interna di pullup è una caratteristica disponibile sulle MCU usate su Arduino che ti permette con l'struzione

pinMode(2, INPUT_PULLUP);

di dichiarare che il pin è settato come ingresso e la resistenza interna presente nella MCU è attiva, serve a risparmiare una resistenza di pullup esterna, anche se in certi casi è meglio usare quella esterna, nel tuo caso credo tu posso provare con quella interna senza problemi.
Discorso differente è la resistenza sul pin che pilota il led, quella non è di pullup o pulldown ma in serie al led e serve a limitare la corrente che scorre tra pin e led, senza di questa il led tenta di assorbire tutta la corrente possibile bruciando il pin che ha un limite massimo di 40mA (da cui stare alla larga solitamente si sconsiglia di duperare i 30mA).
Se invece di un pin di Arduino colleghi il led ad una batteria senza resistenza il led si trasforma in una frazione di secondo in una supernova e subito dopo va nel paradiso dei semiconduttori.