Prezados,
Estou desenvolvendo um circito com PIC 16F628A e preciso incluir uma função de acender, apagar e controlar luminosidade de uma lampada 12VAC (L1).
O mesmo botão quando pressionado liga lampada, se pressionado mais uma vez desiga a lampada mas se deixar pressionado ele precisa ir aumentando o brilho dessa lampada até o máximo. dai se eu soltar e voltar a deixar pressionado o brilho vem reduzindo até o mínimo assim por diante. Pensei em fazer com a ajuda de um Dimmer conforme imagem. Poderiam me ajudar no código ? ou com um outro hardware que seja mais simples e economico? Uso o MikroC
#define subida_encosto RA0_bit
#define descida_encosto RA1_bit
#define subida_cadeira RA2_bit
#define descida_cadeira RA3_bit
#define lamp RA4_bit
#define lamp_on RB0_bit
#define subida_encosto_on RB1_bit
#define descida_encosto_on RB2_bit
#define subida_cadeira_on RB3_bit
#define descida_cadeira_on RB4_bit
void volta_zero();
void main()
{
bit flag_lamp;
CMCON = 7;
TRISA = 0xff;
TRISB = 0;
PORTA = 0xff;
PORTB = 0xfe;
while(1)
{
if(Button(&PORTA, 0, 50, 0))
subida_encosto_on = 0;
else
subida_encosto_on = 1;
if(Button(&PORTA, 1, 50, 0))
descida_encosto_on = 0;
else
descida_encosto_on = 1;
if(Button(&PORTA, 2, 50, 0))
subida_cadeira_on = 0;
else
subida_cadeira_on = 1;
if(Button(&PORTA, 3, 50, 0))
descida_cadeira_on = 0;
else
descida_cadeira_on = 1;
if(Button(&PORTA, 4, 50, 0) && (flag_lamp == 0))
{lamp_on = ~lamp_on;
flag_lamp = 1;
}
if(!Button(&PORTA, 4, 50, 0) && (flag_lamp == 1))
flag_lamp = 0;
if(Button(&PORTA, 7, 50, 0))
volta_zero();
}
}
void volta_zero()
{
lamp_on = 0;
subida_encosto_on = 0;
descida_cadeira_on = 0;
delay_ms(7000);
}