Go Down

Topic: Ajuda no Codigo Activar Sensor PIR entre uma certa hora 21:00 /00:00 (Read 784 times) previous topic - next topic

rodolfovieira

Viva eu tenho o seguinte codigo todo a funcionar:


O que pretendo , coisas que nao consigo fazer e peço ajuda é:

Eu pretendia que esse sensor pir que está no codigo, apenas se activasse entre as 21:00 até as 00:00.
Atraves do que esta feito alguem pode alterar o projecto e colocar online?

Obrigado

HugoPT

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

bubulindo

This... is a hobby.

rodolfovieira

Eu tenho o rtc time.

Vou mostrar ja o que ta feito.

Code: [Select]
/*
* HeroAlarm
*
*
*/

#include <Time.h> 
#include <Wire.h> 
#include <DS1307RTC.h>
#include <TimeAlarms.h>

//////////////////

int calibrationTime = 0;       
long unsigned int lowIn;         
long unsigned int pause = 0; 
boolean lockLow = true;
boolean takeLowTime; 

int pirPin = 8;    //SINAL DO PIR
int ledPin = 12; // LUZ DO SENSOR PIR RELE NUMERO 2
////////////////


int relePin  = 13; // RELE connected to digital pin 2
int radioPin = 03; // RADIO connected to digital pin 3
//int releDiaEspecificoPin = 02; // RELE connected to digital pin 4
int numero;


#define RELE1 11 // ROUTER RELE NUMERO 1
#define RELE2 22
#define RELE3 20
#define RELE4 21

//int pirpin = HIGH;
//int ledpin = LOW;
int RELE1_STATE = HIGH;
int RELE2_STATE = LOW;
int RELE3_STATE = LOW;
int RELE4_STATE = LOW;




//=======================================================
// ENTRADAS DTMF DIGITAIS
//=======================================================
int pinBit01 = 7; // azul
int pinBit02 = 6; // branco
int pinBit03 = 5; // amarelo
int pinBit04 = 4; // verde
int pinBitSts= 3; // laranja


int bit01 = 0;   
int bit02 = 0;   
int bit03 = 0;   
int bit04 = 0; 
int bitSts= 0; 




boolean proceed = false; //Fag que habilita o funcionamento dos comandos mediante senha digitada corretamente - inicializa falso!


String tmpPass =' '; //Armazenamento da senha digitada no telemóvel!


String password = "1234"; // Defina sua senha aqui - pode ser de quaisquer número de dígitos!




void setup()  {
  Serial.begin(9600);
// pinMode(relePin, OUTPUT);
// digitalWrite(relePin, LOW);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  digitalWrite(pirPin, HIGH);
  pinMode(pirPin, INPUT);

  //digitalWrite(pirPin, LOW);
  pinMode(RELE1, OUTPUT); // ROUTER
// pinMode(RELE2, OUTPUT); 
  //pinMode(RELE3, OUTPUT); 
  //pinMode(RELE4, OUTPUT); 
 
  digitalWrite(RELE1, HIGH); //ROUTER
  //digitalWrite(RELE2, LOW); 
  //digitalWrite(RELE3, LOW); 
  //digitalWrite(RELE4, LOW); 
 


  Serial.println("Aguardando comando...");



  setSyncProvider(RTC.get);   // the function to get the time from the RTC
  if(timeStatus()!= timeSet)
  Serial.println("Unable to sync with the RTC");
  else
  Serial.println("RTC has set the system time");       
     
  //Alarm.alarmRepeat(dowSaturday,00,57,30, ligarReleSegundaFeira);  // Ligar todas as segundas feiras as 20:00:00 um rele
// Alarm.alarmRepeat(dowSaturday,00,58,00, desligarReleSegundaFeira);  // Desligar á segunda feira também as 23:50:00.

  //Alarm.alarmRepeat(8,00,0, ligarRadio);  // Ligar todos os dias as 08:00:00 um radio
  //Alarm.alarmRepeat(18,00,14, desligarRadio);  //  e desligar as 18:00:14
 

 
  }



