Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Controle Solenoide com Sensor de luz
- // wdt// pretendo usar o wdt para resetar a contagem do millis() depois de executar os void's noite() e dia()
- #include <avr/wdt.h>
- // controle valvula solenoide
- int ValvPin = 13; //Solenoide no pino 5
- boolean Estado = LOW;
- /// config LDR
- int ldrPin = 1; //LDR no pino analígico 8
- int ldr = 0;//Valor lido do LDR
- // intervalos a serem utilizados, substitui eles para valores pequenos a titulo de teste
- unsigned long tempo = 0; // ldr()
- unsigned long tempo2 = 0; // noite()
- unsigned long tempo1 = 0; // dia()
- const long umSeg = 1000; // intervalo 1seg
- const long quatroSeg = 4000; // intervalo seg
- const long dezMin = 600000; // intervalo 10min
- const long sessentaMin = 3600000; // intervalo 60 min
- const long trintaMin = 1800000; // intervalo 30 min
- const long centoEvinteMin = 7200000; // intervalo 120 min
- int LDR() {// faz a leitura do sensor e converte
- ///ler o valor do LDR
- ldr = analogRead(ldrPin); //O valor lido será entre 0 e 1023
- if (millis() - tempo >= 1000) {
- tempo = millis();
- //imprime o valor lido do LDR no monitor serial
- Serial.println(ldr);
- }
- }
- void dia () { // ações a serem executas quando for identificado dia
- if (millis() - tempo1 >= 1001) {// deixei valores de intervalos direto
- tempo1 = millis();
- digitalWrite(ValvPin, !Estado);
- Serial.println("dia");
- }
- if (millis() - tempo1 >= 4000) {// deixei valores de intervalos direto
- tempo1 = millis();
- digitalWrite(ValvPin, Estado);
- }
- // wdt_reset(); //diz que esta tudo ok
- }
- void noite () { // ações a serem executadas quando for identificado noite
- if (millis() - tempo2 >= 2000) {
- tempo2 = millis();
- digitalWrite(ValvPin, !Estado);
- Serial.println("noite");
- }
- if (millis() - tempo2 >= 4000) { /// ta errado aqui
- tempo2 = millis();
- digitalWrite(ValvPin, Estado);
- }
- // wdt_reset(); //diz que esta tudo ok
- }
- void LDRcontrol() {
- LDR(); // lê sensor
- //Os valores da luminosidade podem ser alterados conforme a necessidade
- //Luminosidade baixa
- if (ldr >= 800) {
- noite(); // executa ações noturnas
- }
- //Luminosidade media a alta
- else if (ldr <= 800) {
- dia ();// executa ações diurnas
- }
- }
- void loop() {
- LDRcontrol();//
- //delay(1000);
- }
- void setup() {
- // wdt_disable();
- pinMode(ValvPin, OUTPUT); //define a porta 7 como saída
- Serial.begin(9600); //Inicia a comunicação serial
- // wdt_enable(WDTO_2S); //Função que ativa e altera o Watchdog
- // WDTO_1S
- // WDTO_2S
- // WDTO_4S
- // WDTO_8S
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement