Unificador de números por Serial para Arduino
No sé si os habrá pasado, pero al utilizar la función Serial.read() de Arduino, si se envÃa un 56 no se envÃa un 56 como tal, sino un 5 y un 6, que no es lo mismo. Es decir, que en vez de enviar un sólo número de dos dÃgitos, se envÃan dos números de un dÃgito. Para solucionarlo, he escrito este pequeño programa que permite unificar los números, algo útil para usarlo, por ejemplo, con servomotores:
julio 24th, 2010 at 17:27
Solamente cabe decir excepcionalmente ese producto…fantastico…
septiembre 27th, 2013 at 5:57
Oye no tendras uno para 12 digitos????
octubre 5th, 2013 at 21:07
Me temo que no! Pero se me acaba de ocurrir que tal vez te sirva algún trozo de este código, en concreto la parte de transmisión de datos vÃa Serial! https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-8/recipe-8-14
octubre 16th, 2013 at 6:19
me gusto y sirvio mucho tu codigo y le hice una modificacion solo para numeros de 1, 2 o 3 digitos… pero tanto positivos como negativos… pruebalo “para ver todos los parametro hay que descomentarlos xq como esta solo t dice q mandaste”
int i = 0; //variable de acarreo, utilizada con el array
int digitos = 0; //número de dÃgitos del número escrito
int numero = 0; //el número que hemos escrito
const int maxDigitos = 4; //Máximo de dÃgitos del número
int num[maxDigitos]; //array con los dÃgitos de nuestro número
void setup()
{
Serial.begin(9600); //Iniciamos el Serial
}
void loop()
{
digitos = 0;
numero = 0;
/*Primero, se comprueba que el Serial esté disponible. Si es asÃ,
al enviar un número al Arduino desde el ordenador, se almacenarán
los dÃgitos individuales en las variables num[]. Además, muestra el
valor de los dÃgitos en el ordenador.
Hay que restar 48, ya que los números son enviados en formato ASCII
*/
if (Serial.available() > 0)
{
for (i = 0; i < maxDigitos; i++)
{
num[i] = Serial.read();
num[i] = num[i] – 48;
//Serial.print(i);
//Serial.print(" = ");
//Serial.println(num[i]);
delay(10);
}
/*Determinamos los dÃgitos del número. En todas las variables
del array se almacena información, siendo un -49 si no contiene
un número. Por tanto, se cuentan las variables num[] con contenido
diferente de -49, y se pasa el resultado a la variable digitos*/
for (i = 0; i = 0 && digitos == 3)
{
numero = (num[0]*100) + (num[1]*10) + num[2];
}
if (num[0] = 0 && digitos == 2)
{
numero = (num[0]*10) + num[1];
}
if (num[0] = 0 && digitos == 1)
{
numero = num[0];
}
if (num[0] < 0 && digitos == 2)
{
numero = (num[1])*(-1);
}
Serial.print("mandaste = ");
Serial.println(numero);
}
}