Felix Maocho

Para quien le interese lo que a nosotros nos interesa

Ejercicios de “Uso de los pines digitales como salida (OUTPUT)” resueltos con UnoArduSim

Félix Maocho
19/6/2016

Objetivo de este capítulo

Aprender a simular la conexión de LEDs a la Tarjeta Arduino mediante el programa UnoArduSim así como a familiarizarnos con su uso.

Primer ejercicio

Se trata de una variación del programa “Blink” que ya hemos realizado, en la que sólamente hacia lucir un LED unido al pin 13 en este caso se trata tanbien que luzca y un LED unido a ese pin- El enunciado del programa era; Encender y apagar un led L insertado en la propia tarjeta, asociado al Pin13, y simultáneamente, encender el led conectado al Pin 13.y el l esquema del hardware del programara era el siguiente;

esquema blink

Si recordamos nuestro Sketch “Blink” creado con UnoArduSim tenía el siguiente aspecto, del que solo nos falta “conectar” a la tarjeta un LED.

Blink 2

Recordamos que el Menú “Cofigure” tiene un submenú llamado “I/0 Devices” para permitir indicar que componentes se asocian a la tarjetaSi oprimimos en el programa “Blink” este submenú, se desplegara una venta con todos los dispositivos que se pueden cargar a cero;

configuracion

 

configuracion 2

 

Si marcamos “1” donde indica LEDs, aparece un Led en el borde de la zona gráfica.Observa el gráfico del LED

blink 3

 

LED Simulacion – En la esquina superior derecha vire su nombre LED.

– Un poco más a la izquierda hay una pequeña ventanita que admite poner dos caracteres. Aquí se pondrá el nombre del Pin que controla este Led en muestro caso el 13,

– Abajo hay otra ventana con un mayúscula, en la imagen una “R” y al lado la leyenda RYG que son las tres mayúsculas que es aceptan en esa pantalla y que significan, R = Red (Rojo), Y= Yelov (Amarillo) y G = Gren (Verde), los tres únicos colores que soporta este simulador. Hecho en falta los colores Blanco, Naranja y Azul, que son colores muy utilizados pero que en este simulador y en esta versión no se han implementado, También hecho en falta un LED muy utilizado, multicolor, que en virtud de los voltajes que envíes puede adquirir cualquier mezcla de color. De los colores fundamentales. En muestro caso y de acuerdo con el esquema que teníamos he elegido el color Amarillo “Y” por ser el más próximo al blanco que era el que pusimos en el quema.

El punto negro del centro del cuadrado representa el propio LED en esta ocasión apagado, o hay que hacer nada con él pues es el programa simulador el que le controla. Cambiará de color cada vez que el programa simule que cambia el potencial del Pin que lo controla.

– Falta por explicar las dos flechitas que hay a la derecha una que apunta para arriba y otra que apuntas para abajo, como ven jugando con marcar pos puntos que están a la izquierda de las flechas, una de las dos tiene que estar seleccionadas y son excluyentes es decir si se selecciona una se apaga la otra y viceversa. ¿Que significan? – Pues si en muestro caso el LED se enciende cundo el voltaje del Pin sube o cuando el potencial baja.

Podemos montar el led hará que se encienda tanto cuando por el pin 13 pasan 5 voltios como para que este encendido cuando el potencial del pin esta a 0 voltios y se apague cuando le ponemos en HIGH o sea en 5 voltios Esto parece algo sorprenderte, hasta cuando recordamos que un LED es solo un tipo determinado de diodo que emite luz cuando deja pasar la corriente porque en el lado que tiene unido el ánodo (+) hay mas voltaje que en el lado en que tiene unido el cátodo (-)

simbolo_led..

Cabe por tanto como en este caso que el ánodo (+) lo conectemos con el Pin , (en nuestro caso el Pin 13), y el cátodo (-) lo conectemos a tierra (GND) o sea a 0 V. En este caso sólo lucirá el LED cuando el Pin este a “HIGH” y se establezca una diferencia de potencial entre de 5 Voltios entre este pin y GND. El Led lucirá cuando “suba” el voltaje por poner el pin a HIGH y no lucirá cuando esté a “LOW” porque ambas patillas estarán entonces a 0 Volts.

LED BlinkPero también podemos conectar el ánodo (+) a la salida a 5V y el cátodo (-) al Pin en este caso mientras el Pin esté a “LOW”, existe una diferencia de potencial y el LED lucirá, pero si ponemos el Pin a “HIGH” ambos extremos del LED estarán a 5 voltios, la corriente cesará y el LED se apagará.

Puesto que en la simulación solo aparecen representados los elementos activos, o sea que cambian , pero no los pasivos, como cables, resistencias etc, hay que indicar cuando va a lucir nuestro LED cuando el pin esté a “HIGH” o cuando esté a “LOW” y eso lo marcamos poniendo Cómo va a funcionar nuestro LED
L a flecha para abajo indica que lucirá cuando en el PIN este en “HIGH”, (como ocurre en nuestro caso)- La flecha arriba indica lo contrario el led lucirá cuando el pin esté a “LOW”

En resumen en nuestro caso pondremos los parámetros, 13, (del número del pin) , Y (color amarillo) y flecha a bajo  de esa forma funciona perfectamente la simulación.

2“ Ejercicio

El segundo ejercicio es una demostración de lo que se puede hacer con un tarjeta Arduino, con sólo tener unos mínimos conocimientos de programación. Recordemos que cuando e se estudia este capitulo tan sólo conocemos el ciclo lógico del sketch (funciones “setup” y “loop”) y cuatro funciones estándar (“int”, “pinMode”, “digitalWrite” y “delay” ).

