leggere valore char

ciao,

è possibile leggere il valore scritto in una variabile char e trasferirlo in una variabile int?

Usa il casting (http://it.wikipedia.org/wiki/Casting_(programmazione))

http://arduino.cc/en/Reference/Cast

x = (int) char_variable

o equivalentemente con

x = int( char_variable)

Prova a vedere se funziona. Se ha un comportamento anomalo occhio che il char è un tipo di dato con segno -128 to 127 (http://arduino.cc/en/Reference/Char)

Albano

Certo di interpretare..

vuoi per caso trasformare il carattere ascii "2" nel numero intero 2 ?

perche in quel caso fai

valoreIntero = carattereAscii - '0';

sottraendo al codice ASCII il codice dello 0 ottieni l'equivalente intero

massimo

grazie delle risposte

vi spiego cosa dovrei fare:
devo memorizzare nella eeprom un valore compreso tra 0 e 65536
e avevo pensato di dividerlo in 2 o tre gruppi e poi ricomporlo mentre lo leggo… so che è un po laborioso esiste qualcosa di più facile o veloce?

La eeprom va a bytes e i valori che intendi tu sono unsigned int perciò li devi spezzare in due

eccoti il codice, diciamo che vale una pinta :)

devi modificare gli int in unsigned int (oppure u16_t che è uno dei tipi gia definiti) int arriva solo a 32767

// store a 2 byte value in EEPROM void storeValue(int address, int value) { byte h,l; l = value; h = value >> 8; EEPROM.write(address*2,l); EEPROM.write((address*2)+1,h); }

// read 2 byte value from eeprom int readValue(int address) { byte h,l; int value;

l = EEPROM.read(address*2); h = EEPROM.read((address*2)+1);

value = (h*256)+l;

return value; }

grazie mille!!!! :)

Curiosità.
Ma perché moltiplichi l’indirizzo per 2?

perche l'indirizzo che passi a storeValue o readValue è come un puntatore ad un array "virtuale" di words mentre la eeprom è divisa per bytes.

perciò: l'indirizzo 0 punta ai bytes 0 e 1 l'indirizzo 1 punta ai bytes 2 e 3 l'indirizzo 2 punta ai bytes 4 e 5

etc etc

si giusto, mi accorgo solo ora della banalità della domanda. in realtà pensavo già di passargli l'indirizzo sensatamente, non che lo facesse internamente (se non solo con il +1)

per quello ho detto che il codice valeva una birra... :) fa gia tutto :)