====== Uso del terminal serie virtual en Proteus y Arduino ====== {{:ico:ejr_propuesto.png?nolink|}} Contenidos - [[https://aprendiendoarduino.wordpress.com/2016/07/02/comunicacion-serie-arduino/|Comunicación Serie Arduino]] {{:ico:video.png?nolink|}} Vídeos - [[https://youtu.be/_uck3dUoEA0|Terminal virtual Proteus 8 parte 25 (10m 47s)]] - [[https://youtu.be/dPkDfYxFu7k|Monitor serial de Arduino - Entrada y salida de datos - Simulación de Arduino con Proteus (10m 21s)]] * Sirve para enviar datos de los sensores al ordenador o para enviar comandos del PC al Arduino. * También puede ser útil para depurar programas, observando el valor de ciertas variables que nos interesen. * Importante: Si la comunicación serie está activada, no se pueden usar los pines ''D0'' y ''D1'' como entradas/salidas digitales. ===== Configuración en el Proteus 8.11 ===== {{ :doc:tec:elo:uc_arduino:proteus_serie:serial_config.png?nolink |}} * Si no apareciera la ventana del terminal durante la simulación, escoger en el menú ''Depuración (Debug)'' la opción ''Virtual Terminal''. ===== Previa configuración del terminal serie ===== * En ''void setup()'' -> ''Serial.begin(9600)'', donde en este ejemplo ''9600'' es la velocidad de transmisión en baudios. ===== Envío de datos en el programa ===== * ''Serial.print("Hola Mundo");'' Envía esa frase por el terminal serie. El cursor queda en la mísma línea, al final de la frase. * ''Serial.println("Hola Mundo");'' Envía esa frase por el terminal serie y añade un retorno de línea, saltando a la siguiente. * Si la transmisión es muy rápida podemos poner un ''delay(400)'' para añadir un retardo, en este caso de 400 milisegundos. * Ejemplo // Programa para escribir algo a través del terminal serie void setup() { // Configuración del puerto serie Serial.begin(9600); } void loop () { // Envío de datos Serial.println("Hola Mundo"); delay(400); } ===== Lectura de datos en el programa ===== * ''Serial.read()'' * ''Serial.write()'' * Ejemplo // Programa para recibir algo a través del terminal serie // Declaración de variables int mensaje=0; // Almacenará el código ASCII del caracter recibido void setup() { // Configuración del puerto serie Serial.begin(9600); } void loop () { if(Serial.available() > 0) { // Terminal serie disponible // Se almacena el código ASCII recibido mensaje=Serial.read(); // Se visualiza el código ASCII del caracter Serial.print("Recibí: "); Serial.println(mensaje); // Se visualiza el caracter recibido Serial.print("Recibí: "); Serial.write(mensaje); Serial.println(); } } ===== Resumen ===== **Previa configuración del terminal serie** * En ''void setup()'' -> ''Serial.begin(9600)'', donde en este ejemplo ''9600'' es la velocidad de transmisión en baudios. **Envío de datos en el programa** * ''Serial.print("Hola Mundo");'' Envía esa frase por el terminal serie. El cursor queda en la mísma línea, al final de la frase. * ''Serial.println("Hola Mundo");'' Envía esa frase por el terminal serie y añade un retorno de línea, saltando a la siguiente. **Lectura de datos en el programa** * ''Serial.read()'' * ''Serial.write()''