void loop(){
  digitalClockDisplay();
  //Alarm.delay(0); // wait one sec

bitSts= digitalRead(pinBitSts);
bit01 = digitalRead(pinBit01);   
bit02 = digitalRead(pinBit02);   
bit03 = digitalRead(pinBit03);   
bit04 = digitalRead(pinBit04);   


numero   = (bit01 * 1) + (bit02 * 2) + (bit03 * 4) + (bit04 * 8);


if (bitSts == HIGH && numero < 13) { 
 
Serial.print("Recebido: ");   
switch (numero){
      case 1:
        Serial.println("1");
        tmpPass += '1'; //Adiciona o número digitado em tmpPass
       
        /* COMANDO PARA RELE1 */
        if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!
        {
          RELE1_STATE = !RELE1_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.
          digitalWrite(RELE1, RELE1_STATE); //Liga-desliga Relé.
        }       
        break;
       
      case 2:
        Serial.println("2");
        tmpPass += '2'; //Adiciona o número digitado em tmpPass
       
        /* COMANDO PARA RELE2 */
        if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!
        {
          RELE2_STATE = !RELE2_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.
          digitalWrite(RELE2, RELE2_STATE); //Liga-desliga Relé.
        }
        break;
       
      case 3:
        Serial.println("3");
        tmpPass += '3'; //Adiciona o número digitado em tmpPass
       
        /* COMANDO PARA RELE3 */
        if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!
        {
          RELE3_STATE = !RELE3_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.
          digitalWrite(RELE3, RELE3_STATE); //Liga-desliga Relé.
        }
       
        break;
       
      case 4:
        Serial.println("4");
        tmpPass += '4'; //Adiciona o número digitado em tmpPass
       
        /* COMANDO PARA RELE4 */
        if (proceed == true) // Se proceed é verdadeiro (a senha foi digitada corretamente) comando é executado!
        {
          RELE4_STATE = !RELE4_STATE; // Troca de estado (HIGH/LOW) cada vez que pressionar o botão.
          digitalWrite(RELE4, RELE4_STATE); //Liga-desliga Relé.
        }
       
        break;
       
      case 5:
        Serial.println("5");
        tmpPass += '5'; //Adiciona o número digitado em tmpPass
        break;
       
      case 6:
        Serial.println("6");
        tmpPass += '6'; //Adiciona o número digitado em tmpPass
        break;
       
      case 7:
        Serial.println("7");
        tmpPass += '7'; //Adiciona o número digitado em tmpPass
        break;
       
      case 8:
        Serial.println("8");
        tmpPass += '8'; //Adiciona o número digitado em tmpPass
        break;
       
      case 9:
        Serial.println("9");
        tmpPass += '9'; //Adiciona o número digitado em tmpPass
        break;
       
      case 10:
        Serial.println("0");
        tmpPass += '0'; //Adiciona o número digitado em tmpPass
        break;
       
      case 11: // Caractere '*'
        Serial.println("*");
        tmpPass =' '; //Limpa para armazenar a senha novamente!
        proceed = false; //Desabilita todos os comandos até que a senha seja digitada novamente!
        break;
       
      case 12: // Caractere '#'
        Serial.println("#");
       
        tmpPass = tmpPass.trim();//Retira os espaços em branco - ver caractere '*'!
   
        if (tmpPass == password) { // Se a senha digitada for igual a senha armazenada...
          Serial.println("Senha correta!");
          proceed = true; //Habilita todos os comandos via telemóvel
        }else{
          Serial.println("Senha ERRADA!");
          proceed = false; //Desabilita todos os comandos via telemóvel
        }
       
        /*
        //Caso queira ver a saida da senha é só descomentar
        Serial.print("tmpPass= ");
        Serial.println(tmpPass);
        Serial.print("password= ");
        Serial.println(password);
        */
       
        break;   
  }


 
 
// Zeram todas as variáveis
  numero = 0;
  bit01 = 0;   
  bit02 = 0;   
  bit03 = 0;   
  bit04 = 0;   
  bitSts= 0; 
  delay (500);
  }




 

    if(digitalRead(pirPin) == LOW){
      digitalWrite(ledPin, HIGH);   //the led visualizes the sensors output pin state
       if(lockLow){ 
         lockLow = false;           
         
         delay(50);
         }         
         takeLowTime = true;
       }

     if(digitalRead(pirPin) == HIGH){       
      digitalWrite(ledPin, LOW);  //the led visualizes the sensors output pin state

       if(takeLowTime){
        lowIn = millis();          //save the time of the transition from high to LOW
        takeLowTime = false;       //make sure this is only done at the start of a LOW phase
        }
     
       if(!lockLow && millis() - lowIn > pause){ 
           //makes sure this block of code is only executed again after
           //a new motion sequence has been detected
           lockLow = true;                       
          delay(50);
           }
       }
 



}
////////////////////////////////////////////////////////



 









void ligarReleSegundaFeira() {
  digitalWrite(relePin, HIGH); // Ligar um rele



void desligarReleSegundaFeira() {
  digitalWrite(relePin, LOW); // Desligar um rele



void ligarRadio() {
  digitalWrite(radioPin, HIGH); // Ligar um Radio



void desligarRadio() {
  digitalWrite(radioPin, LOW); // Desligar um Radi






void digitalClockDisplay(){
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year());
Serial.println();
}

void printDigits(int digits){
   //utility function for digital clock display: prints preceding colon and leading 0
Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);

}



Go Up