Hola a todos.
Necesito controlar un dimmer utilizando un temporizador externo al programa principal, pues el control del dimmer debe estar ejecutandose a la vez que el programa principal de control. La idea es inizar el timer cuando hay paso por cero en la red. Se que el lenguaje arduino no tiene funcion especifica. A ver si me pueden explicar como ejecutar un timer en la placa arduino mega. Muchas gracias.
Este es un ejemplo mas o menos de lo que quiero hacer, pero necesito que al OCR1A se le asigne un valor que se calcula en el loop() y en vez de encender el led quiero que se dispare el triac del dimmer. El inicio de la comparacion tiene que ser en la deteccion de paso por cero.
/* Arduino 101: timer and interrupts
1: Timer1 compare match interrupt example
more infos: http://www.letmakerobots.com/node/28278
created by RobotFreak
*/
#define ledPin 13
void setup()
{
pinMode(ledPin, OUTPUT);
// initialize timer1
noInterrupts(); // disable all interrupts
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 0;
OCR1A = 31250; // compare match register 16MHz/256/2Hz
TCCR1B |= (1 << WGM12); // CTC mode
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << OCIE1A); // enable timer compare interrupt
interrupts(); // enable all interrupts
}
ISR(TIMER1_COMPA_vect) // timer compare interrupt service routine
{
digitalWrite(ledPin, digitalRead(ledPin) ^ 1); // toggle LED pin
}
void loop()
{
// your program here...
}