Prototipos 2: Proyecto Final


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:

  1. Poder lograr el objetivo planteado en la plantilla Inspiración
  2. Resolver los retos que fueron apareciendo, los cuales están mencionados en la plantilla Implementación
  3. Crear el prototipo tal cual se pensó en la plantilla Inspiración

No hay comentarios:

Publicar un comentario

Página Principal

Álbum de Aprendizaje Computación física:  Prototipos Interactivos (1 y 2) Estimado lector... Este Blog llevará un registro de apren...