martes, 10 de diciembre de 2019

Laboratorio 16 ⚡ Matriz de LEDs con arduino ⚡


MATRIZ DE LEDS CON ARDUINO

¿QUÉ SON LOS REGISTROS DE DESPLAZAMIENTO?
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 cual  trae 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.



Video de la Simulación:




Integrantes:


- Jesus Paricahua Roque
- Marco Cruz Linares
- Cristian Capia Condori


Laboratorio 15 ⚡ Contadores digitales con arduino ⚡


CONTADORES DIGITALES CON ARDUINO



¿Qué es el lenguaje de programació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 display  en 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 la  escritura  todas 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.

Video de la Simulación:


Integrantes:

- Jesus Paricahua Roque
- Marco Cruz Linares
- Cristian Capia Condori

Laboratorio 14 ⚡ Introducción a Arduino ⚡



INTRODUCCION A ARDUINO


¿QUÉ ES ARDUINO?
Arduino es una plataforma de prototipos electrónica de código abierto (open – source) basada en hardware y software flexibles y  fá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 salidas   PWM)
   - Pines de Entradas Análogas: 6
   - Memoria Flash: 32 KB (ATmega328) de los cuales 0,5 KB es usado por   Bootloader.
   - 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 dio  por 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 arduino  ya 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.
 Video de la Simulación:


Integrantes:

- Jesus Paricahua Roque
- Marco Cruz Linares
- Cristian Capia Condori