Cremona
Offline
Full Member
Karma: 2
Posts: 146
Arduino rocks
|
 |
« on: February 28, 2011, 07:03:28 am » |
C'è una funzione che mi converte un valore numerico in esadecimale a due byte ?
Grazie, Alberto
|
|
|
|
|
Logged
|
|
|
|
|
Capo d'Orlando
Offline
Sr. Member
Karma: 0
Posts: 305
Electronics & Web Dev, Unix User, Ω LEO, Rock/Deep Music, Tech/Science/Finance addicted, Ski/Snowboard and much more …
|
 |
« Reply #1 on: February 28, 2011, 07:38:47 am » |
Per caso hai a che fare con un ricevitore IR ?
|
|
|
|
|
Logged
|
|
|
|
|
Cremona
Offline
Full Member
Karma: 2
Posts: 146
Arduino rocks
|
 |
« Reply #2 on: February 28, 2011, 07:47:03 am » |
No
|
|
|
|
|
Logged
|
|
|
|
|
Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16553
Don't know what I do
|
 |
« Reply #3 on: February 28, 2011, 08:26:30 am » |
Lo puoi convertire nel formato byte basso/byte alto con lowByte() e highByte().
|
|
|
|
|
Logged
|
|
|
|
|
Cremona
Offline
Full Member
Karma: 2
Posts: 146
Arduino rocks
|
 |
« Reply #4 on: February 28, 2011, 11:07:08 am » |
Non ce la faccio  Ho googlato per un'ora ma non ci capisco una mazza. Io vorrei 'creare' una funzione che inviadole, per esempio il valore 16, mi rimandi 2 byte 49 e 48. C'è nessuno che mi regala questa funzione ? Grazie, Alberto
|
|
|
|
|
Logged
|
|
|
|
|
Rome (Italy)
Offline
Tesla Member
Karma: 74
Posts: 7382
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
|
 |
« Reply #5 on: February 28, 2011, 11:34:33 am » |
Quale sarebbe la relazione tra 16 e i numeri 49 - 48 ? Non è certo una conversione di nessun tipo tra valori. Inoltre cosa intendi esattamente con conversione in esadecimale ? Hai un valore numerico, che internamente al micro è sempre in binario (= esadecimale se preso a gruppi di 4 bit) e vuoi inviarlo sulla seriale in formato ASCII come valore esadecimale ?
|
|
|
|
|
Logged
|
|
|
|
|
Cremona
Offline
Full Member
Karma: 2
Posts: 146
Arduino rocks
|
 |
« Reply #6 on: February 28, 2011, 11:55:19 am » |
Invio 4 byte cosi:(sono gli ultimi 4)
sendMSG(48,49,5, 68,48,48,32,49,48,48,48);
e li leggo così:
data_motor = (hex2num(data[7])<<4)+(hex2num(data[8])); data_state = (hex2num(data[9])<<4)+(hex2num(data[10]));
data_motor = 16 data_state = 0
Se mando:
sendMSG(48,49,5, 68,48,48,32,49,49,48,48);
avrò:
data_motor = 17 data_state = 0
|
|
|
|
|
Logged
|
|
|
|
|
Cremona
Offline
Full Member
Karma: 2
Posts: 146
Arduino rocks
|
 |
« Reply #7 on: March 01, 2011, 12:26:55 pm » |
Boh ...... non ci sto capendo più un ..... Io vorrei solo fare una funzione che dato un numero da 1 a 99 mi ritorni un formato così:
Entro nella funzione con 10 mi ritorna 48 e 65 (BYTE1 0, BYTE2 A) Entro nella funzione con 11 mi ritorna 48 e 66 (BYTE1 0, BYTE2 B) Entro nella funzione con 12 mi ritorna 48 e 67 (BYTE1 0, BYTE2 C) Entro nella funzione con .... Entro nella funzione con 15 mi ritorna 48 e 70 (BYTE1 0, BYTE2 F)
Entro nella funzione con 16 mi ritorna 49 e 48 (BYTE1 1, BYTE2 0)
e così via.
Non so se sia corretto ma è questa cosa che non riesco a fare che mi fa andare fuori.
Grazie, Alberto
|
|
|
|
|
Logged
|
|
|
|
|
Riva del Garda, TN / Forlì
Offline
Edison Member
Karma: 7
Posts: 2082
Il piu' modesto al mondo
|
 |
« Reply #8 on: March 01, 2011, 03:30:40 pm » |
int bytea; int byteb; int cambio(int num) { switch(num) { case 10: bytea = 0x48; byteb = 0x65; break; case 11: bytea = 0x48; byteb = 0x66; break; case 12: bytea = 0x48; byteb = 0x67; break; //continua tu... } } non è ottimizzato al massimo ma dovrebbe andare... se ho capito quello che volevi  quando la chiami poi bytea e byteb assumono i 2 valori
|
|
|
|
|
Logged
|
|
|
|
|
|