Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Rotina para dimmer. (110v ou 220v) comandado pela serial
- // Os valores de brilho da lampada são enviados ao Arduino pelo Serial Monitor.
- // O Serial monitor deve ser configurado como "No line ending".
- // Os valoes vão de 0 (min) a 100(max).
- // Uso didático
- // Rui 01/05/2015
- //*************** Variaveis e constantes *************
- int LAMP = 3; // Pino de disparo do Triac
- unsigned int dimming = 115; // Variavel para tempo de retardo. Valor Inicial Minimo
- String str; // Variavel string para receber dados da Serial
- //*********************** Setup ********************
- void setup() // Rotina de setup
- {
- Serial.begin(9600); // Inicializa a serial a 9600 bps
- pinMode(LAMP, OUTPUT); // Define o pino(D3) LAMP como saÃda
- attachInterrupt(0, zero_cross, RISING); // Enable interrupt no pino D2
- Serial.println("Digite o valor de brilho de 0 min a 100 max"); // Mensagem de entrada
- }
- //*********************** Loop ********************
- void loop() // Rotina de loop
- {
- if(Serial.available() > 0) // Verifica se tem dados disponiveis na serial
- {
- str = Serial.readStringUntil('\n'); // Le os dados da serial para uma string
- dimming = str.toInt(); // Transforma a string em Interio
- Serial.println(dimming); // Eco da entrada da serial
- dimming = (118-dimming)*68; // Calcula o retardo para o disparo do triac
- if (dimming <1224) dimming = 1224; // Valor para o brilho máximo 1224
- if (dimming >7820) dimming = 7820; // Valor para o brilho minimo 7820
- }
- delay(10);
- }
- //******************** Zero_Cross_Int ****************
- void zero_cross() // Rotina chamada à cada interrupt causada pelo zero cross do AC
- {
- delayMicroseconds(dimming); // Restardo calculado
- digitalWrite(LAMP, HIGH); // Dispara o Triac
- delayMicroseconds(8.33); // Duração do pulso de disparo
- digitalWrite(LAMP, LOW); // Desliga pulso de disparo
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement