lunes, 12 de febrero de 2018

Proyecto Final


Plantilla Inspiración



Plantilla Implementación








Proyecto final

Prototipo que mide el nivel de temperatura en el aula de clase


Dispositivos utilizados para crear el prototipo "Sensor de temperatura"



Arduino Uno o compatible.




Una Protoboard  más cables.


1 resistencia de 330 Ohmios.



1 Sensor de temperatura


1 diodo led de colores

1 piezo o buzzer




Prototipo Sensor de temperatura






Vídeo del prototipo Sensor de temperatura






Síntesis de la programación


#include <LiquidCrystal.h>
LiquidCrystal lcd(8,9,4,5,6,7);
int v=-1;
int Sensor = A1;      // variable sensor de temperatura
int umbral = 30;     // variable umbral el valor a partir del cual disparamos la alarma.
int piezo = 3;           // variable para el parlante
int pinRojo = 13;     // variable para el led

void setup()
{
  lcd.setCursor(4,1);     // indica la posición de la palabra en la pantalla y la línea.
  lcd.print ("TEMP AULA   ");       // muestra en la pantalla de inicio
  lcd.noBlink();       // no parpadea la pantalla
  delay (2000);

pinMode (piezo, OUTPUT);
pinMode(pinRojo, OUTPUT);
pinMode (Sensor,INPUT); 
Serial.begin(9600);
}
void loop()
{
 int lectura = analogRead(Sensor);       // lectura análoga del sensor de temperatura.
 float voltaje = 5.0 /1024 * lectura;   // fórmula para calcular la temperatura
 float temp = voltaje * 100 -50;
 Serial.println(temp);
 delay(1000);
 Serial.print("Temp :");
Serial.println (lectura);
delay(800);

if (temp >= umbral)    //enciende el led cuando este sobrepase un cierto numero asignado como mayor o igual a.
{
digitalWrite(pinRojo, HIGH);
tone (piezo, 2000, 300);    // tono de la alarma cuando sobrepasa el umbral
 lcd.setCursor(1,1);
lcd.print("AULA CALOR");   // palabra que se muestra en la LCD cuando sobrepasa el umbral indicando que hay calor
lcd.println(temp);
}
else
{
digitalWrite(pinRojo, LOW);
lcd.setCursor(1,1);
lcd.print("AULA FRESCA ");  //palabra que se muestra en la lcd cuando el umbral es menor, indicando que está fresco.
lcd.println(temp);
}
delay (10);
}




















Práctica Dirigida 2



Vídeo práctica dirigida 2


Indicaciones 
Desarrollar la Práctica dirigida 2: "Puerta automática"  para ello es necesario:
· Ejecutar la primera parte de la práctica, mediante el vídeo Puerta automática - sensor ultrasónico
· Programar el sonido de la puerta, tomando en cuenta lo expuesto en el vídeo Puerta automática - piezo
· Agregar el motor a la puerta automática, mediante el contenido mostrado en el vídeo Puerta automática - servomotor
· Construir el prototipo con el Arduino UNO, siguiendo la ayuda del Vídeo Puerta automática - LCD

Síntesis de la Programación
Práctica dirigida 2 

