Está en la página 1de 9

Serial.

begin(rate)
Abre el puerto serie y fija la velocidad en baudios para la transmisión de datos en
serie. El valor típico de velocidad para comunicarse con el ordenador es 9600,
aunque otras velocidades pueden ser soportadas.

void setup()

{
Serial.begin(9600); // abre el Puerto serie
} // configurando la velocidad en 9600 bps

Nota: Cuando se utiliza la comunicación serie los pines digitales 0 (RX) y 1 (TX)
no pueden utilizarse para otros propósitos.

Serial.println(data)
Imprime los datos en el puerto serie, seguido por un retorno de carro y salto de
línea. Este comando toma la misma forma que Serial.print (), pero es más fácil
para la lectura de los datos en el Monitor Serie del software.

Serial.println(analogValue); // envía el valor 'analogValue' al puerto

Nota: Para obtener más información sobre las distintas posibilidades de


Serial.println() y Serial.print() puede consultarse el sitio web de Arduino.

El siguiente ejemplo toma de una lectura analógica del pin 0 y envía estos datos
al ordenador cada segundo.

void setup()
{
Serial.begin(9600); // configura el puerto serie a 9600bps
}

void loop()
{
Serial.println(analogRead(0)); // envía valor analógico
delay(1000); // espera 1 segundo
}

Serial.println(data, data type)


Vuelca o envía un número o una cadena de carateres al puerto serie, seguido de
un caracter de retorno de carro "CR" (ASCII 13, or '\r')y un caracter de salto de
línea "LF"(ASCII 10, or '\n'). Toma la misma forma que el comando
Serial.print()

Serial.println(b) vuelca o envía el valor de b como un número decimal en


caracteres ASCII seguido de "CR" y "LF".

Serial.println(b, DEC) vuelca o envía el valor de b como un número decimal en


caracteres ASCII seguido de "CR" y "LF".

Serial.println(b, HEX) vuelca o envía el valor de b como un número hexdecimal


en caracteres ASCII seguido de "CR" y "LF".

Serial.println(b, OCT) vuelca o envía el valor de b como un número octal en


caracteres ASCII seguido de "CR" y "LF".

Serial.println(b, BIN) vuelca o envía el valor de b como un número binario en


caracteres ASCII seguido de "CR" y "LF".

Serial.print(b, BYTE) vuelca o envía el valor de b como un byteseguido de "CR"


y "LF".

Serial.println(str) vuelca o envía la cadena de caracteres como una cadena ASCII


seguido de "CR" y "LF".
Serial.println() sólo vuelca o envía "CR" y "LF".

Serial.print(data, data type)


Vuelca o envía un número o una cadena de carateres, al puerto serie. Dicho
comando puede tomar diferentes formas, dependiendo de los parámetros que
utilicemos para definir el formato de volcado de los números.

Parámetros

data: el número o la cadena de caracteres a volcar o enviar.

data type: determina el formato de salida de los valores numéricos (decimal,


octal, binario, etc...) DEC, OCT, BIN, HEX, BYTE.

Ejemplos

Serial.print(b)

Vuelca o envía el valor de b como un número decimal en caracteres ASCII.

int b = 79; Serial.print(b); // envía "79".

Serial.print(b, DEC)

Vuelca o envía el valor de b como un número decimal en caracteres ASCII.

int b = 79;
Serial.print(b, DEC); // envía "79".

Serial.print(b, HEX)
Vuelca o envía el valor de b como un número hexdecimal en caracteres ASCII.

int b = 79;
Serial.print(b, HEX); // envía "4F".

Serial.print(b, OCT)

Vuelca o envía el valor de b como un número octal en caracteres ASCII.

int b = 79;
Serial.print(b, OCT); // envía "117".

Serial.print(b, BIN)

Vuelca o envía el valor de b como un número binario en caracteres ASCII.

int b = 79;
Serial.print(b, BIN); // envía "1001111".

Serial.print(b, BYTE)

Vuelca o envía el valor de b como un byte.

int b = 79;
Serial.print(b, BYTE); // Devuelve el caracter 'O', el cual representa el caracter ASCII del valor 79. (Ver tabla
ASCII ).

Serial.print(str)

Vuelca o envía la cadena de caracteres como una cadena ASCII.

Serial.print("Hello World!"); // envía "Hello World!".

Serial.avaible()
int Serial.available()
Devuelve un entero con el número de bytes (carácteres) disponibles para leer
desde el buffer serie, ó 0 si no hay ninguno. Si hay algún dato
disponible, SerialAvailable() será mayor que 0. El buffer serie puede almacenar
como máximo 128 bytes.

Ejemplo

int incomingByte = 0; // almacena el dato serie


void setup() {
Serial.begin(9600); // abre el puerto serie, y le asigna la velocidad de 9600 bps
}
void loop() {
// envía datos sólo si los recibe:
if (Serial.available() > 0) {
// lee el byte de entrada:
incomingByte = Serial.read();
//lo vuelca a pantalla
Serial.print("He recibido: "); Serial.println(incomingByte, DEC);
}
}

Serial.Read()
int Serial.Read()

Lee o captura un byte (carácter) desde el puerto serie. Devuelve :El siguiente
byte (carácter) desde el puerto serie, ó -1 si no hay ninguno.

Ejemplo

int incomingByte = 0; // almacenar el dato serie


void setup() {
Serial.begin(9600); // abre el puerto serie,y le asigna la velocidad de 9600 bps
}
void loop() {
// envía datos sólo si los recibe:
if (Serial.available() > 0) {
// lee el byte de entrada:
incomingByte = Serial.read();
//lo vuelca a pantalla
Serial.print("He recibido: "); Serial.println(incomingByte, DEC);
}
}
El artuiculo anterior fue sacado de la pagina de arduino
Arduino y la comunicación serie: librería Serial

