Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Nome do Projeto: ALX
- Nome do Aquivo: Dimmer_ALX2.ino
- link:
- Dependencias: Wire.h
- LiquidCrystal_I2C.h
- Thread.h
- ThreadController.h
- MCU: ATmega
- Board: Arduino Uno/Mega/Mini
- Compilador N/A
- IDE: Arduino IDE 1.6.6
- Hardware: Arduino UNO/MEGA/Mini
- Escrito por: Rui Viana
- Modificado por: N/A
- Data: 08/06/2016
- Uso: Didático
- Desenhos Fase_Detec2.jpg
- Copyright @ N/A
- Este programa é software livre;
- e é distribuído na esperança que possa ser útil, mas SEM QUALQUER GARANTIA;
- mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM.
- REVISIONS: (latest entry first)
- 08/06/2016 - Dimmer_ALX2.ino - First release
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Descrição:
- Este código
- */
- // Programa: Dimmer. Acionamento de um dimmer com Triac e potenciometro
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 7, 6, 5, 4, 3, POSITIVE); // Set the LCD I2C address
- #include <Thread.h> // Bibioteca das threads
- #include <ThreadController.h> // Bibioteca de controle das threads
- Thread Calculo; // Define thread de calculo do trigger
- Thread Display; // Define thread de display no LCD
- Thread Temperatura; // Define thread de temperatura do forno
- #define Triac 3 // Disparo do Triac: pino D3
- #define Pot A0 // Potenciometro: pino A4
- #define ZeroC 2 // Detetor de zero: pino D2
- int t; // Calculo do tempo de trigger
- int time; // Tempo entre a detecao de zero e o acionamento do triac
- //----------------------------------
- void setup() // Inicializa os pinos como entrada ou saida
- {
- lcd.begin(16,2); // Inicializa LCD
- //Serial.begin(9600);
- pinMode(Triac, OUTPUT); // Pino de trigger do Triac como saida
- pinMode(Pot, INPUT); // Pino do potenciometro como entrada anlogica
- pinMode(ZeroC, INPUT); // Pino do zerocross como entrada
- attachInterrupt(0, Dimmer, FALLING); // Associa a borda de descida do detetor de zero com a funcao dimmer(), que aciona o triac
- Calculo.setInterval(1); // Thread de 1 ms para calcular o tempo de trigger
- Calculo.onRun(Le_Pot); // Executa função de ler o valor do pot e calcular o tempo de trigger
- Display.setInterval(1); // Thread de 1 ms para o display
- Display.onRun(Escreve); // Executa função de escreve no LCD
- Temperatura.setInterval(1); // Thread de 1 ms para medira a temperatura
- Temperatura.onRun(Aquecimento); // Executa função de medir o aquecimento do forno
- }
- //----------------------------------
- void loop()
- {
- if(Calculo.shouldRun()) // Se deve executar a thread Calculo
- Calculo.run(); // Execute a thread Calculo
- if(Display.shouldRun()) // Se deve executar a thread Display
- Display.run(); // Execute a thread Display
- if(Temperatura.shouldRun()) // Se deve executar a thread Temperatura
- Temperatura.run(); // Execute a thread Temperatura
- }
- //----------------------------------
- void Le_Pot()
- {
- t = analogRead(Pot) * 7.1652 + 1; // Le o valor do potenciometro (de 0 a 1023) e converte para o delay de acionamento do triac (de 1 a 7331us)
- //t = map(analogRead(Pot),0,1023,0,7331);
- noInterrupts(); // Atualiza a variavel "time", desabilitando as interrupcoes para que nao haja conflito no acesso.
- time = t; // Define time igual ao valor t
- interrupts(); // Habilita interrupcoes
- }
- //----------------------------------
- void Dimmer() // passou por Zero
- {
- delayMicroseconds(time); // Espera ate o momento correto (variavel "time") e aciona o triac
- digitalWrite(Triac, HIGH); // Dispara o triac
- delayMicroseconds(200); // Gera a borda de descida do pulso do triac com largura de 200us
- digitalWrite(Triac, LOW); // Desativa o disparo
- }
- //----------------------------------
- void Escreve() // Escreve no display
- {
- //lcd.clear();
- lcd.setCursor(0,0); // Linha 0 posicao 0 do LCD
- lcd.print("Pot "); // imprime
- lcd.print(t); // imprime
- lcd.print(" "); // imprime
- }
- //----------------------------------
- void Aquecimento() // Mede o valor da temperatura no forno
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement