Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Próxima revisión
Revisión previa
doc:tec:elo:uc_arduino:proteus_serie:inicio [2025/03/18 09:54] – creado euloxiodoc:tec:elo:uc_arduino:proteus_serie:inicio [2025/03/27 11:10] (actual) – [Lectura de datos en el programa] euloxio
Línea 1: Línea 1:
 +====== Uso del terminal serie virtual en Proteus y Arduino ======
  
 +  * 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 =====
 +
 +<image shape="thumbnail">{{ :doc:tec:elo:uc_arduino:proteus_serie:serial_config.png?nolink |}}</image>
 +\\ 
 +  * 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 <code>
 +
 +// 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);
 +}
 +
 +</code>
 +\\ 
 +===== Lectura de datos en el programa =====
 +
 +  * ''Serial.read()''
 +  * ''Serial.write()''
 +  * Ejemplo <code>
 +
 +// 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();
 +  }
 +}
 +
 +</code>
 +\\ 
 +===== 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()''
 +\\ 
 +===== Consulta =====
 +
 +<WRAP center round help>
 +
 +{{ico:consulta_32.png?nolink|}} Contenidos
 +
 +  - [[https://aprendiendoarduino.wordpress.com/2016/07/02/comunicacion-serie-arduino/|Comunicación Serie Arduino]]
 +
 +{{:ico:video.png?nolink|}} Vídeos
 +
 +
 +
 +<TEXT align="center">
 +
 +<grid><col xs="12" md="6">
 +<badge>1</badge>
 +
 +[[https://youtu.be/_uck3dUoEA0|Terminal virtual Proteus 8 parte 25 (10m 47s)]]
 +{{ youtube>_uck3dUoEA0? }}
 +\\ 
 +</col><col xs="12" md="6">
 +<badge>2</badge>
 +
 +[[https://youtu.be/dPkDfYxFu7k|Monitor serial de Arduino con Proteus (10m 21s)]]
 +{{ youtube>dPkDfYxFu7k? }}
 +\\ 
 +</col></grid>
 +</TEXT>
 +
 +</WRAP>
 +\\