Garaje automatico
Enviado por FI JuanSebastianAvilaLuque • 26 de Agosto de 2017 • Informe • 3.183 Palabras (13 Páginas) • 440 Visitas
El proyecto garaje automático trata que mediante sensores se abra y se cierre la puerta del garaje e indique cuando se debe detener el auto , el procedimiento consiste en: por medio de un celular se digita una clave y la puerta del garaje abre, luego hace una secuencia de luces y en el LCD sale un mensaje de bienvenida, después mediante unos sensores de luz detecta en donde está el auto y según el sensor hace una operación, con el primer sensor, enciende el led verde y la puerta se abre, con el segundo sensor, el led rojo enciende, suena un busser y la puerta se cierra, y si ningún sensor detecta, el led amarrillo prendera.
Nuestro proyecto lo pensábamos hacer con un sensor de ultrasonido para poder medir la distancia y ser más precisos en la ubicación del auto, pero debido a que el sensor de ultrasonido no nos daba una medida correcta, decidimos usar fotorresistencia o sensores sensibles a la luz, para determinar la posición del auto pero tuvimos otra dificultad los sensores no detectaban bien ya que dependía de la luz que les llegara, entonces tuvimos que poner un potenciómetro para ajustarlos según la intensidad de la luz.
Luego necesitábamos que el motor girara en ambos sentidos entonces investigamos y tuvimos que hacer un puente h por medio de varios transistores y unas resistencias para que el motor girara en ambos sentidos, luego de cuadrar los sensores y probar que todo funcionara empezamos a programar y el código nos quedó así:
#include <18F4550.h>
#fuses NOMCLR INTRC_IO,XT,NOPROTECT,NOBROWNOUT,NOWDT,PUT,NOCPD,NODEBUG,NOLVP,NOMCLR,HSPLL,PLL5,CPUDIV1,VREGEN,USBDIV
#use delay(clock = 48000000)
#USE rs232(baud=9600, parity=N , xmit=Pin_C6, rcv=Pin_C7, bits=8)
#include <stdlib.h>
#include <math.h>
#define LCD_E PIN_E2 // definimos los puertos para el lcd
#define LCD_CK PIN_E1 // definimos los puertos para el lcd
#define LCD_DAT PIN_E0 // definimos los puertos para el lcd
#include <LCD4x20_3PIN.C> //agregamos una librería
#include <KBD18F.C>
#ROM 0xf00000={0x9819}
#ROM 0xf00002={0x1234}
long segundos;
long auxsegundos;
char datom;
int datoe[4];
int clave[4],b,i;
int p;
int d;
int x;
void teclado_movil() //método para usar el teclado desde el celular
{
segundos=0;
auxsegundos=0;
b=6;
lcd_putc('\f');
for (i=0;i<4;i++)
{
do{
if(input(PIN_D4))
{
delay_ms(60);
d = input_D();
d= d & 0x0F;
switch (i+1)
{
case 1:
clave[0]=d;
swap(clave[0]);
lcd_gotoxy(6,1);
printf(lcd_putc,"*");
delay_ms(50);
break;
case 2:
clave[1]=d;
clave[0]=clave[0]+clave[1];
printf(lcd_putc,"*");
delay_ms(50);
break;
case 3:
clave[2]=d;
swap(clave[2]);
printf(lcd_putc,"*");
delay_ms(50);
break;
case 4:
clave[1]=d;
clave[1]=clave[1]+clave[2];
printf(lcd_putc,"*");
delay_ms(50);
break;
}
i++;
delay_ms(500);
segundos=0;
auxsegundos=0;
auxsegundos++;
if(auxsegundos >20)
{
segundos++;
auxsegundos=0;
}
}
}while((segundos<6)&&(i<4));
clave[i]='#';
lcd_gotoxy(b,1);
printf(lcd_putc,"*");
b++;
auxsegundos=0;
segundos=0;
}
}
void una_tecla() // método para una tecla
{
lcd_putc('\f');
auxsegundos=0;
segundos=0;
do{
datom=kbd_getc();
delay_ms(60);
if(datom != '\0')
{
lcd_gotoxy(8,1);
lcd_putc(datom);
delay_ms(3000);
datom=datom-0x30;
segundos=6;
}
auxsegundos++;
if (auxsegundos>20)
{
auxsegundos=0;
segundos++;
}
}while(segundos < 6);
}
void leer() // método para leer la memoria del microcontrolador
{
for(i=0; i<4; i++)
{
datoe[i]=read_eeprom(i);
delay_ms(5);
}
}
void escribir()
{
for(i=0; i<2; i++)
{
write_eeprom(p,clave[i]);
delay_ms(5);
p++;
}
}
void main(){
setup_adc_ports(NO_ANALOGS);
set_tris_B(0x0C); // configuramos el Puerto B
/*
Pin_B0 =motor
Pin_B1 =motor
Pin_B2 =sensor 1
Pin_B3 =sensor 2
Pin_B4 =led Verde
Pin_B5=led Amarillo
Pin_B6= led rojo
Pin_B7=busser
*/
set_tris_A(0x03); // configuramos el Puerto A
Pin_B0=sensor 2
...