¿Que es la comunicación serial?
La comunicación serial consiste en el envio de un bit de informacion por vez, por eso es serial, y se realiza a un cierto ritmo acordado entre el emisor y receptor.
Este ritmo es conocido como "baud rate" , que es la cantidad de baudios por segundo que manejará nuestro puerto serie. El baudio es una unidad de medida que representa la cantidad de simbolos por segundo en un medio de transmision analógico.
Para que arduino se comunique con tu computadora, necesita una especie de traductor que transforme esta señal. Arduino usa el integrado FT232R, que es un conversor Serial - USB.
En el programa o Sketch no es necesario incluir la libreria Serial al principio. Solo se debe iniciar la comunicación en el bloque de setup con el comando Serial.begin(baud rate);.
Luego de eso, en el bloque loop(), podemos usar las distintas funciones incluidas en la librería Serial, que a continuación se describen.
write()
Escribe datos en forma de bytes o series de bytes y los envía por el puerto serie. Su sintaxis, o la forma de insertar esta función dentro de tu código es la siguiente:
Serial.write(dato_a_enviar);
Serial.write(dato_a_enviar);
print() y println()
A diferencia del comando anterior, la función print() y println(), Imprime datos en el puerto serie, los que pueden ser leídos desde el monitor serial incluido en el IDE de Arduino.
La diferencia entre estas dos funciones es que print(), imprime los valores seguido uno de otro. En cambio println() imprime un salto de linea al termino de cada sentencia
La sintaxis y el resultado a continuación, para poder analizar la diferencia.
Serial.print("Saludos");
Serial.print("desde");
Serial.print("ArduRobotics");
SaludosdesdeArduRobotics
Serial.println("Saludos");
Serial.println("desde");
Serial.println("ArduRobotics");
Saludos
desde
ArduRobotics
Ademas, la funcion print() puede imprimir en distintos formatos que son especificados en el segundo argumento de la función quedando la sintaxis como sigue:
Serial.print(dato,FORMATO);
Las opciones para FORMATO son:
BIN: formato binario, base 2
OCT: formato octal, base 8
DEC: formato decimal, base 10
HEX: formato hexdecimal, base 16
Carga en tu Arduino el siguiente código y podrás ver el valor que entrega la función print() con los diferentes formatos.
int entrada = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if(Serial.available()>0)
{
entrada = Serial.read();
Serial.print("Formato Binario: ");
Serial.println(entrada,BIN);
Serial.print("Fomato Octal: ");
Serial.println(entrada,OCT);
Serial.print("Formato Decimal: ");
Serial.println(entrada,DEC);
Serial.print("Formato Hexadecimal: ");
Serial.println(entrada,HEX);
Serial.println("**************************");
}
}
La diferencia entre estas dos funciones es que print(), imprime los valores seguido uno de otro. En cambio println() imprime un salto de linea al termino de cada sentencia
La sintaxis y el resultado a continuación, para poder analizar la diferencia.
Serial.print("Saludos");
Serial.print("desde");
Serial.print("ArduRobotics");
SaludosdesdeArduRobotics
Serial.println("Saludos");
Serial.println("desde");
Serial.println("ArduRobotics");
Saludos
desde
ArduRobotics
Ademas, la funcion print() puede imprimir en distintos formatos que son especificados en el segundo argumento de la función quedando la sintaxis como sigue:
Serial.print(dato,FORMATO);
Las opciones para FORMATO son:
BIN: formato binario, base 2
OCT: formato octal, base 8
DEC: formato decimal, base 10
HEX: formato hexdecimal, base 16
Carga en tu Arduino el siguiente código y podrás ver el valor que entrega la función print() con los diferentes formatos.
int entrada = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
if(Serial.available()>0)
{
entrada = Serial.read();
Serial.print("Formato Binario: ");
Serial.println(entrada,BIN);
Serial.print("Fomato Octal: ");
Serial.println(entrada,OCT);
Serial.print("Formato Decimal: ");
Serial.println(entrada,DEC);
Serial.print("Formato Hexadecimal: ");
Serial.println(entrada,HEX);
Serial.println("**************************");
}
}
read()
La función read lee los datos que se escriban en el puerto serie, si se hace un programa en el que el usuario tenga que ingresar información, este comando haría posible leer y luego procesar el ingreso de información, por ejemplo desde teclado.
También se puede usar una variable para almacenar el dato que se lea desde el puerto serial.
Si se analiza el código anterior se puede ver que se usa Serial.read() para leer lo que se ingresa por el teclado y se guarda en la variable 'entrada'.
La función read lee los datos que se escriban en el puerto serie, si se hace un programa en el que el usuario tenga que ingresar información, este comando haría posible leer y luego procesar el ingreso de información, por ejemplo desde teclado.
También se puede usar una variable para almacenar el dato que se lea desde el puerto serial.
Si se analiza el código anterior se puede ver que se usa Serial.read() para leer lo que se ingresa por el teclado y se guarda en la variable 'entrada'.
available()
Esta función devuelve el numero de bytes disponibles para lectura, o sea, que si es mayor que cero es por que hay datos disponibles para lectura. Estos bytes se guardan provisoriamente en un buffer o espacio de memoria disponible para tal fin.Entonces si se quiere que un programa solo reaccione cuando hayan datos en el puerto serie, se puede usar esta función.
No hay comentarios:
Publicar un comentario