El enunciado era el siguiente: Construir un Juego de luces con cuatro LEDs que haga las siguientes cosas:

  • 1º Encender las luces de un extremo al otro y volver, secuencia leduno, leddos, ledtresl ledcuatro, ledtres, leddos, leduno, en colores rojo, azul, azul, rojo, azul, azul, rojo,
  • 2º Encender de los extremos y luego los del centro y repetir tres veces.
  • 3º Encender todos los leds uno tras otra y apagarlos en el mismo orden.
  • El esquema del hardware era :

Wl esquema del hardware a montar era como el que sigue:

Sketc_2_Juego de leds_bb

Como en nuestro programa de simulación no hay, (por ahora), los led azules, les sustituimos por verdes. Y se conectan como se ha indicado, Rojo de la izquierda al Pin 6, Los dos Verdes (en nuestro caso), a los pines 7 y 8 y el Rojo de la derecha al pin 9

Falta aun introducir con un copy/paste el largo programa que escribimos en su momento y que pongo a continuación, no sin antes recordar que el programa UnoArduSim es una magnifica herramienta para poner a punto los programas porque podemos mandar pararlo en cada punto que queramos, estudiar el estado de los Pin viendo en la zona gráfica el color, o el valor 0 o 1 que tienen:

El software era siguiente

/* Sketch 2 Juego de luces con cuatro leds
*
* 1º Encender las luces de un extremo al otro y volver
* 2º Encender de los extremos hacia el centro y volver
* 3º Encender todas una tras otra y apagarlas en el mismo orden
* Repetir el ciclo
*/
// Área de definición de variables y parámetros
int leduno = 6;
int leddos = 7;
int ledtres = 8;
int ledcuatro = 9;
int tiempo1 = 1000; // separación entre luces consecutivas
int tiempo2 = 3000; // intervalo entre cada juego de luces
// Función setup
void setup() {
// Pines abiertos como OUTPUT
pinMode(leduno, OUTPUT);
pinMode(leddos, OUTPUT);
pinMode(ledtres, OUTPUT);
pinMode(ledcuatro, OUTPUT);
}
// Función loop
void loop() {
// 1º hace ir desplazándose la luz cada timpo1 de un
// extremo al otro ida y vuelta y para después timpo2
digitalWrite(leduno, HIGH);
delay(tiempo1);
digitalWrite(leduno, LOW);
digitalWrite(leddos, HIGH);
delay(tiempo1);
digitalWrite(leddos, LOW);
digitalWrite(ledtres, HIGH);
delay(tiempo1);
digitalWrite(ledtres, LOW);
digitalWrite(ledcuatro, HIGH);
delay(tiempo1);
// vuelta
digitalWrite(ledcuatro, LOW);
digitalWrite(ledtres, HIGH);
delay(tiempo1);
digitalWrite(ledtres, LOW);
digitalWrite(leddos, HIGH);
delay(tiempo1);
digitalWrite(leddos, LOW);
digitalWrite(leduno, HIGH);
delay(tiempo1);
digitalWrite(leduno, LOW);
delay(tiempo2);
// **********************************************
// 2º enciende de los extremos hacia ay centro y vuelta
// y repite tres veces el cambio
digitalWrite(leduno, HIGH);
digitalWrite(ledcuatro, HIGH);
delay(tiempo1);
digitalWrite(leduno, LOW);
digitalWrite(ledcuatro, LOW);
digitalWrite(leddos, HIGH);
digitalWrite(ledtres, HIGH);
delay(tiempo1);
digitalWrite(leddos, LOW);
digitalWrite(ledtres, LOW);
// ****** segunda vez hace lo mismo
digitalWrite(leduno, HIGH);
digitalWrite(ledcuatro, HIGH);
delay(tiempo1);
digitalWrite(leduno, LOW);
digitalWrite(ledcuatro, LOW);
digitalWrite(leddos, HIGH);
digitalWrite(ledtres, HIGH);
delay(tiempo1);
;digitalWrite(leddos, LOW);
digitalWrite(ledtres, LOW);
// ***** Repite la tercera vez igual
digitalWrite(leduno, HIGH);
digitalWrite(ledcuatro, HIGH);
delay(tiempo1);
digitalWrite(leduno, LOW);
digitalWrite(ledcuatro, LOW);
digitalWrite(leddos, HIGH);
digitalWrite(ledtres, HIGH);
delay(tiempo1);
;digitalWrite(leddos, LOW);
digitalWrite(ledtres, LOW);
delay(tiempo2); // tiempo2 para separar los juegos de luces
// **********************************************
// 3º Se encienden todas una detrás de otra
// y luego se apagan una detrás de otra
digitalWrite(leduno, HIGH);
delay(tiempo1);
digitalWrite(leddos, HIGH);
delay(tiempo1);
digitalWrite(ledtres, HIGH);
delay(tiempo1);
digitalWrite(ledcuatro, HIGH);
delay(tiempo1);
digitalWrite(leduno, LOW);
delay(tiempo1);
digitalWrite(leddos, LOW);
delay(tiempo1);
digitalWrite(ledtres, LOW);
delay(tiempo1);
digitalWrite(ledcuatro, LOW);
delay(tiempo2);
}

Con todo esto introducido en nuestro simulador

Juego de Luces

 

Observen algo nuevo en la sección inferior izquierda, que anteriormente aparecía vacía y donde aparecen ahora todas las variables que utilizamos, en nuestro caso los nombres que damos a los Pin de salida con sus valores y los dos tiempos que utilizamos en las funciones “delay”.

Variables Juego de Luces

Por ser en este caso parámetros y no variables, no cambian con la ejecución del programa, si no fuera así veríamos aquí los valores que adquieren en cada parada que hiciéramos en la ejecución del programa.

.

Anuncios

19 junio 2016 - Posted by | General

Aún no hay comentarios.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: