Go Down

Topic: Ajuda no Codigo Activar Sensor PIR entre uma certa hora 21:00 /00:00 (Read 610 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

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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