Las siguientes son las etapas dentro de la estrategia de resolución de problemas Design Thinking podrá ver los trabajos desarrollados y anotadas en las plantillas respectivas.
A continuación se muestra el vídeo que explica el prototipo realizado en el proyecto final, su funcionamiento y circuito construido.
Además se comparte el código realizado para su funcionamiento.
Código usado en el IDE de Arduino
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo1; //declaramos la variable para controlar el servo motor
LiquidCrystal lcd(8,9,4,5,6,7); //definimos los pines de arduino que controlan la LCD.
int puertoservo =3; //Se asigna el pin 3 a esta variable
int trig =13; //Se asigna el pin 13 a esta variable
int echo =12; //Se asigna el pin 12 a esta variable
int grados; //variable para guardar los grados de ang del servo
int temporal =0; //variable a usar en el if
int anguloMin =650; //variable en la que se asigna el ang menor
int anguloMax =2550; //variable en la que se asigna el ang mayor
int ledrojo =11; //Asigno el pin 11 al led rojo
int ledverde =10; //Asigno el pin 10 al led verde
int boton =2;
int estado=0;
int estadoAnterior =0;
int salida=0;
float disCalculada;
void setup()
{
servo1.attach (puertoservo,anguloMin,anguloMax); //inicializamos el servo indicando por cual puerto nos comunicamos y los ángulos Max y Min
//------------------//
pinMode(trig, OUTPUT); // Envía datos
pinMode (echo, INPUT); // Recibe datos
Serial.begin(9600);
//-------------------//
lcd.begin(16,2);
lcd.setCursor (5,0); //definimos la columna 5 de la fila 0
lcd.print("Curso"); //Mostramos la palabra
lcd.setCursor (4,1); //definimos la columna 4 de la fila 1
lcd.print("PRONIE"); //Mostramos la palabra
lcd.noBlink(); //La lcd no parpadea
delay(2000);
lcd.clear();
//------------------//
pinMode (ledrojo, OUTPUT);
pinMode (ledverde, OUTPUT);
pinMode (boton, INPUT);
}
void loop()
{
estado = digitalRead(boton); // guardo el estado del botón
if ((estado == HIGH)&&(estadoAnterior == LOW)){ // solo se activa si el estado actual es alto y estado anterior es bajo
salida = 1- salida; // asignar el valor a la varible salida que sirvirá para determinar si enciendo o apago.
}
estadoAnterior = estado; // guarda el estado anterior del botón
if (salida == 1){
disCalculada = calcularDistancia();
grados=servo1.read(); //guardamos el valor de giro del servo
delay (200);
if (disCalculada < 30)
{
lcd.clear(); //limpia la LCD
lcd.setCursor (2,0); //definimos la columna 2 de la fila 0
lcd.print("Sirviendo"); //imprime en pantalla el texto
lcd.setCursor (2,1); //definimos la columna 2 de la fila 1
lcd.print("Alimento");
delay(1000);
digitalWrite(ledrojo,LOW); //apaga LED Rojo
digitalWrite(ledverde,HIGH); //enciende LED Verde
temporal=180; // se asigna a la variable un 170
servo1.write(temporal); //giramos los grados guardados en la variable temporal
delay(3000);
temporal=0; // se asigna a la variable un 0
servo1.write(temporal);
digitalWrite(ledverde,LOW);
digitalWrite(ledrojo,HIGH);
for (int tiempo = 10; tiempo >= 0; tiempo--) //procedimiento para el conteo
{
lcd.clear();
lcd.setCursor (1,0); //definimos la columna 1 de la fila 0
lcd.print("tiempo restante ");
lcd.setCursor (6,1); //definimos la columna 6 de la fila 1
lcd.print(tiempo);
delay(1000);
}
}
else
{
temporal=0; // se asigna a la variable un 0
servo1.write(temporal);
lcd.clear();
lcd.setCursor (5,0); //definimos la columna 5 de la fila 0
lcd.print("Listo a ");
lcd.setCursor (1,1);
lcd.print("Servir Alimento");
digitalWrite(ledverde,HIGH);
digitalWrite(ledrojo,LOW);
}
delay(10);
}
else
{
lcd.setCursor (5,0);
lcd.print("APAGADA");
lcd.setCursor (1,1);
lcd.print(" ");
digitalWrite(ledrojo,LOW);
digitalWrite(ledverde,LOW);
}
}
int calcularDistancia()
{
long distancia; //creamos la variable de tipo larga
long duracion;
digitalWrite(trig, LOW);
delayMicroseconds(4);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duracion = pulseIn(echo, HIGH);
duracion = duracion/2;
distancia = duracion/29;
return distancia;
}
ENTRE LOS DESAFÍOS DE ESTA UNIDAD ESTA:
- Poder lograr el objetivo planteado en la plantilla Inspiración
- Resolver los retos que fueron apareciendo, los cuales están mencionados en la plantilla Implementación
- Crear el prototipo tal cual se pensó en la plantilla Inspiración




No hay comentarios:
Publicar un comentario