LABORATORIO 04
PBC - Programación Reto Prototipo Chaleco en Arduino
1. OBJETIVOS
- Comprender la programación de Arduino mediante su IDE.
- Familiarizarnos con el lenguaje de programación en C aplicado a microcontroladores.
2. MARCO TEÓRICO
Arduino
Arduino
Arduino es una compañía de desarrollo de software y hardware de fuente abierta, así como una comunidad internacional que diseña y manufactura placas de desarrollo de hardware para construir dispositivos digitales y dispositivos interactivos que puedan detectar y controlar objetos del mundo real.
El entorno de desarrollo integrado (IDE) de Arduino es una aplicación multiplataforma (para Windows, macOS, Linux ) que está escrita en el lenguaje de programación Java. Se utiliza para escribir y cargar programas en placas compatibles con Arduino, pero también, con la ayuda de núcleos de terceros, se puede usar con placas de desarrollo de otros proveedores.
Tinkercad
Tinkercad es un software gratuito online creado por la empresa Autodesk, una de las empresas punteras en el software de diseño 3D de la mano de su programa estrella para tal fin, Inventor.
3. CÓDIGO DE MODIFICACIÓN DEL PROTOTIPO DEL CHALECO PARA CICLISTA
4. PBC TERMINADO(placa para el prototipo chaleco de ciclista)
5. VIDEOS
// Video: Evaluación del laboratorio
Tinkercad
Circuitos Impresos
En electrónica, una “placa de circuito impreso” (del inglés:
Printed Circuit Board, PCB), es una superficie constituida por caminos, pistas
o buses de material conductor laminadas sobre una base no conductora. El
circuito impreso se utiliza para conectar eléctricamente a través de las pistas
conductoras, y sostener mecánicamente, por medio de la base, un conjunto de
componentes electrónicos.
// Variables
int bot[] = {1,2,3};
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int numLedsalto = 8;
int numBots = 3;
int tiempoRet = 100;
int tiempo2 = 1000;
int tiempoRetOciosa = 200;
int estePin;
int cuenta_der = 0;
int cuenta_alto = 0;
int cuenta_izq = 0;
int cuenta_ocio = 0;
int x;
boolean bot_derecha = LOW;
boolean bot_alto = LOW;
boolean bot_izquierda = LOW;
boolean rut = LOW;
boolean bot_ocio = LOW;
int led[] = {4,5,6,7,8,9,10,11,12,13};
int numLeds = 10;
int numLedsalto = 8;
int numBots = 3;
int tiempoRet = 100;
int tiempo2 = 1000;
int tiempoRetOciosa = 200;
int estePin;
int cuenta_der = 0;
int cuenta_alto = 0;
int cuenta_izq = 0;
int cuenta_ocio = 0;
int x;
boolean bot_derecha = LOW;
boolean bot_alto = LOW;
boolean bot_izquierda = LOW;
boolean rut = LOW;
boolean bot_ocio = LOW;
// Función setup
{
for (estePin = 0; estePin < numBots; estePin++)
{
pinMode (bot[estePin],INPUT);
}
for (estePin = 0; estePin < numLeds; estePin++)
{
pinMode (led[estePin],OUTPUT);
}
}
for (estePin = 0; estePin < numBots; estePin++)
{
pinMode (bot[estePin],INPUT);
}
for (estePin = 0; estePin < numLeds; estePin++)
{
pinMode (led[estePin],OUTPUT);
}
}
// Función loop
void loop ()
{
for (estePin = 0; estePin < numLeds; estePin++)
{
digitalWrite (led[estePin], LOW);
}
bot_derecha = digitalRead (bot[0]);
bot_alto = digitalRead (bot[1]);
bot_izquierda = digitalRead (bot[2]);
if (bot_derecha==HIGH)
{
Derecha ();
}
else if (bot_alto==HIGH
)
{
Alto ();
}
else if (bot_izquierda==HIGH
)
{
Izquierda ();
}
else
{
Ociosa ();
}
}
// Función Derecha
void Derecha () {
switch (cuenta_der)
{
case 0:
digitalWrite (led[0],HIGH);
digitalWrite (led[8],HIGH);
digitalWrite (led[6],HIGH);
delay (tiempoRet);
break;
case 1:
digitalWrite (led[1],HIGH);
digitalWrite (led[9],HIGH);
digitalWrite (led[5],HIGH);
delay (tiempoRet);
break;
case 2:
digitalWrite (led[2],HIGH);
digitalWrite (led[3],HIGH);
digitalWrite (led[4],HIGH);
delay (tiempoRet);
break;
}
cuenta_der++;
if (cuenta_der > 3)
{delay (tiempo2);
cuenta_der = 0;
}
}
switch (cuenta_der)
{
case 0:
digitalWrite (led[0],HIGH);
digitalWrite (led[8],HIGH);
digitalWrite (led[6],HIGH);
delay (tiempoRet);
break;
case 1:
digitalWrite (led[1],HIGH);
digitalWrite (led[9],HIGH);
digitalWrite (led[5],HIGH);
delay (tiempoRet);
break;
case 2:
digitalWrite (led[2],HIGH);
digitalWrite (led[3],HIGH);
digitalWrite (led[4],HIGH);
delay (tiempoRet);
break;
}
cuenta_der++;
if (cuenta_der > 3)
{delay (tiempo2);
cuenta_der = 0;
}
}
// Función Alto
void Alto ()
{
switch (cuenta_alto)
{
case 0:
digitalWrite (led[0],HIGH);
digitalWrite (led[1],HIGH);
digitalWrite (led[2],HIGH);
digitalWrite (led[3],HIGH);
digitalWrite (led[4],HIGH);
digitalWrite (led[5],HIGH);
digitalWrite (led[6],HIGH);
digitalWrite (led[7],HIGH);
break;
case 1:
digitalWrite (led[8],HIGH);
digitalWrite (led[9],HIGH);
break;
default:;
}
delay (400);
cuenta_alto++;
if (cuenta_alto > 1)
{
cuenta_alto = 0;
delay (400);
}
}
{
case 0:
digitalWrite (led[0],HIGH);
digitalWrite (led[1],HIGH);
digitalWrite (led[2],HIGH);
digitalWrite (led[3],HIGH);
digitalWrite (led[4],HIGH);
digitalWrite (led[5],HIGH);
digitalWrite (led[6],HIGH);
digitalWrite (led[7],HIGH);
break;
case 1:
digitalWrite (led[8],HIGH);
digitalWrite (led[9],HIGH);
break;
default:;
}
delay (400);
cuenta_alto++;
if (cuenta_alto > 1)
{
cuenta_alto = 0;
delay (400);
}
}
// Función Izquierda
{
switch (cuenta_izq)
{
case 0:
digitalWrite (led[2],HIGH);
digitalWrite (led[9],HIGH);
digitalWrite (led[4],HIGH);
break;
case 1:
digitalWrite (led[1],HIGH);
digitalWrite (led[8],HIGH);
digitalWrite (led[5],HIGH);
break;
case 2:
digitalWrite (led[0],HIGH);
digitalWrite (led[7],HIGH);
digitalWrite (led[6],HIGH);
break;
default:
;
}
delay (tiempoRet);
cuenta_izq++;
if (cuenta_izq > 3)
{
cuenta_izq = 0;
}
}
switch (cuenta_izq)
{
case 0:
digitalWrite (led[2],HIGH);
digitalWrite (led[9],HIGH);
digitalWrite (led[4],HIGH);
break;
case 1:
digitalWrite (led[1],HIGH);
digitalWrite (led[8],HIGH);
digitalWrite (led[5],HIGH);
break;
case 2:
digitalWrite (led[0],HIGH);
digitalWrite (led[7],HIGH);
digitalWrite (led[6],HIGH);
break;
default:
;
}
delay (tiempoRet);
cuenta_izq++;
if (cuenta_izq > 3)
{
cuenta_izq = 0;
}
}
// Función Ociosa
{
digitalWrite (led[cuenta_ocio],HIGH);
digitalWrite (led[cuenta_ocio+4],HIGH);
delay (tiempoRetOciosa);
if(rut==0){
cuenta_ocio++;
}
if(rut==1){
cuenta_ocio--;
}
if(cuenta_ocio > 3 && rut == 0){
x=x+1;
cuenta_ocio = 0;
if(x > 1){
cuenta_ocio = 3;
rut = 1;
}
}
if(cuenta_ocio < 0 && rut == 1){
cuenta_ocio = 3;
x = x-1;
if(x < 1){
rut = 0;
cuenta_ocio = 0;
}
}
}
digitalWrite (led[cuenta_ocio],HIGH);
digitalWrite (led[cuenta_ocio+4],HIGH);
delay (tiempoRetOciosa);
if(rut==0){
cuenta_ocio++;
}
if(rut==1){
cuenta_ocio--;
}
if(cuenta_ocio > 3 && rut == 0){
x=x+1;
cuenta_ocio = 0;
if(x > 1){
cuenta_ocio = 3;
rut = 1;
}
}
if(cuenta_ocio < 0 && rut == 1){
cuenta_ocio = 3;
x = x-1;
if(x < 1){
rut = 0;
cuenta_ocio = 0;
}
}
}
4. PBC TERMINADO(placa para el prototipo chaleco de ciclista)
5. VIDEOS
// Video: Evaluación del laboratorio
// Video: Para subir nota de la evaluación -- Reto del docente dado
6. OBSERVACIONES
- Se observo que en clase de laboratorio se quiso implementar la parte de semana del curso de Coursera, pero no se tuvo exito ya que no se contaban con la cantidad de materiales para lograr ello.
- Se aprecio que en Tinkercad debíamos establecer bien nuestra programación por bucles o de una manera simple la programación y comprender lo que estábamos haciendo así como ver las diferencias entre ambas programaciones al respecto de otra.
- Para nuestro reto de prototipo del chaleco de señalización para ciclistas, tenemos cuatro rutinas distintas en condiciones normales, los LEDs se encenderán como se muestra se le hace entendido en el código que por default se active la rutina ociosa y por medio de 3 botones controlaremos las otras tres rutinas (alto, izquierda y derecha), los cambios ejercidos fueron para las rutinas (osciosa, derecha y alto)en ese orden.
7. CONCLUSIONES
- En conclusión, el importante comprender la estructura del lenguaje de programación en C, empleando el software Arduino IDE para poder hacer la respectiva programación.
- Se concluye que en esta sesión es importante conocer las sentencias ya que vimos que la utilización de estos comando tales como "for" e "if" aceleran el trabajo de escribir muchas lineas para programar.
- Se concluye que sobre los vídeos del curso Coursera que se llevo a cabo en el laboratorio nos ayuda a poder poner en practica nuestra habilidad de conocimiento y capacidad para resolver retener información que se vio, así como también nuestra manera de trabajar en el hecho de analizar las sugerencias que dieron.
- Respecto al usar dichos comandos,nosotros aprendemos conceptos de programación como bucles, procedimientos y más, ingresando el código en lenguaje de programación C para Arduino.
- También vimos varias formas de escribir la misma rutina, ya sea de manera sencilla con un mayor número de líneas, o bien utilizando estructuras de programación y funciones, que nos permiten optimizar el código.Nos perimitio adoptar la forma con la que más nos hemos familiarizado y entendido mejor en tus futuros programas como los retos hechos en este laboratorio.
- Finalmente se logró diseñar y quemar el PCB del Proyecto Chaleco para ciclistas, empleando correctamente el método de planchado.
No hay comentarios:
Publicar un comentario