Go Down

Topic: Come leggere dei Float da una seriale (Read 1 time) previous topic - next topic

ginboni

Ciao a tutti , sono qui a chiedervi aiuto  :)
ho cercato nel forum delle risposte , ma non sono riuscito a troverle  =(
qualcuno di voi mi sa dire o spiegare come un arduino uno o mega possa acquisire dei float che gli vengano inviati tramite porta seriale, nel dettaglio ho una seriale che mi invia 3 float nella stessa "stringa" e non so come estrapolarli per poi metterli in 3 variabili float distine .
:) grazie per un eventuale aiuto

leo72

La seriale trasmette 1 byte alla volta.
Quindi una variabile numerica potrebbe essere spedita come stringa (esempio "1000"), nei singoli byte che ne rappresentano il suo valore in memoria (esempio $DA56 spedito come $DA e poi $56) oppure con qualche altro sistema.
Per capire come puoi recuperare i dati devi prima capire come vengono spediti. Conosci il protocollo di trasmissione di questi numeri in virgola mobile?

ginboni

Grazie Leo per la tua risposta, io ho un sensore "9DOF Razor IMU" il quale in seriale mi fornisce questa stringa :

#YPR=11.71,-0.32,32.26

io vorrei riuscire a prelevare questi numeri e inserirli in singole variabili float

in allegato ho messo un "foto" prelevata dal serial monitor di Arduino

Io pensavo di usare la funzione "parseFloat() ", ma se ho capito bene questa funzione mi acquisirebbe solo il primo float

di nuovo grazie per il vostro aiuto :)

astrobeed


io ho un sensore "9DOF Razor IMU" il quale in seriale mi fornisce questa stringa :
#YPR=11.71,-0.32,32.26


Devi usare la funzione atof() per convertire una stringa in float e devi eseguire una scansione della stringa, byte a byte, per isolare i singoli componenti.
In pratica scansioni la stringa fino a trovare "=", da questo momento fino alla prima "," poni tutti i byte letti in una stringa temporanea di appoggio, che poi userai per la conversione, e continui così di virgola in virgola fino alla fine della stringa.

carletto

Consiglio il seguente metodo:

Numero da inviare 1234,56

Moltiplica x 100 = 123456

Invio 123456

Una volta ricevuto

123456/100 = 1234,56

Carletto

Go Up