====== 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()''