SISTEMAS DE AUTOMATIZACIÓN Y CONTROL ORIENTADO AL CONOCIMIENTO Y APLICACIÓN DE LOS SISTEMAS EMBEBIDOS SESION 04 José Luis Albites Sanabria MSc. Biomedical Engineering Brown University, USA correo: jose.albsab@gmail.com Celular: 982890844 SESIÓN 01
¿Por qué nos comunicamos?
COMUNICACIÓN SERIAL La comunicación serial envía información mediante una secuencia de bits. Para ello se necesitan al menos dos conectores para realizar la comunicación de datos, RX (recepción) y TX (transmisión). Todas las placas Arduino disponen al menos de un puerto serie (conocido también como UART o USART). Las placas Arduino UNO disponen de un puerto serie que opera a nivel TTL 0V/ 5V, por lo que son directamente compatibles con la conexión USB. Los pines empleados para la comunicación serial en el arduino son: 0 (RX) y 1 (TX). Mientras estemos haciendo comunicación serial no podemos usar estos pines como entradas o salidas digitales.
COMANDOS COMUNICACIÓN SERIAL Serial.begin(rate): Abre un Puerto serie y especifica la velocidad de transmisión. La velocidad típica para comunicación con el ordenador es de 9600 aunque se pueden soportar otras velocidades. void setup(){ Serial.begin(9600); // abre el Puerto serie } // configurando la velocidad en 9600 bps Serial.available(): Devuelve el número de caracteres disponibles para leer desde el puerto serie. El buffer del puerto puede almacenar como máximo 128 bytes. void loop() { if (Serial.available() > 0) {// pregunta si hay dato disponible }
COMANDOS COMUNICACIÓN SERIAL Serial.read(): Lee o captura un byte (carácter) desde el puerto serie. Devuelve -1 si no hay ninguno. void loop() { if (Serial.available() > 0) { // Pregunta si hay dato disponible dato = Serial.read(); // Lee el dato disponible } Serial.println(data,data type): Imprime o envía un número o una cadena de caracteres al puerto serie, seguido por un retorno de carro y salto de línea (CR y LF). Serial.print(data,data type): Al igual que el anterior imprime o envía un número o una cadena de caracteres al puerto serie, pero sin salto de línea.
TIPOS DE DATOS A ENVIAR Serial.print(n) Envía el valor de n como un número decimal en caracteres ASCII. int n = 20; Serial.print(b); // envía “20". Serial.print(n, DEC) Envia el valor de n como un número decimal en caracteres ASCII. int n = 20; Serial.print(n, DEC); // envía “20". Serial.print(n, HEX) Vuelca o envía el valor de b como un número hexadecimal en caracteres ASCII. int n = 20; Serial.print(n, HEX); // envía “14".
TIPOS DE DATOS A ENVIAR Serial.print(n, OCT) Envía el valor de n como un número octal en caracteres ASCII. int n = 20; Serial.print(n, OCT); // envía “24". Serial.print(n, BIN) Envía el valor de n como un número binario en caracteres ASCII. int n = 20; Serial.print(n, BIN); // envía “10100".
TIPOS DE DATOS A ENVIAR Serial.print(n, BYTE) Envía el valor de n como un byte. int n = 48; Serial.print(n, BYTE); // Devuelve caracter ASCII del valor 48 Serial.print(str) Envía la cadena de caracteres como una cadena ASCII. Serial.print(“Hola!"); // envía “Hola!" Los tipos de datos usados para Serial.println() son los mismos, pero se le adiciona su retorno de carro y salto de línea (CR y LF)
IMPRIMIR “HOLA MUNDO” POR EL PUERTO SERIE EXPERIENCIA 1 IMPRIMIR “HOLA MUNDO” POR EL PUERTO SERIE DESCRIPCIÓN. En esta experiencia se aprenderá a usar el puerto Serial presente en el arduino. Se realizará una "comunicación serial" solo de "lectura", por lo tanto el arduino enviará un mensaje que el usuario leerá a través del "Monitor Serial".
EXPERIENCIA 1
EXPERIENCIA 1
ABRIR EL PUERTO SERIE
IMPRIMIR LOS ESTADOS DE UN LDR EXPERIENCIA 2 IMPRIMIR LOS ESTADOS DE UN LDR DESCRIPCIÓN. Gracias a la comunicación serial, podemos conocer el estado de las salidas o entradas del arduino. En esta experiencia se leerá el estado del sensor LDR (AI) y será mostrado al usuario a través del "Monitor Serial", además de observar que existen diferentes maneras de imprimir la información (ASCII, decimal, hexadecimal, binaria).
EXPERIENCIA 2 MATERIALES: 1 resistencia 10k. 3 Jumpers. 1 LDR.
EXPERIENCIA 2
¿Qué aprendimos en la cuarta sesión?