Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <TimerOne.h> // inclui biblioteca Timer1
- #define ZCport 2
- #define triacApin 9 // Define que o Dimmer será comandado pelo pino 9
- //#define pot A4
- int valorlido = 0; // inicializa variavel que controla potencia na lampada com 0 (lampada apagada)
- int valor = 0; // inicializa variavel que controla potencia na lampada com 0 (lampada apagada)
- long dimtime;
- //------------------
- void setup()
- {
- Serial.begin(9600);
- pinMode(triacApin, OUTPUT);
- pinMode(ZCport, INPUT);
- digitalWrite(triacApin, LOW);
- // Attach the interrupt 0 to pin 2 for the detection of zero crossing (Zero Cross Detection)
- attachInterrupt(0, zero_cross_detect, FALLING); // Attach an Interrupt to Pin 2 (Interrupt 0) for Zero Cross Detection
- }
- //------------------
- void loop()
- {
- if (Serial.available() > 0)
- {
- valorlido = Serial.parseInt(); //
- }
- valor = map(valorlido, 0, 100, 1, 100);
- // valor = map(analogRead(pot), 0, 1023, 0, 100);
- }
- //------------------
- void zero_cross_detect()
- {
- dimtime = map(valor, 0, 100, 8000, 150); // calcula o tempo de delay para o disparo do TRIAC 7950,100
- Timer1.initialize(dimtime);
- Timer1.attachInterrupt(gateTRIAC); // associa a funcao gateTRIAC com Interrupcao do TIMER1
- }
- //------------------
- void gateTRIAC () // trata interrupcao do TIMER1 gerando pulso no gate do TRIAC
- {
- Timer1.stop();
- digitalWrite(triacApin, HIGH); // dispara o Triac
- delayMicroseconds(5); // aguarda 5 microsegundos para garantir disparo do TRIAC
- digitalWrite(triacApin, LOW); // desabibilta gate do TRIAC
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement