Tengo una placa arduino, un potenciometro y el modulo ethernet para arduino.
Lo que quiero conseguir: con el modulo ethernet enviar el valor del potenciometro.
Lo que me pasa: desde el cliente telnet me llegan datos de arduino, pero son caracteres, investigando me di cuenta que server.write() requiere de un dato tipo char o byte. y me envia la consersion ASCII.
Alguien sabe como obtener ese datoo de tipo integer????
Si lo que quieres es enviar un entero tienes que convertirlo a lo que entiende Server.write().
Fíjate que la librería Serial si que permite enviar enteros por el puerto serie, para ello va dividiendo entre diez y almacenando en una array de bytes.
void SoftwareSerial::printNumber(unsigned long n, uint8_t base)
{
unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars.
unsigned long i = 0;
if (n == 0) {
print('0');
return;
}
while (n > 0) {
buf[i++] = n % base;
n /= base;
}
for (; i > 0; i--)
print((char) (buf[i - 1] < 10 ? '0' + buf[i - 1] : 'A' + buf[i - 1] - 10));
}
Se puede usar en tu caso de la siguiente manera:
void imprimeEntero(int dato)
{
//Variables auxiliares, un contador y el array de char
unsigned char buf[8 +sizeof(int)];
unsigned long i=0;
//Primero mirar si es negativo
if (dato<0){
server.write('-');
dato = -dato;
}
if (dato==0){
server.write('0');
return;
}
while (dato > 0) {
buff[i++] = n % 10; //el resto de dividir entre 10;
dato = dato / 10;
}
//y ahora lo sacamos todo de golpe
for(; i>0; i--){
server.write((char) (buf[i-1]+'0'));
}
}
Añade esto antes del loop() y cambia server.write(valPote1); por imprimeEntero(valPote1);