Go Down

Topic: Leer datos del ordenador (Read 1 time) previous topic - next topic

Diegolito

Hola a todos! Tengo una duda: ¿Como puedo convertir una string a un integer en arduino?
La idea es que desde un programa externo envie una string por el puerto usb (un numero de 0a 255), arduino la recibe, la transforma en int, y la usa para dar una salida PWM.

SrDonGato

recives un caracter, y le restas "0", te dará el valor del numero en decimal. luego dependiendo de la posicion que se reciva el caracter deberas multiplicarlo por 1, 10 o 100, sumas y obtines el numero.

cuando lelgue a casa te paso el codigo que lo tengo hecho.

un saludo

Diegolito

Graaax! ^^ Espero al codigo, porque no entiendo bien a lo que te refieres :S. Soy novatillo todavia, a ver si eso cambia de una vez!

curro92

Hola,
también puedes usar la función atoi() que significa 'alphanumeric to integer'
Code: [Select]

int numero;
char cadena[10] ;

strcpy(cadena, "123"); // esto sustituye a lo que se recibe por puerto serie

numero = atoi(cadena);



Diegolito

¿Seria algo como este codigo?
Code: [Select]
int MotorPin1 = 9;
int MotorPin2 = 13;

void setup(){
  pinMode(MotorPin1, OUTPUT);
  pinMode(MotorPin2, OUTPUT);
  digitalWrite(MotorPin2, LOW);
 
  Serial.begin(9600);
}

void loop(){
  char val = Serial.read();
  int val2 = atoi(val);
  analogWrite(MotorPin1, val2);
}


Y digo parecido porque aqui me da error: invalid conversion from 'char' to 'const char', y sinceramente no entiendo a lo que se refiere..

SrDonGato

Sabía que esto ya lo habia yo respondido alguna vez.

leete http://arduino.cc/forum/index.php/topic,62153.msg450226.html#msg450226

el código no lo encuentro, pero básicamente es como escribo en una de las respuestas.

un saludo

curro92

Hola,
a atoi() hay que pasarle una cadena de caracteres, no un carácter. Primero tendrías que completar toda la cadena de dígitos recibida por el puerto serie.

Diegolito

Gracias por las respuestas, voy a tratar de aplicarlas. Si lo consigo o encuentro otra solucion la posteare aqui! ^^

Go Up