Ir ao conteúdo
  • Cadastre-se

Projeto "Automaçao residencial com pic"


jorgeletronico

Posts recomendados

Ola galera!Venho aqui mostrar um projeto simples que iniciei,com pic,gostaria de sujestoes opinioes,quem gostar pode pegar a ideia tbem e ajudar,o forum é pra isso mesmo.Se trata de uma pequena automaçao,é claro que bem simples ,nada de coisa muito complicada kkkkk,de um ponto especifico ,que meu caso sera meu quarto poderei controlar tudo na minha pequena casinha kkkkkk,desde luzes a ventilador,é claro que estou no inicio do projeto.Abaixo o que foi feito,e a imagem pra quem quiser montar e testar,é so compilar e desenhar o projeto no proteus.Abraços.....


#include <16f873a.h>

#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Clock <=4Mhz
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

#use delay(clock=4000000)


#include <flex_lcd.c>

#define botao_incremento PIN_a2
#define botao_decremento PIN_a3


int a=0,b=0,c=0,d=0;
int16 q;
int8 modo;
int lamp_q,lamp_c,lamp_cor;
int tempo;
float valor;
int temperatura;
#int_TIMER1
void trata_timer_1(void)
{
q++;
set_timer1 (3036);

}
#int_ccp2
void trata_ccp_2()
{
modo++;
if (modo >9)
{
modo = 0;
}
}

void principal()
{
while (modo == 0)
{
set_adc_channel(0);
delay_us(20);
valor = read_adc ();
temperatura = 5 * valor * 100/1024;
printf (lcd_putc, "\f Domotica ");
printf (lcd_putc, "\n Temp %02u",temperatura);
delay_ms(100);

}
}
void lampada_quarto()
{

while (modo == 1)
{
if (!input(BOTAO_INCREMENTO))
{
delay_ms (75);
c++;
}
if(c>1)
{
c=0;
}
if(c==1){
output_high(pin_c0);
a=1;
}

if (c==0)
{

output_low(pin_c0);
a=0;
}
printf (lcd_putc, "\f Iluminacao ");
if(a==1){
printf (lcd_putc, "\n Quarto-acesa");
delay_ms(100);
}

if(a==0){
printf (lcd_putc, "\n Quarto-apagada");
delay_ms(100);
}
}
}

void lampada_cozinha()
{

while (modo == 2)
{
if (!input(BOTAO_INCREMENTO))
{
delay_ms (75);
d++;
}
if(d>1)
{
d=0;
}
if(d==1){
output_high(pin_c2);
a=1;
}

if (d==0)
{

output_low(pin_c2);
a=0;
}
printf (lcd_putc, "\f Iluminacao ");
if(b==1){
printf (lcd_putc, "\n Cozinha-acesa");
delay_ms(100);
}

if(b==0){
printf (lcd_putc, "\n Cozinha-apagada");
delay_ms(100);
}
}
}
void lampada_externa()
{
while (modo == 1)
{


if (!input(BOTAO_INCREMENTO))
{
delay_ms (75);
tempo++;
}

if (!input(BOTAO_DECREMENTO))
{
delay_ms (75);
tempo--;

}
delay_ms(100);
printf (lcd_putc, "\filuminaçao ext\n");
}
}

void main()
{

lcd_init();
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8);
set_timer1 (3036);
setup_ccp2(CCP_CAPTURE_RE);
enable_interrupts (int_ccp2);
enable_interrupts (global);
#priority timer1,ccp2
while(1){


modo=0;
principal();
modo=1;
lampada_quarto();
modo=2;
lampada_cozinha();
}
}




Obs:Lembrando que o projeto esta simplificado somente para testes,projeto real ira usar reles ,ou triac pra acionar as cargas ac....

Link para o comentário
Compartilhar em outros sites

Grande Mano Jorge, saudades de nossas montagens, onde faziamos os teste dos circuitos, pena que meu material ficou SP e aqui não tenho como fazer as montagens.

Meu grande amigo/irmão acompanharei este tópico e o que lhe puder ajudar nas opiniões e sugestões conte sempre comigo.

Abração

JA

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...