Innanzi tutto, mi chiamo Alessandro, sono nuovo in questo mondo e sto cercando di imparare, e visto che nella maggior parte delle guide e video tutorial che si trovano nella vastità del mondo di internet consigliano sempre di utilizzare il forum per porre le proprie domande, non esito a farlo per questa:)
Vedo un sacco di video tutorial in cui la gente utilizza dei sensori che restituiscono i loro valori su dei pin Digital o controlla in maniera flessibile (invia dati a un display lcd ad esempio) questi
Mi sembra di aver capito che esistono quindi due tipi di sensori, digitali e analogici, e sugli analogici ci sono (mi sono ambientato un po con un sensore di temperatura, dei fotoresistori etc), ma i digitali? come è possibile leggere i valori su dei pin che (da quel che ho capito) possono solo esse HIGH o LOW?
Si usano quelli PWM?
Che valore restituiscono i pin digitali?
Scusate il post lungo, grazie mille in anticipo a tutti!
Chiedo scusa se magari è la sezione sbagliata!
Sensori digitali danno un valore in forma di un dato digitale. Hanno un interfaccia tramite il quale possono essere programmati/impostati e letti. La lettura del dato nel sensore puó avvenire in modo analogico e trasformato all' interno in un valore digitale con un convertitore analogico digitale. Le modalitá di interfacciamneto e funzionalitá dipende dal sensore: esempio piú semplice un RTC (orolpgio real time) Tu puoi leggere i secondi, minuti ecc.
Un interfaccia digitale puó essere anche un segnale di frequenza variabile, PWM o una durata di un impulso.
PWM é un segnale di frequenza fissa dove il rapporto HIGH / LOW cambia e percui la media aritmetica cambia.
I potenziali (tensioni) di una uscita digitale é ca 0V LOW e ca 5V HIGH (con alimentazione 5V).
In un entrata i valori tra 0V e 1,5V vengono riconosciuti LOW e tra 3V e 5V coem HIGH (sempre con 5V di alimentazione)
uwefed:
Sensori digitali danno un valore in forma di un dato digitale. Hanno un interfaccia tramite il quale possono essere programmati/impostati e letti. La lettura del dato nel sensore puó avvenire in modo analogico e trasformato all' interno in un valore digitale con un convertitore analogico digitale. Le modalitá di interfacciamneto e funzionalitá dipende dal sensore: esempio piú semplice un RTC (orolpgio real time) Tu puoi leggere i secondi, minuti ecc.
Grazie per la risposta Uwe!
Però in che modo possono essere letti? Faccio un esempio, se io ho un sensore di temperatura digitale, in quale modo otterrò il valore se il valore del PIN può solo essere HIGH o LOW? Cioè, io avrò magari in ingresso una tensione variabile da 0V a 5V, ma se il PIN riconosce solo HIGH e LOW come faccio a leggere il valore del termometro?
Con l'Analogico è facile, il valore va da 0 a 1023 e con una semplice operazione matematica ottengo facilmente la mia temperatura:
#DEFINE pinTermometro A3
int temperatura;
int val;
val = analogRead(pinTermometro)
temperatura = (5.0 * temperatura * 100)/1024
Come faccio ad applicare lo stesso concetto con un sensore digitale ed un pin digitale settato come INPUT?
Credo sia l'unico modo che ho per capire come funzionano questi pin, è davvero un mistero per me..
Revengeic3:
Però in che modo possono essere letti? Faccio un esempio, se io ho un sensore di temperatura digitale, in quale modo otterrò il valore se il valore del PIN può solo essere HIGH o LOW?
... molto semplicemente con una "trasmissione seriale" dei vari bit, inviati in sequenza, uno dopo l'altro, secondo precise temporizzazioni.
gpb01:
... molto semplicemente con una "trasmissione seriale" dei vari bit, inviati in sequenza, uno dopo l'altro, secondo precise temporizzazioni.
Guglielmo
Ciao gpb01, grazie per la risposta.
Quindi con un Serial.Begin (esempio molto confuso) su quel pin?
Potresti per favore linkarmi una documentazione o qualcosa di simile sull'argomento se ne conosci una? O spiegarmi un attimo in breve..
NO, non usi la Serial ... quella è per le vere "trasmissioni seriali" che seguono un determinato standard. Questi sensori implementano un LORO standard ...
... Il DS18B20 è un esempio, e, se ti studi il suo datasheet, vedi come funziona. In particolare, se guardi a pagina 15, trovi le informazioni sulle temporizzazioni.
Non è esattamente cosa per "iniziandi" ...
... occorre saper gestire bene i timer, i pin di I/O e tutto il resto
Consideriamo il classico sensore di temperatura digitale DS18B20.
Usa una speciale forma di comunicazione One Wire che, come dice la parola, usa lo stesso pin di comunicazione sia per ricevere comandi che per trasmettere la temperatura.
Per facilitare il compito di stesura del programma, si adottano delle particolari librerie specifiche per questo tipo di sensore.
... immagina che io ti debba inviare 4 bit ... ci mettiamo d'accordo ed io ti dico che:
normalmente il pin è HIGH
ti avviserò che inizio a trasmettere portando il pin LOW per 1 secondo
successivamente, ogni secondo, metterò il pin HIGH o LOW a seconda del bit che ti debbo inviare
Tu leggerai in continuazione un determinato pin, quando vedrai che diventa LOW ti sincronizzerai con un orologio (un timer) e, ogni secondo leggerai come è il pin ... ricostruendo così i 4 bit
Più chiaro così ?
Guglielmo
P.S.: Ovviamente, nella realtà, i tempi sono molto più brevi
gpb01:
... immagina che io ti debba inviare 4 bit ... ci mettiamo d'accordo ed io ti dico che:
normalmente il pin è HIGH
ti avviserò che inizio a trasmettere portando il pin LOW per 1 secondo
successivamente, ogni secondo, metterò il pin HIGH o LOW a seconda del bit che ti debbo inviare
Tu leggerai in continuazione un determinato pin, quando vedrai che diventa LOW ti sincronizzerai con un orologio (un timer) e, ogni secondo leggerai come è il pin ... ricostruendo così i 4 bit
Più chiaro così ?
Guglielmo
P.S.: Ovviamente, nella realtà, i tempi sono molto più brevi
Grazie ad entrambi per le risposte, ora mi è un pochino più chiaro! Effettivamente però i pin analogici sono un po più comodi, o sbaglio?
Potreste mettermi per caso un esempio di codice? O linkarmi un tutorial da qualche parte cortesemente? Almeno vedo un po com'è la pratica:)
Revengeic3:
Potreste mettermi per caso un esempio di codice? O linkarmi un tutorial da qualche parte cortesemente? Almeno vedo un po com'è la pratica:)
Basta fare una piccola ricerca con Google ... studia QUI.
gpb01:
Basta fare una piccola ricerca con Google ... studia QUI.
Guglielmo
Grazie mille, vedrò anche quello!
Ho appena acquistato la seconda edizione del libro di Massimo Banzi, la guida ufficiale, cercherò di trarre qualcosa di utile anche da li:) grazie mille a tutti ragazzi!!