Hola les comento este circuito lo quiero usar en un acuario para simular el amanecer y el ocaso (modo3 o 4 en la explicacion);mi experiencia solo es armado de circuitos basicos nada con pic y programacion, yo erme y echufe y no ocurrio nada ni humo, lellendo un poco mas creo que el integrado es una memoria y lellendo otro poco en el foro supe que abia que programar el integrado. ¿Alguien podri alludarme? no tengo idea de programacion o de que hacer de ante mano gracias
en esta pagina esta el circuito
http://usuarios.lycos.es/jomasi/dimmer.htm lo que e pillado en el foro es esto pero no tengo idea si realizasa el efecto que nesecito : que al tocar el pulsador comience a encender y luego al tocar el pulsador otra vez comience a apagarce
// PROYECTO DIMMER DIGITAL para DESPERTADOR ////////////////////////////////
#include <12F675.h>
#device ADC=10
#fuses INTRC_IO,WDT,PUT,NOPROTECT,NOCPD,NOMCLR,BROWNOUT
#use delay(clock=4000000,restart_wdt)
#ROM 0x3ff = {0x3478}
#define GP0 PIN_A0
#define GP1 PIN_A1 // Triac
#define GP2 PIN_A2
#define GP3 PIN_A3
#define GP4 PIN_A4
#define GP5 PIN_A5
#ZERO_RAM
set_tris_a( 0b000010001 );
int j=1; int valor=110; long i=0; long k=0;
void init()
{
disable_interrupts(GLOBAL);
disable_interrupts(INT_EXT);
disable_interrupts(INT_TIMER0);
disable_interrupts(INT_TIMER1);
output_low(GP1);
setup_comparator(NC_NC_NC_NC);
setup_adc_ports( NO_ANALOGS ); // disable analog inputs
delay_ms(750);
}
/// Interrupción del TIMER0, provoca el retardo deseado antes de la excitación
#INT_TIMER0
void tempo()
{
output_high(GP1); // Ha transcurrido el tiempo, activo la salida
}
// Interrupción Externa, provocada por el paso por 0V de la señal de entrada
#INT_EXT
void externa()
{
set_timer0(valor);
enable_interrupts(INT_TIMER0);
output_low(GP1);
if (j==0)
{
output_high(GP4);
j=1;
ext_int_edge(H_TO_L); // Cambio la detección del flanco, para que la
} // proxima sea de bajada
else if(j==1)
{
output_low(GP4);
j=0;
ext_int_edge(L_TO_H); // La próxima interrupción será de subida
}
}
void main()
{
init();
enable_interrupts(INT_EXT);
ext_int_edge(L_TO_H);
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_64);
enable_interrupts(GLOBAL);
do{
if (input (GP3))
{
for(i=0;i<1999;i++)
{
delay_ms(1);
k=k+1;
If(k>=1999)
{
k=0;
valor=valor+1;
}
if (valor >= 252) valor=252;
if(!input(GP3)) break;
}
}
else
{
disable_interrupts(INT_TIMER0);
valor=110;
output_low(GP1);
output_low(GP4);
i=0;
k=0;
}
}while(true);
}