Funciones de comunicación serial

  0 comentarios

Se utilizan para la comunicación entre la placa Arduino y un ordenador u otro dispositivo. Las placas Arduino se comunican por los pines digitales 0 (RX) y 1 (TX), así como con el ordenador mediante la conexión USB. Por lo tanto, si utiliza estas funciones, no puede usar los pines 0 y 1 para entrada o salida digital.

Pines digitales para la comunicación de dispositivos con la placa Arduino UNO
Pines digitales para la comunicación de dispositivos con la placa Arduino UNO

Se puede utilizar el monitor del puerto serie incorporado en el entorno de Arduino para comunicarse con la placa Arduino. Haga clic en el botón de monitor del puerto serie en la barra de herramientas y seleccione la misma velocidad utilizada en la llamada a Serial.begin().

Serial.begin()

Establece la velocidad de transmisión de datos en bits por segundo (baudios) para la transmisión de datos serie. Para comunicarse con el ordenador, suele utilizarse 9600 baudios. Como abre el canal serie para que pueda comenzar la comunicación, su ejecución se realiza antes de cualquier transmisión, por lo que normamente se escribe dentro de la sección void setup().

Sintaxis

Serial.begin(speed)
Serial.begin(speed, config)

Ejemplo

void setup() {
  Serial.begin (9600); // abre el puerto serie, establece la velocidad de datos a 9600 bps
}
void loop() {}

Serial.end()

Desactiva la comunicación serie, permitiendo a los pines 0 (RX) y 1 (TX) ser utilizados como entradas o salidas digitales. Para volver a habilitar la comunicación en serie, se llama a Serial.begin(). La función Serial.end() no lleva ningún parámetro.

Sintaxis

Serial.end()

Serial.print()

Envía a través del canal serie un dato desde el microcontrolador hacia el exterior. Ese dato puede ser de cualquier tipo: caracter, cadena, número entero, número decimal (por defecto de dos decimales), etc.

Sintaxis

Serial.print(valor)
Serial.print(valor, formato)

Parámetros

valor: es el valor a imprimir (cualquier tipo de dato)

formato: especifica la base numérica (para tipos de datos int) o el número de decimales (para tipos float)

Ejemplos

void setup() {
  Serial.begin(9600);
}
void loop() {
  // print labels
  Serial.print("NO FORMAT");  // imprime una etiqueta
  Serial.print("\t");         // salto de línea

  Serial.print("DEC");
  Serial.print("\t");

  Serial.print("HEX");
  Serial.print("\t");

  Serial.print("OCT");
  Serial.print("\t");

  Serial.print("BIN");
  Serial.println();        // salto de línea tras la ultima etiqueta

  for (int x = 0; x < 64; x++) { 
    // Diferentes formatos de impresión:
    Serial.print(x);       // ASCII-encoded decimal - igual que "DEC"
    Serial.print("\t\t");  // imprime 2 tabulaciones

    Serial.print(x, DEC);  // ASCII-encoded decimal
    Serial.print("\t");    // imprime 1 tabulación

    Serial.print(x, HEX);  // ASCII-encoded hexadecimal
    Serial.print("\t");    // imprime 1 tabulación

    Serial.print(x, OCT);  // ASCII-encoded octal
    Serial.print("\t");    // imprime 1 tabulación

    Serial.println(x, BIN);  // ASCII-encoded binary
    // añade un salto de línea con "println"
    delay(200);            // espera 200 milliseconds
  }
  Serial.println();        // añade otro salto de línea
}

Serial.println()

Realiza la misma función que Serial.print(), pero además, añade automáticamente al final de los datos enviados dos caracteres extra: retorno de carro (código ASCII nº 13) y nueva línea (código ASCII nº 10).

Sintaxis

Serial.println(valor)
Serial.println(val, format)

Parámetros

valor: es el valor a imprimir (cualquier tipo de dato)

formato: especifica la base numérica (para tipos de datos int) o el número de decimales (para tipos float)

serial.parseInt()

Lee del buffer de entrada todos los datos hasta que se encuentre con un número entero (eliminándolos segun los lee). El valor de retorno será entonces ese número entero. Cuando detecte el primer caracter posterior no válido, dejará de leer (y por tanto, no seguirá eliminando datos).

Sintaxis

Serial.parseInt()

Ejemplo

void loop(){
  int x;
  if (Serial.available() > 0){
     x = Serial.parseInt();
     Serial.println(x) ;
  }
}

Este código simplemente recibe en x los datos que nos tecleen en la consola, cuando pulsemos intro, y si estos son enteros los almacena en x y si es un texto, lo interpreta como cero.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*
*