#include <LiquidCrystal.h>  // librería de la pantalla LCD
#include <Servo.h>  // librería del servo motor
Servo servo1;    // es la variable para mandar datos al servo
LiquidCrystal lcd(8,9,4,5,6,7);  //conexión de los pines de la LCD a la tarjeta Arduino
int v=-1;
int puertoservo =3;   // conexión del servo motor
int trig = 13;        // variables de envía y recibe ondas
int echo = 12;     // recibe las ondas que revotan en el objeto.
int piezo = 2;         // variable del pin piezo
int pulsominimo =650;   // define el ángulo mínimo  para que trabaje el servomotor
int pulsomaximo=2550;  // define el ángulo máximo  para que trabaje el servomotor
int tmp=0;    // variable temporal que almacena los ángulos del servo motor.
int grados;  // guarda los grados de giro de ángulo del servomotor
float disCalculada;       // variable disCalculada guarda el valor de dicha distancia, se usa para decimales.
void setup()
{
lcd.setCursor(4,1);       // definimos que se ubique en la posición  4 de la fila 1 de la pantalla
lcd.print("PRONIE");
lcd.noBlink();  // para que el LCD no parpadee
delay(2000);
//-------------------//
servo1.attach (puertoservo, pulsominimo, pulsomaximo);
//-------------------//
pinMode (trig, OUTPUT);
 pinMode (echo, INPUT);
 pinMode (piezo, OUTPUT);  //Establecemos el piezo en modo salida.
//-------------------//
 Serial.begin (9600);
}
void loop()
{
disCalculada = calcularDistancia ();
grados =servo1.read();
Serial.print ("Grados :");
Serial.println (grados);
delay (200);
Serial.println ("--------");  // línea que divide la lectura.
Serial.print ("cm :");  // salto  al siguiente renglón  las palabras aparecen en la misma línea.
Serial.println (disCalculada);
  delay (200);
  if (disCalculada) < 100)   // Condicional si disCalculada es menor que 100.
{
tmp=100;     //
tone (piezo, 600,100);   // se activa el piezo si se cumple la condición.
}
else
{
tmp=0;
}
delay (10);                           // esperaremos 10 milisegundos
servo1.write(tmp);
lcd.setCursor(1,1);     // direccionamos el cursor en la fila1, posición1.
lcd.print("Distancia");      // indica la distancia calculada en la LCD
lcd.println(disCalculada);  // imprime en la pantalla el valor de la variable.

}
int calcularDistancia ()
{
long distancia;          //calcula la distancia basada en el principio que el sonido recorre 343 metros por segundos.
long duración;              
digitalWrite (trig, LOW);    
delayMicroseconds (4);       // La espera se convierte a un 1 centímetro por microsegundos.
 digitalWrite (trig, HIGH);  
 delayMicroseconds (10);     
 digitalWrite (trig, LOW);    
 duracion = pulseIn (echo, HIGH);
 duracion = duracion/2;
 distancia = distancia/29;    //Para obtener la distancia necesitamos dividirla entre 29.
 return distancia;   //valor de retorno de la función.
 } 



 Vídeo Reto 2


Puertas automáticas el cual consiste en agregar una nueva melodía y un led que se encienda al detectar el movimiento y apague.
Síntesis de la Programación
Reto 2 

#include "pitches.h"      // librería de tonos o melodías
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo1;
LiquidCrystal lcd(8,9,4,5,6,7);
int v=-1;
int puertoservo = 3;
int grados;
int tmp =0;
int pulsominimo=650;
int pulsomaximo=2550;
int trig = 13;
int echo = 12;
float disCalculada;
int piezo = 2;
int melody[] = {               // Variable melodía con las notas a utilizar.
 NOTE_C4, NOTE_F2, NOTE_G3, NOTE_A3, NOTE_E2, 0, NOTE_B3, NOTE_C4 };
 int noteDurations[] = { 4, 8, 8, 4, 4, 4, 4, 4 }; // variable duración de las notas o tiempo.
 int pinAzul = 11;

void setup()
{
 lcd.setCursor(4,1);
 lcd.print ("PRONIE");
 lcd.noBlink();
 delay (2000);
servo1.attach (puertoservo,pulsominimo, pulsomaximo);
pinMode (trig, OUTPUT);
pinMode (echo, INPUT);
pinMode (piezo, OUTPUT);
pinMode(pinAzul, OUTPUT); 
Serial.begin(9600);
}

void loop()
{
disCalculada = calcularDistancia ();
grados=servo1.read();
Serial.print("Grados :");
Serial.println (grados);
delay(200);
Serial.println("--------");
Serial.print("cm :");
Serial.println (disCalculada);
delay(200);
if (disCalculada < 100)
{
tmp=100;
digitalWrite(pinAzul, HIGH);
 // tone (piezo, 2600, 300);
for (int thisNote = 0; thisNote < 8; thisNote++) {    //Variable para esta nota 
int noteDuration = 1000 / noteDurations[thisNote];   //Tiempo de las notas
tone(piezo, melody[thisNote], noteDuration);
int pauseBetweenNotes = noteDuration * 1.30;   //Pausas de las notas
  delay(pauseBetweenNotes);
  noTone(8);
  }
}
else
{
tmp=0;
digitalWrite(pinAzul, LOW);
}
delay (10);
servo1.write (tmp);
lcd.setCursor(1,1);
lcd.print("Distancia ");
lcd.println(disCalculada);
}
int calcularDistancia ()
{
long distancia;
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;
}