Todas las placas de Arduino disponen de al menos un puerto serie, que permite la
comunicación con un ordenador o con otros dispositivos haciendo uso de esta interfaz. Los
pines que se usan para la comunicación por puerto serie vienen marcados en la placa con las
siglas RX y TX, que corresponden al pin por el que se enviarán los datos, y al pin por el que se
recibirán los datos respectivamente.

En el caso que nos ocupa, usaremos el puerto serie no para comunicarnos con un
ordenador, sino para poder comunicarnos con determinados sensores. En este epígrafe se
expondrán las funciones necesarias para establecer la comunicación e intercambiar datos, y
en el capítulo cuarto se verán ejemplos de sensores conectados por el puerto serie.

Conexiones

Como se ha comentado en la introducción de este epígrafe, se van a usar los pines TX y RX


de la placa de Arduino. En las pruebas realizadas se ha usado la placa “Arduino Mega 2560”, la
cual dispone de 8 pines destinados para ello, en lugar de los 2 de los que disponen el resto de
placas. Estos pines vienen marcados en la placa y son las siguientes parejas (0,1), (14,15),
(16,17), (18,19) y (20,21).

Para un correcto funcionamiento, se debe conectar el pin de recepción de la placa (RX) al


pin de transmisión del dispositivo externo, y el pin de transmisión de la placa (TX) al pin de
recepción de dicho dispositivo. Además, para comunicar el sistema de desarrollo con un
dispositivo TTL es necesario conectar las tierras entre ellas.

Principales funciones

Las principales funciones usadas en la comunicación por puerto serie vienen incluidas en
la librería Serial() y son las siguientes:

 Serial.begin(velocidad). Establece la velocidad en bits por segundo (baudios) para la


transmisión de datos en serie. El parámetro velocidad se puede configurar con el valor que se
desee para comunicarse con un dispositivo externo (hasta un máximo de 115200 baudios),
sin embargo si la comunicación por puerto serie va a ser con un ordenador, se deberá elegir
una de las siguientes: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o
115200.
 Serial.end(). Desactiva la comunicación serie, permitiendo que los pines de recepción
y transmisión puedan ser usados como pines de entrada / salida digitales. Si se desee
reanudar la comunicación serie, se deberá invocar nuevamente Serial.begin().
 Serial.available(). Devuelve, ecomo entero, el número de bytes (caracteres)
disponibles para ser leídos por el puerto serie. Se refiere a datos ya recibidos y disponibles en
el buffer de recepción del puerto, cuya capacidad es de 128 bytes. En el caso de Arduino Mega,
existen además las funciones Serial1.available(), Serial2.available() y Serial3.available().
 Serial.read(). Lee los datos entrantes al puerto serie. Devuelve como entero el primer
byte disponible recibido por el puerto serie, o -1 si no hay datos disponibles. Al igual que en el
caso anterior, para la placa Arduino Mega existen también las funciones Serial1.read(),
Serial2.read() y Serial3.read().
 Serial.flush(). Vacía el buffer de la entrada de datos serie. Esto quiere decir que si se
llama a la función Serial.read() o Serial.available(), estas sólo devolverán los datos recibidos
después de que se haya realizado esta llamada. No requiere parámetros ni devuelve nada.
Para la placa Arduino Mega existen disponibles las llamadas Serial1.flush(), Serial2.flush() y
Serial3.flush() además de la principal.
 Serial.print(valor, formato). Esta función imprime los datos al puerto serie como
texto ASCII. El primer parámetro, valor, es el propio valor que se desea imprimir. Esto se
podrá realizar de distintas formas:
 Los números son impresos mediante un juego de caracteres ASCII para cada
dígito.
 Los valores de tipo flotante (float) se imprimen en forma de dígitos ASCII con 2
decimales por defecto, es decir, si ejecutamos Serial.print(1.23456) se imprimirá “1.23”.
 Los valores de tipo “byte” se enviarán como un único carácter.
 Los caracteres y las cadenas se enviarán tal cual.
 Además, existe el segundo parámetro es opcional y permite especificar el formato que
se desea usar. Así, este parámetro puede tomar el valor BYTE, BIN (valores binarios, en base
2), DEC (valores decimales, en base 10), HEX (valores hexadecimales, en base 16). Si lo que se
está imprimiendo son números con coma flotante, este parámetro especificará el número de
decimales a usar.
 Serial.println(valor, formato). Imprime los datos al puerto serie como texto ASCII
seguido de un retorno de carro(ASCII 13 o ‘\r’) y un carácter de avance de línea (ASCII 10 o
‘\n’). Por lo demás, este comando tiene la misma forma y los mismos parámetros que
Serial.print() descrito anteriormente.
 Serial.write(). Esta función escribe datos binarios en el puerto serie. Estos se
enviarán como un byte o como una serie de bytes. Si lo que se desea es envíar los caracteres
que representan los números, es mejor usar la función Serial.print() en su lugar. Puede tomar
distintos parámetros:
 Serial.write(valor) enviará un solo byte.
 Serial.write(str) enviará una cadena como una serie de bytes.
 Serial.write(buf, len) enviará un array como una serie de bytes. El tamaño del
array se indicará en el segundo parámetro.
Not all pins on the Mega and Mega 2560 support change interrupts,
so only the following can be used for RX:
10, 11, 12, 13, 50, 51, 52, 53, 62, 63, 64, 65, 66, 67, 68, 69
Not all pins on the Leonardo support change interrupts,
so only the following can be used for RX:
8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

También podría gustarte