Go Down

Topic: puerto serie ... varios datos. (Read 1 time) previous topic - next topic

adrycapy

he estado buscando po aki ,pero me encuntro con muxisimos problemas! en el puerto serie, los problemas llegan cuando leo los datos , es decir el Serial.read(), si envio un valor! todo va bien, el problema es k cuando kiero enviar varios es decir:
tegno varios variables por ejemplo , int x,int y ..... y el arduino los leeria,pero como ago esto ? todos los ejemplo envian un solo dato /letra etc,  como ago para recibir varios valores :( gracias de antemano...

chiva

#1
Sep 02, 2010, 02:05 pm Last Edit: Sep 02, 2010, 02:07 pm by chiva Reason: 1
Leyendo varias veces el puertos serie para ir tomando uno a uno cada dato/valor

Si envías 'Hola' lees 1 vez 'H', luego lees otra vez y coges la 'o', luego la 'l' y luego la 'a' y los vas guardando done quieras.

Aunque buscar un poco tampoco hace daño, si pones en google 'send string to arduino' el primer resultado hace referencia a un post de este mismo foro donde se resuelve tu duda.
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

adrycapy

mmm si ,pero nucan encuentro lo de enviar enteros! o mejor aun floats,por ejemplo:
processing:
Code: [Select]
import processing.serial.*;


int val=0;
int val1=0;

Serial puerto;
void setup(){
 size(400,400);
 puerto= new Serial(this,"COM25",9600);
}

void draw(){
 if (puerto.available()>0){
 val=puerto.read();
val1=puerto.read();}
 println(val);
 println(val1);
}

arduino:
Code: [Select]
void setup(){
 Serial.begin(9600);
}
void loop(){
 Serial.print(5);
 Serial.print(200);
 delay(10);
}

por ejmplo esto,pero no me lo lee bien! nunca! como he de hacerlo!pongamnelo si es posible  :)

chiva

¿Por qué dices que no te lo lee bien nunca? ¿Qué es lo que te sale?
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

adrycapy

en ese caso me sale siempre k las variables toman valores , 48,53 ?¿?¿?¿  

chiva

Esos valores son correctos, lo que pasa es que has supuesto que los datos se mandan de una forma cuando es de otra.
http://www.arduino.cc/es/Serial/Print

Los números se mandan dígito a dígito convertido cada uno de ellos a ASCII, por lo que luego te tocará convertirlo otra vez a decimal (simplemente restándoles '0' o 48) y juntar los números para volver a tener el original.

53 es el código ASCII del número entero 5, échale un vistazo a una tabla ASCII.
Y el 48 es un 0, pero no se muy bien por qué sale.

Un saludo
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Go Up