La práctica involucró el uso de los puertos de salida de un microcontrolador Arduino para controlar 8 LED. Se programaron diferentes ejercicios como desplazar bits de izquierda a derecha y viceversa, desplazar dos bits del centro a los extremos, y un contador ascendente y descendente. Esto permitió familiarizarse con la programación y el control de salidas digitales en Arduino.
MEC. FLUIDOS - Análisis Diferencial del Movimiento de un Fluido -GRUPO5 sergi...
Arduino LED control
1. Universidad Autonoma de Baja California
1
μC – USO DEL PUERTO
Marcos Marcos Fernando
e-mail: fmarcos@uabc.edu.mx
RESUMEN: En esta práctica se utilizaron los
puertos de salida del microcontrolador Arduino, se
conectaron 8 led a la salida del puerto. Realizado esto
se editaron diferentes programas para que realizaran
diferentes acciones, como desplazar bits de izquierda a
derecha, así también de forma contraria, otra forma era
el desplazamiento de dos bits del centro hacia los
extremos, y de forma invertida, y finalmente un contador
ascendente y descendente.
1 INTRODUCCIÓN
En el año 2003 en Italia específicamente en el
instituto Ivrea, el docente Massimo Banzi enseñaba el
uso de PICs a estudiantes de Diseño Interactivo, los
cuales no tenían el conocimiento técnico para utilizar las
herramientas de bajo nivel para la programación que
existían en esos momentos, por tal motivo desarrollo
una herramienta de programación de PICs bajo la
plataforma MAC (ya que la mayoría de los estudiantes
utilizaban esta plataforma), esta herramienta y el
ambiente de desarrollo Processing sirvieron como
ejemplo a el colombiano Hernando Barragan que en ese
momento era estudiante del instituto, para desarrollar la
tarjeta Wiring, el lenguaje de programación y su
ambiente de desarrollo .
Poco tiempo despues Massimo, David Cuartilles
investigador en el instituto y Gianluca Martino
desarrollador local contratado desarrollar hardware para
los proyectos de los estudiantes desarrollaron una
tarjeta basada en el trabajo de Hernando Barragan la
cual era mas pequeña y económica que la Wiring a la
cual llamaron Arduino.
Mas tarde se unieron a este grupo los estudiantes
Mellis y Zambetti que mejoraron el modelo de Wiring,
logrando construir una tarjeta básica y un ambiente de
desarrollo completo. En el año 2005 se une a este
equipo de trabajo Tom Igoe quien es por sus trabajos
en Computación Física (Construcción de sistemas
físicos a través de hardware y software que pueden
sentir y responder al mundo análogo) y se encarga de
las pruebas del sistema con estudiantes del ITP en
Estados Unidos, como también de realizar los contactos
para la distribución de la tarjeta en territorio americano.
2 TEORIA
Arduino es una herramienta utilizada para que los
ordenadores puedan controlar el mundo físico y no solo
esto también sentirlo. Es una plataforma de desarrollo
de computación física de código abierto, basada en una
placa con un sencillo micro controlador y un entorno de
desarrollo para crear software para la placa.
Arduino se puede utilizar para crear objetos
interactivos, leyendo datos de una gran variedad de
interruptores y sensores y controlar multitud de tipos de
motores, luces, entre muchos más actuadores físicos.
Los proyectos de arduino pueden ser autónomos o
comunicarse con un programa que se ejecute en tu
ordenador. La placa puede ser montada por el usuario o
comprarla lista para usar, El software utilizado para la
programación de esta plataforma es gratis.
El lenguaje de programación de arduino es muy
sencillo, de echo es similar a los lenguajes de
programación de C++, Netbeans, entre otros, por esto
misom es fácil de utilizar. El software arduino es
multiplataforma debido a que funciona con sistemas
operativos como lo es Windows,Macintosh OSX y Linux.
¿Qué distingue a Arduino de otros microcontroladores?
La filosofía open source -código abierto- que lo
sustenta. Tanto el modo en que se ensambla la placa -
hardware- como el código fuente del programa Arduino -
software- son de acceso público. Esto quiere decir que
cualquiera de nosotros que usarlo y/o mejorarlo pueda
hacerlo.
3 DESARROLLO
Para el posible desarrollo de la práctica, es
necesario contar con el siguiente material y/o equipo.
- 8 Resistencias de 220Ω
- Computadora
- Plataforma de desarrollo
- 8 Leds
- Arduinino μc
- Protoboard
- Cable y pinzas peladoras
- Cable USB Arduino
Primeramente se monta el circuito y se conecta al
Arduino en los pines que se requieran como se muestra
en la Figura 3.
Figura 3.
Ejercicio 1.
Consiste en dezplazar un bits o hacer que el
corrimiento de un led sea de Izquierda a Derecha como
se muestra en la Figura 3.1.
Figura 3.1.
El código realizado es el siguiente.
int tiempo=50; /*Tiempo que durara encendido/apagado
el led */
int pin; /*Variable para seleccionar pin*/
2. Universidad Autonoma de Baja California
2
void setup() {
for(pin=0;pin<=7;pin++) {
pinMode(pin,OUTPUT);
/*Ciclo utilizado para configurar salida de cada pin*/
}
}
void loop() /*Ciclo infinito*/ {
for(pin=0;pin<=7;pin++) {
digitalWrite(pin,HIGH);/*Encender pin*/
delay(tiempo);/*Tiempo Encendid*/
digitalWrite(pin,LOW);/*Apagar pin*/
delay(tiempo);/*Tiempo apagado*/
}
}
Figura 3.2. Diagrama de flujo del primer ejercicio
Ejercicio 2.
Se hará que el desplazamiento de un bit sea de
derecha a izquierda como se muestra en la Figura 3.3.
Figura 3.3.
El código ingresado para efectuar esta acción es lo
siguiente.
int tiempo=50; /*Tiempo que durara encendido/apagado
el led */
int pin; /* Declarando pin como variable para utlizarlo
como salida posteriormente */
void setup() {
for(pin=0;pin<=7;pin++) {
pinMode(pin,OUTPUT); /*Ciclo utilizado para
configurar salida de cada pin */
}
}
void loop()/*Ciclo infinito {
for(pin=7;pin>=0;pin--) {
digitalWrite(pin,HIGH); /*Encender pin*/
delay(tiempo); /*Tiempo Encendido*/
digitalWrite(pin,LOW); /*Apagar pin*/
delay(tiempo); /*Tiempo apagado*/
}
}
Figura 3.4. Diagrama de flujo del ejercicio 2.
Ejercicio 3.
Los que se pretende es hacer que dos bits una en
cada extremo se desplacen o corran hacia del centro al
mismo tiempo como se aprecia en la Figura 3.5.
Figura 3.5.
La lógica utilizada esta expresada en el siguiente
código:
int tiempo=50; /*Tiempo que durara encendido/apagado
el led */
int pin=7,pin1=0,i; /*Declarando pines de salida y sus
valores iniciales */
void setup() {
for(pin=0;pin<=7;pin++) {
pinMode(pin,OUTPUT); /* Config. Salida de los
pines*/
}
}
void loop() /*Ciclo infinito*/ {
for(i=1;i<=4;i++) /*4 Ciclos*/ {
digitalWrite(pin,HIGH);/*Encender pin*/
digitalWrite(pin1,HIGH);/*Encender pin1*/
delay(tiempo); /*Tiempo Encendidos */
digitalWrite(pin,LOW);/*Apagar pin*/
digitalWrite(pin1,LOW); /*Apagar pin1*/
delay(tiempo);/*Tiempo apagados*/
pin=pin-1;/*Cambiando a un pin menor*/
pin1=pin1+1; /*Cambiando a un pin mayor*/
}
pin=7;/* Asignando valor a pin para salida*/
pin1=0;/* Asignando valor a pin1 para salida*/
}
3. Universidad Autonoma de Baja California
3
Figura 3.6. Diagrama de Flujo de ejercicio 3
Ejercicio 4.
Ahora lo que se realizara es desplazar dos bits,
cada uno en los centros y hacer que estos de desplacen
hacia los extremos, y al llegar a los extremos realicen la
misma operación consecutivamente como se puede
observar el la Figura 3.7.
Figura 3.7.
El código ingresado en la plataforma Arduino es lo
siguiente:
int tiempo=50; /*Tiempo que durara encendido/apagado
el led */
int pin=3,pin1=4,i;/*Declarando pines de salida y sus
valores iniciales */
void setup() {
for(pin=0;pin<=7;pin++) {
pinMode(pin,OUTPUT); /* Config. Salida de los
pines*/
}
}
void loop() /*Ciclo infinito*/ {
for(i=1;i<=4;i++) /*4 Ciclos*/ {
digitalWrite(pin,HIGH);/*Encender pin*/
digitalWrite(pin1,HIGH);/*Encender pin*/
delay(tiempo); /*Tiempo Encendidos*/
digitalWrite(pin,LOW);/*Apagar pin*/
digitalWrite(pin1,LOW); /*Apagar pin*/
delay(tiempo); /*Tiempo apagados*/
pin=pin-1;/*Cambiando a un pin menor*/
pin1=pin1+1; /*Cambiando a un pin mayor*/
}
pin=3;/* Asignando valor a pin para salida*/
pin1=4;/* Asignando valor a pin1 para salida*/
}
Figura 3.8. Diagrama de Flujo ejercicio 4.
Ejercicio 5.
Se creara un programa que realice un contador
binario de 8 bits ascendente.
Figura 3.9. Contador Binario
El código realizado es el siguiente:
int Pin[] = {7,6,5,4,3,2,1,0}; /* Declarando pines a utilizar,
y guardándolos en una matriz */
int tiempo=100; /*Tiempo que durara encendido/apagado
el led */
void setup() {
int i=0;
for (i=0;i<8;i++) /*numero de pines.*/
pinMode(Pin[i],OUTPUT); /*Config. Salida de los
pines*/
}
void loop() {
int i=0,j=0;
for (i=0;i<256;i++) {
for (j=0;j=7;j++) {
if ( ( (i>>j)&1)==1)
/*Cada iteración del bucle divide el numero en
cuestión por 2 Y se queda únicamente con el bit de
menor valor. Así sabemos si tenemos que encender o
no el LED.*/
digitalWrite(Pin[j],HIGH);
else digitalWrite(Pin[j],LOW);
}
delay(tiempo); /*Tiempo
Encendidos/apagado del led*/
}
}
4. Universidad Autonoma de Baja California
4
Figura 3.10 Diagrama de Flujo Ejercicio 5
Ejercicio 6
Ahora se creara un contador binario inverso, con 8
Bits.
El código ingresado es el siguiente.
int Pin[]={7,6,5,4,3,2,1,0};/* Declarando pines a utilizar, y
guardándolos en una matriz*/
int tiempo=100; /*Tiempo que durara
encendido/apagado el led */
void setup() {
int i=0;
for (i=0;i<8;i++) /*numero de pines.*/
pinMode(Pin[i], OUTPUT); /*Config. Salida de los
pines*/
}
void loop() {
int i=0,j=0;
for (i=255;i=0;i--) {
for (j=7;j=0;j--) {
if ( ( (i>>j)&1)==1)
/*Cada iteración del bucle divide el numero en
cuestión por 2 y se queda únicamente con el bit de
menor valor. Así sabemos si tenemos que encender o
no el LED.*/
digitalWrite(Pin[j],HIGH);
else digitalWrite(Pin[j],LOW);
}
delay(tiempo);
}
}
Figura 3.11. Diagrama de Flujo Ejercicio 4
4 ANALISIS DE RESULTADOS
4.1 Discusión de la precisión y exactitud de
los resultados.
Los resultados obtenidos fueron buenos, la
programación es sencilla debido a esto se pudieron
realizar los ejercicios requeridos para la practica.
4.2 Análisis de los posibles errores en los
resultados.
El la realización de la practica no surgieron errores,
aunque los únicos problemas pero no complicados
fueron el conectar el Arduino en el puerto correcto, el
resto salió de manera correcta.
4.3 Descripción de cualquier resultado
anormal.
No surgieron resultados anormales, solo errores
comunes de sintaxis al programar.
5 CONCLUSION
La práctica consistía en hacer desplazar un bit de
diferentes maneras, controlando esto con la plataforma
de desarrollo μc Arduino, el realizar esto fue de manera
sencillo gracias al conocimiento adquirido en la
programación de otros software, además realizar esta
practica en lo personal me familiarizo con el
microcontrolador, siendo esto de gran importancia para
las posibles aplicaciones que seguramente se realizaran.
6 BIBLIOGRAFIA
http://platea.pntic.mec.es/~lmarti2/arduino/introardu
/index.htm