Analog e digital read stesso pin

Ho una curiosità:
Ma se io nello stesso programma, faccio un lettura analogica e una digitale dello stesso pin, funziona?
Intendo ovviamente che se ci fosse un potenziometro, su quel pin, avrei con la analogica un intero "congruo" con la posizione del potenziometro, e con la digitale alto o basso a seconda se la lettura supera o meno la soglia
Utilità della cosa nulla (messa così, se la si pensasse in ottica di conigli e cappelli invece....)
Ma utilità a parte, funzionerebbe?
Purtroppo non ho qui una UNO per provare....

Secondo me dovrebbe funzionare ...
... questo è lo schema dei collegamenti di un generico pin Pxn con tutte le sue possibili "funzioni alternative" (ove presenti).

Come si vede il collegamento che va al AIOx è indipendente dai collegamenti della parte digitale, quindi non vedo perché non dovresti poter fare le due cose :wink:

Guglielmo

... aggiungo solo che, relativamente alla lettura sui pin digitali, ti ricordo quanto ho già scritto QUI :wink:

Guglielmo

Grazie

Però spesso i circuiti esterni sono ottimizzati in modo diverso a seconda che si vogliano usare letture digitali o letture analogiche.

Vediamo se ho capito giusto
Le due funzioni sono indipendenti e quindi io potrei avere anche un riferimento di tensione AREF non pari av5 volt, giusto? Pur lavorando, quando in digitale, a 5 volt

Puoi leggere un entrata analogica anche in modo digitale ma secondo me non ha tanto senso visto la zona morta tra 1,5 e 3V (ATmega alimentato a 5V) in questo range puoi avere letture sia H che L a secondo del andamento precedente della tensione analogica.
Sotto 1,5V leggi L
sopra 3V leggi H
In mezzo puoi leggere L o H.
Puó essere che devi fare 2 letture analogiche e scartare la prima per avere una lettura affidabile.

Ciao Uwe

uwefed:
ma secondo me non ha tanto senso visto la zona morta tra 1,5 e 3V

Ah ecco me lo chiedevo anche io infatti. Quindi in pratica non conviene usare questo approccio a meno che non si sia certi del range di tensioni.

Sotto 1,5V leggi L
sopra 3V leggi H
In mezzo puoi leggere L o H.

Il famoso "Pin di Schrödinger" :smiley:

... rammento comunque che, sul ATmega328P, c'è un "comparatore analogico" e quello si che può essere usato per avere una soglia ben definita ed un interrupt al superamento :slight_smile:

Guglielmo

Manno...
La mia domanda andava in un'altra direzione
Tenere basso il riferimento dello adc, per distinguere letture analogiche da letture digitali
In ottica di multiplex estremo, come in un'altra discussione
Grazie per le risposte

Ma se invii tensioni superiori ad aref cosa succede?

paulus1969:
Ma se invii tensioni superiori ad aref cosa succede?

... purché nel limite di Vcc, se superi Aref ottieni sempre il valore massimo 0x3FF (a 10 bit).

Guglielmo

Allora ricordavo bene.
Se mette aref basso, potrebbe avere uno stato in cui legge 3FF in ared e LOW in digitale.

paulus1969:
Se mette aref basso, potrebbe avere uno stato in cui legge 3FF in ared e LOW in digitale.

Si, infatti, basta che seleziona il riferimento interno a 1.1V e arriva a 0x3FF prima che in digitale possa leggere HIGH :smiley:

Guglielmo

docdoc:
Ah ecco me lo chiedevo anche io infatti. Quindi in pratica non conviene usare questo approccio a meno che non si sia certi del range di tensioni.

Il famoso "Pin di Schrödinger" :smiley:

No. niente gatti e niente Schrödinger.

Nella zona morta il valore letto non é casuale ma rimane quello letto prima di entrare nalla zona morta.
Esempio: ho una tensione analogica che aumenta e va da 0 a 5V Viene letta LOW finche raggiunge i 3V. viceversa se una tensione che diminuisce da 5V a 0 viene letta HIGH fino che raggiunge i 1,5V. Percui la tensione da 1,5V a 3V puó essere letta H o L.

Ciao Uwe

Ci ho pensato su un po': l'idea non è malaccio, se intesa a spremere il nostro processore ed utilizzare i pin analogici anche come digitali, quindi avere piu ingressi. Su Arduino UNO, per esempio, ho 6 ingressi analogici, occupati da 6 potenziometri, ma potrei avere gli stessi ingressi come digitali avendo un totale di 26 canali e non 20.
Però se un ingresso digitale è ON (cioè, in configurazione pull-down, 5V) mi "copre" la lettura del potenziometro.
Se però sacrifico un pin digitale e multiplexo l'alimentazione di questi 6 ingressi digitali, succhede che con alimentazione 5V spenta leggo i potenziometri puri e con alimentazione 5V accesa leggo i digitali.
Non ho più 26 canali ma ne ho sempre 25...

Più o meno l'idea era questa....

L'eventuale pin analogico, usato in uno schetch in due modi, come dev'essere dichiarato
nel setup?

Visto che li useremo in input, input,

non possiamo certo usarli output, e input pullup disturberebbe analogico

Standardoil:
Visto che li useremo in input, input,

non possiamo certo usarli output, e input pullup disturberebbe analogico

Si lo so che sono in input, quindi visto che il pin analogico non si dichiara, dichiariamo nel setup solo
il modo digitale, ad esempio: pinMode(0,INPUT)
e poi da qualsiasi punto del programma lo useremo come digitale che analogico
è così?