Los registros de
desplazamiento (shifter registers) permiten expandir nuestra capacidad de
entradas y de salidas digitales, basándose en el desplazamiento de una
secuencia de bytes que se envía o recibe de Las dos variantes más populares de
registros de desplazamiento son los de entrada en serie y los de entrada en
paralelo. Ambos tipos de circuitos pueden tener salidas en serie o salidas en
paralelo. En el mundo de los microcontroladores, se utiliza la primera para
expandir la capacidad de salidas digitales y el segundo, para las entradas.
Otra ventaja que
poseen este tipo de integrados es que solo requieres 3 pines digitales para las
entradas y 4 para las salidas; con la condición de que puedes conectar una N
cantidad de registros de desplazamiento en cadena de estos circuitos
integrados.
REGISTROS DE DESPLAZAMIENTO DE ENTRADA EN SERIE (SISO /
SIPO):
Como se mencionó
anteriormente, se utilizarán para expandir nuestra capacidad de salidas
digitales. En nuestro código, un 1 representará cuando un pin se desea que este
en alta (HIGH) y un 0 cuando se desee que este en baja (LOW).
Para mostrar el funcionamiento de este tipo de
circuitos, desarrollaremos un ejemplo en el cual controlaremos el estado lógico
de 8 LEDs con sólo 3 pines digitales del Arduino. Utilizaremos el circuito
integrado 74HC595N.
REGISTROS DE DESPLAZAMIENTO DE ENTRADA EN PARALELO (PISO,
PIPO):
Son utilizados para
expandir la capacidad de entradas digitales. Detecta cuando un pin esta en ALTA
(su voltaje > 2.5V) o cuando algún pin esta en baja (LOW). Para el
funcionamiento correcto, utilizaremos cuatro pines digitales de la placa
Arduino, además del circuito integrado 74HC165N.
Observaciones:
·Es importante escribir el código correctamente, para evitar errores
de compilación o subida a la plataforma arduino.
Conclusiones:
·Se logró aprender la correcta conexión entre los pines de la matriz
de leds con la plataforma Arduino, teniendo muy en cuenta el data sheet de la
matríz, para saber si es ánodo común o cátodo común.
·Se pueden crear formas para su representación en matrices led (
letras), mediante la implementación de códigos matriz el cualtrae las "indicaciones" necesarias
para su representación, otro método que se puede aplicar seria el mandar
señales LOW y HIGH a las comunas y filas de la matriz para formar la forma
deseada, el punto negativo de este método es el gran espacio y trabajo
necesario para su aplicación.
En informática, se
conoce como lenguaje de programación a un programa destinado a la construcción
de otros programas informáticos. Su nombre se debe a que comprende un lenguaje
formal que está diseñado para organizar algoritmos y procesos lógicos que serán
luego llevados a cabo por un ordenador o sistema informático, permitiendo
controlar así su comportamiento físico, lógico y su comunicación con el usuario
humano.
Base de Arduino:
SETUP: Función o
Rutina que se ejecuta solo una vez al encender o al reiniciar el Arduino.
LOOP: Función o
Rutina que se ejecuta indefinidamente luego de ejecutado el Setup.
HIGH/LOW
Estas constantes
definen los niveles de salida altos o bajos y se utilizan para la lectura o la
escritura digital para las patillas. ALTO se define como en la lógica de nivel
1, ON, o 5 voltios, mientras que BAJO es lógica nivel 0, OFF, o 0 voltios.
digitalWrite (13, HIGH); // activa la salida 13 con un nivel alto (5v.)
INPUT/OUTPUT
Estas constantes son
utilizadas para definir, al comienzo del programa, el modo de funcionamiento de
los pines mediante la instrucción pinMode de tal manera que el pin puede ser
una entrada INPUT o una salida OUTPUT.
pinMode (13,
OUTPUT); // designamos que el PIN 13 es una salida
IF (SI)
if es un estamento
que se utiliza para probar si una determinada condición se ha alcanzado, como
por ejemplo averiguar si un valor analógico está por encima de un cierto
número, y ejecutar una serie de declaraciones (operaciones) que se escriben
dentro de llaves, si es verdad. Si es falso (la condición no se cumple) el
programa salta y no ejecuta las operaciones que están dentro de las llaves, El
formato para if es el siguiente:
if (¿una
Variable??valor)
{
ejecuta
Instrucciones;
}
IF… ELSE (SI….. SINO
..)
if… else viene a ser
una estructura que se ejecuta en respuesta a la idea “si esto no se cumple haz
esto otro”. Por ejemplo, si se desea probar una entrada digital, y hacer una
cosa si la entrada fue alta o hacer otra cosa si la entrada es baja, usted
escribiría que de esta manera:
if (inputPin ==
HIGH) // si el valor de la entrada inputPin es alto
{
instruccionesA;
//ejecuta si se cumple la condición
}
else
{
instruccionesB;
//ejecuta si no se cumple la condición
}
FOR
La declaración for
se usa para repetir un bloque de sentencias encerradas entre llaves un número
determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se
vuelve a testear la condición. La declaración for tiene tres partes separadas por
(;) vemos el ejemplo de su sintaxis:
for (inicialización;
condición; expresión)
{
ejecuta
Instrucciones;
}
DIGITALREAD(PIN)
Lee el valor de un
pin (definido como digital) dando un resultado HIGH (alto) o LOW (bajo). El pin
se puede especificar ya sea como una variable o una constante (0-13).
valor =
digitalRead(Pin); // hace que 'valor sea igual al estado leído
en ´Pin´
DIGITALWRITE (PIN, VALUE)
Envía al ´pin´
definido previamente como OUTPUT el valor HIGH o LOW (poniendo en 1 o 0 la
salida). El pin se puede especificar ya sea como una variable o como una
constante (0-13).
digitalWrite (pin,
HIGH); // deposita en el 'pin' un valor HIGH (alto o 1)
ANALOGREAD(PIN)
Lee el valor de un
determinado pin definido como entrada analógica con una resolución de 10 bits.
Esta instrucción sólo funciona en los pines (0-5). El rango de valor que
podemos leer oscila de 0 a 1023.
valor =
analogRead(pin); // asigna a valor lo que lee en la entrada ´pin'
Nota: Los pins
analógicos (0-5) a diferencia de los pines digitales, no necesitan ser
declarados como INPUT u OUPUT ya que son siempre INPUT´s.
ANALOGWRITE (PIN, VALUE)
Esta instrucción
sirve para escribir un pseudo-valor analógico utilizando el procedimiento de
modulación por ancho de pulso (PWM) a uno del pin´s de Arduino marcados como
“pin PWM”. El más reciente Arduino, que implementa el chip ATmega168, permite
habilitar como salidas analógicas tipo PWM los pines 3, 5, 6, 9, 10 y 11. Los
modelos de Arduino más antiguos que implementan el chip ATmega8, solo tiene
habilitadas para esta función los pines 9, 10 y 11. El valor que se puede
enviar a estos pines de salida analógica puede darse en forma de variable o
constante, pero siempre con un margen de 0-255.
analogWrite (pin,
valor); // escribe 'valor' en el 'pin' definido como
analógico
Serial.begin(rate)
Abre el puerto serie
y fija la velocidad en baudios para la transmisión de datos en serie.
El valor típico de
velocidad para comunicarse con el ordenador es 9600, aunque otras
velocidades pueden
ser soportadas.
void setup()
{
Serial.begin(9600);
// abre el Puerto serie
}// configurando la velocidad en 9600 bps
Nota: Cuando se
utiliza la comunicación serie los pins digital 0 (RX) y 1 (TX) no puede
utilizarse al mismo tiempo.
Serial.println(data)
Imprime los datos en
el puerto serie, seguido por un retorno de carro automático y salto de línea.
Este comando toma la misma forma que Serial.print (), pero es más fácil para la
lectura de los datos en el Monitor Serie del software.
Serial.println(analogValue);
// envía el valor 'analogValue' al puerto
Observaciones:
·Observamos en la experiencia realizada debemos realizar la
programación del programa arduino.
·Observamos en el momento de conexiones de la tarjeta de arduino
debe estar según a la de la simulación realizada.
·Se observó que el arduino es un micro controlador capaz de realizar
la sucesión numérica para la realización del contador con display.
Conclusiones:
·Identificamos como debemos programar en el programa arduino para
realizar la simulación del contador con displayen la tarjeta arduino
·-Identificamos como debe realizarse las concesiones adecuado es en
el arduino para que realice el trabajo adecuado.
·La función void loop() nos muestra el comportamiento de laescrituratodas las sentencias, bucles y llamadas a funciones que necesitemos que
nuestro Arduino repita constantemente.
·Se llegó a realizar las conexiones correspondientes entre el
arduino y le PROTOBOARD para consiguiente realizar el programa del arduino para
la ejecución de nuestro contador con display.
Arduino es una
plataforma de prototipos electrónica de código abierto (open – source) basada
en hardware y software flexibles yfáciles de usar. Está pensado e inspirado en artistas, diseñadores, y
estudiantes de computación o robótica y para cualquier interesado en crear
objetos o entornos interactivo, o simplemente por hobby. Arduino consta de una
placa principal de componentes eléctricos, donde se encuentran conectados los
controladores principales que gestionan los demás complementos y circuitos
ensamblados en la misma. Además, requiere de un lenguaje de programación para
poder ser utilizado y, como su nombre lo dice, programado y configurarlo a
nuestra necesidad, por lo que se puede decir que Arduino es una herramienta
"completa" en cuanto a las herramientas principales nos referimos, ya
que sólo debemos instalar y configurar con el lenguaje de programación de esta
placa los componentes eléctricos que queramos para realizar el proyecto que
tenemos en mente, haciéndola una herramienta no sólo de creación, sino también
de aprendizaje en el ámbito del diseño de sistemas electrónicos-automáticos y,
además, fácil de utilizar.
HISTORIA DE ARDUINO:
El primer prototipo de Arduino fue fabricado
en el instituto IVRAE. Inicialmente estaba basado en una simple placa de
circuitos eléctricos, donde estaban conectados un micro controlador simple
junto con resistencias de voltaje, además de que únicamente podían conectarse
sensores simples como leds u otras resistencias, y es más, aún no contaba con
el soporte de algún lenguaje de programación para manipularla.
Años más tarde, se
integró al equipo de Arduino Hernando Barragán, un estudiante de la Universidad
de Colombia que se encontraba haciendo su tesis, y tras enterarse de este
proyecto, contribuyó al desarrollo de un entorno para la programación del
procesador de esta placa: Wiring, en colaboración con David Mellis, otro
integrante del mismo instituto que Banzi, quien más adelante, mejoraría la
interfaz de software.
Tiempo después, se
integro al "Team Arduino" el estudiante español David Cuartielles,
experto en circuitos y computadoras, quien ayudó Banzi a mejorar la interfaz de
hardware de esta placa, agregando los micro controladores necesarios para
brindar soporte y memoria al lenguaje de programación para manipular esta
plataforma.
Más tarde, Tom Igoe,
un estudiante de Estados Unidos que se encontraba haciendo su tesis, escuchó
que se estaba trabajando en una plataforma de open-source basada en una placa
de micro controladores pre ensamblada. Después se interesó en el proyecto y fue
a visitar las instalaciones del Instituto IVRAE para averiguar en que estaban
trabajando. Tras regresar a su país natal,recibió un e-mail donde el mismo
Massimo Banzi invitó a Igoe a participar con su equipo para ayudar a mejorar
Arduino. Aceptó la invitación y ayudó a mejorar la placa haciéndola más
potente, agregando puertos USB para poder conectarla a un ordenador. Además, el
le sugirió a Banzi la distribución de este proyecto a nivel mundial.
Cuando creyeron que
la placa estaba al fin lista, comenzaron su distribución de manera gratuita
dentro de las facultades de electrónica, computación y diseño del mismo
instituto. Para poder promocionar el proyecto Arduino dentro del campus,
tuvieron que consultar con un publicista que más parte pasaría a formar parte del
equipo Arduino: Gianluca Martino, quien la distribuyo dentro del instituto y
promocionándola a algunos conocidos y amigos suyos. Al ver su gran aceptación
por parte de los alumnos y maestros y tomando en cuenta el consejo de Igoe,
pensaron en su distribución nivel mundial, para lo cual contactaron a un amigo
y socio de Banzi, Natan Sadle, quien se ofreció a producir en masa las placas
tras interesarse en el proyecto.
Un breve tiempo más
tarde, al ver los grandes resultados que tuvo Arduino y las grandes
aceptaciones que tuvo por parte del público, comenzó a distribuirse en Italia,
después en España, hasta colocarse en el número uno de herramientas de
aprendizaje para el desarrollo de sistemas autómatas, siendo además muy
económica (300-500 pesos) en comparación con otras placas de micro
controladores.
MODELOS
DE ARDUINO:
·-Arduino Uno
·- Arduino Leonardo
·- Arduino Due
·- Arduino Yún
·- Arduino Tre (En Desarrollo)
·- Arduino Zero (En venta en la tienda
de EEUU)
·- Arduino Micro
·- Arduino Esplora
·- Arduino Mega ADK
·- Arduino Ethernet
·- Arduino Mega 2560
·- Arduino Robot
·- Arduino Mini
·- Arduino Nano
·- LilyPad Arduino Simple
·- LilyPad Arduino SimpleSnap
·- LilyPad Arduino
·- LilyPad Arduino USB
·- Arduino Pro Mini
·- Arduino Fio
·- Arduino Pro
CARACTERISTICAS DE UN ARDUINO:
- Microcontrolador: ATmega328
- Voltaje Operativo: 5v
- Voltaje de Entrada (Recomendado): 7 – 12 v
- Pines de Entradas/Salidas Digital: 14 (De
las cuales 6 son salidasPWM)
- Pines de Entradas Análogas: 6
- Memoria Flash: 32 KB (ATmega328) de los
cuales 0,5 KB es usado porBootloader.
- SRAM: 2 KB (ATmega328)
- EEPROM: 1 KB (ATmega328)
- Velocidad del Reloj: 16 MHZ.
MBLOCK:
OBSERVACIONES Y CONCLUSIONES. ¿QUÉ HE APRENDIDO DE ESTA
EXPERIENCIA?
·En esta experiencia aprendimos sobre los programas que se puede
usar para una programación en arduino ,como también implementar circuitos de
lógica combinacional y secuencial, se pudo observar las aplicaciones que tiene
la electrónica digital y la programación realizada en arduino uno, esto se
diopor medio de gráfico.
·Se lograron resolver problemas planteados mediante la programación
de “juegos blockliy”, una vez concluido esa tarea se hizo uso del programa IDE
arduinoya que es un entorno muy
sencillo de usar y en él escribiremos el programa que queramos que el Arduino
ejecute, se usó la programación que ya estaba ahí, simplemente cambiamos los
tiempos de los LED para su prendido y apagado.
·Seguidamente usamos el mBlock donde se observó que es un entorno
gráfico de programación por bloque para Arduino, que permite introducir de
forma sencilla la programación y robótica.
·Finalmente realizamos el proyecto semáforo con los programas que se
nos brindó, concluyendo satisfactoriamente con la tarea.
Es un dispositivo que a través de procesos lógicos convierte una señal binaria de entrada en una señal de salida que sea más familiar para el usuario que el sistema binario.
El circuito integrado 7447 es un circuito que decodifica señales binarias de 4 bits en unas lineas de salida que posterior mente pueden ser representadas por un display de 7 segmentos mostrando los dígitos decimales. A continuación se muestra el datasheet del C.I. 7447 donde se puede observar que los pines 7,1,2 y 6 funcionan como entradas de un numero binario, mientras los pines 9,10,11,12,13,14,15 pertenecen a las lineas de salida y a cada uno de estos pines le corresponde un segmento del display. También se encuentran los pines de alimentación 16+ y 8- y los pines de control.
Matriz de Leds:
Parece que los LEDs se fabrican en todos los tamaños y formatos imaginables, y este componente que os presentamos hoy, hace gala de esa creatividad. Las matrices de LEDs (o LED arrays) son, como su nombre indica, una matriz de diodos LED normales y corrientes que se comercializa en multitud de formatos y colores. Desde las de un solo color, a las que tienen varios colores posibles, e incluso las hay de una matriz RGB (Os dejo imaginar la de pines que tiene).
Por lo demás, son diodos LED totalmente normales, organizados en forma de matriz, que tendremos que multiplexar para poder iluminar uno u otro punto, tal y como hicimos en la sesión del teclado matricial. Este componente se presenta con dos filas de 8 pines cada una, que se conectan a las filas y las columnas.
Si los diodos se unen por el positivo, se dice que son matrices de ánodo común (El nombre pedante del positivo) y se une por el negativo decimos que son de cátodo común.
Integrado 4017:
Se trata de un contador/divisor o decodificador con 10 salidas. Estructuralmente está formado por un contador Johnson de 5 etapas que puede dividir o contar por cualquier valor entre 2 y 9, con recursos para continuar o detenerse al final del ciclo.
Proteus:
Video de la Simulación:
CONCLUSIONES:
- Se concluye que se logró simular correctamente todos los circuitos que se ha realizado durante todo el laboratorio con las matrices de leds y probar el funcionamiento de cada uno de ellos, así como el poner el orden de los pines de la matriz 7x5 y ver el integrado 4017
- Concluimos que la Matriz de leds de 7x5, cuenta con 14 pines con cátodo a renglón, Leds rojos de 3 mm, alta eficiencia, es importante reconocer los pines de la matriz de leds, es decir, primeramente, buscar su datasheet para saber si es ánodo común o cátodo común, para poder identificar el orden de los pines de la matriz de leds de 7x5 y cuáles son los pines que van a tierra y a positivo
- Se concluyó que el circuito integrado 4017 cuenta recursos para continuar o detenerse al final de un ciclo deseado gracias a su entrada Master Reset
OBSERVACIONES:
- Se apreció que es importante reconocer los pines del integrado 4017, los cuales deben ser conectados correctamente para un adecuado funcionamiento.
- Se pudo ver que en la matriz de leds 7x5, sólo se utiliza 12 pines de los 14 pines establecidos por el datasheet y los otros dos pines se denominan auxiliares, una para la columna 3 y otra para la fila número 4.