Práctica Dirigida 1



Práctica Dirigida 1

Activación de alarma


Síntesis de la Programación Arduino uno:

int pinRojo = 3;
int pinAzul = 5;
int piezo = 6;
int boton = 2;
int estado = 0;

void setup()
{
 pinMode(pinRojo, OUTPUT);
 pinMode(pinAzul, OUTPUT);
 pinMode(piezo, OUTPUT);
 pinMode(boton, INPUT);
 Serial.begin(9600);

}

void loop()
{
  while (digitalRead(boton)==0)
  {
 analogWrite(pinRojo, HIGH);
 analogWrite(pinAzul, LOW);
 delay(100);
 analogWrite(pinRojo, LOW);
 analogWrite(pinAzul, HIGH);
 delay(100); 
 tone (piezo,300,100);
 Serial.println(digitalRead(boton));
 delay(100);
  }
{
  while (digitalRead(boton)==1)
  {

  analogWrite(pinRojo, LOW);
  analogWrite(pinAzul, LOW);
  Serial.println(digitalRead(boton));
  }
  //digitalWrite(pinRojo, HIGH);
  //digitalWrite(pinAzul, LOW);
  //delay(1000);
  //digitalWrite(pinRojo, LOW);
  //digitalWrite(pinAzul, HIGH);
  //delay(1000);

  //tone (piezo,300,100);
  //delay (100);
  //tone (piezo,450,50);
  //delay (100);
 
}
}




Reto 1


Controlar la alarma cuando detecta movimiento
simulando el efecto con la fotocelda




Síntesis de la Programación


int pinRojo = 3;
int pinAzul = 5;    //Declaración de las variables asignación de los pines.
int piezo = 6;
int ldr = A2;
int estado = 0;

void setup()
{
 pinMode(pinRojo, OUTPUT);
 pinMode(pinAzul, OUTPUT);  //Asignación de los pines de salida y entradas.
 pinMode(piezo, OUTPUT);
 pinMode(ldr, INPUT);
 Serial.begin(9600);    //activa el monitor serial donde se leen los valores dados por el programa.
}



void loop() 
{          
  digitalWrite(pinRojo, HIGH);  //procedimiento para encender y apagar los leds.
  digitalWrite(pinAzul, LOW);
  delay(500);
  digitalWrite(pinRojo, LOW);
  digitalWrite(pinAzul, HIGH);
  delay(500);

  //tone (piezo,300,100);   //procedimiento para el tono de parlante piezo.
  //delay (100);
  //tone (piezo,450,100);
  //delay (100);
 
  while (analogRead(ldr) <=50)   //procedimiento para la fotocelda ldr menor o igual a 50.
  {
 digitalWrite(pinRojo, HIGH);
 digitalWrite(pinAzul, LOW);
 delay(100);
 digitalWrite(pinRojo, LOW);
 digitalWrite(pinAzul, HIGH);
 delay(100); 
 tone (piezo,2500,200);
 Serial.println(“oscuridad”);   // procedimiento activa la fotocelda.

 delay(100);
  }
{
  while (analogRead(ldr)>=500) // procedimiento para la fotocelda ldr mayor o igual a 500.
  {
  digitalWrite(pinRojo, LOW);  
  digitalWrite(pinAzul, LOW);
  Serial.println(“luz”);      // procedimiento apaga la fotocelda.
  }
   }
}



Página Principal


PROTOTIPOS INTERACTIVOS 2


Resultado de imagen para arduino uno animado


Resultado de imagen para arduino uno animado         Resultado de imagen para arduino uno animado


















Proyecto Final

Plantilla Inspiración Plantilla Implementación Proyecto final Prototipo que mide el nivel de temperatura en ...