Go Down

Topic: Counter with relay and RF Reset Button (Read 605 times) previous topic - next topic

Smokers_Choice

Jan 22, 2014, 07:55 pm Last Edit: Jan 22, 2014, 08:04 pm by Smokers_Choice Reason: 1
Counter with relay and RF Reset Button for counter

My idea was that example. every 10 minutes, the relay will go high, unless I press a button that resets the counter inside the 10 min. has elapsed.

But I have a little trouble with my code, but it should otherwise be simple, but no.

My code:
Code: [Select]


#include <RCSwitch.h>
unsigned long time;

int alarmTime = 25;
int countTime = 30;
int resetTime = 35;

int Relay = 12;

RCSwitch mySwitch = RCSwitch();

const int radiopause = 499;

void setup() {
 
 pinMode(Relay, OUTPUT);
 Serial.begin(9600);
 mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
 }

void loop() {
 
 Serial.print("Time: ");
 time = millis()/1000;
 //prints time since program started
 Serial.println(time);
 delay(250);
//********  
 if (time == alarmTime) { //
 for(int i=0; i<6; i++) {
 tone(8, 440, 500);
 }
 
 if (time == countTime) { //
 noTone(8);
 digitalWrite(Relay, HIGH);
 delay(3000);
 digitalWrite(Relay, LOW);
 delay(100);
 }
 
 if (time == resetTime) { //
 extern volatile unsigned long timer0_millis, timer0_overflow_count;
 noInterrupts();
 timer0_millis = timer0_overflow_count = 0;
 interrupts();
 }
//*************************************************************************************  
 if (mySwitch.available()) {
   
   int value = mySwitch.getReceivedValue();
 
   if (value == 0) {
     Serial.print("Unknown encoding");
   } else {
     Serial.print("Received ");
     Serial.print( mySwitch.getReceivedValue() );
     Serial.print(" / ");
     Serial.print( mySwitch.getReceivedBitlength() );
     Serial.print("bit ");
     Serial.print("Protocol: ");
     Serial.println( mySwitch.getReceivedProtocol() );
 }
 
//********
 if ( mySwitch.getReceivedValue() == 7618572) { //1. Lightning! - 7618572 - Remote 2 Ext.
 delay(100);
 digitalWrite(Relay, HIGH);
 delay(3000);
 digitalWrite(Relay, LOW);
 delay(100);
 }
 
 if ( mySwitch.getReceivedValue() == 7618563) { //3. Unlock - 7618563 - stop! Remote 2 Ext.
 delay(100);
 extern volatile unsigned long timer0_millis, timer0_overflow_count;
 noInterrupts();
 timer0_millis = timer0_overflow_count = 0;
 interrupts();
 }
 
 delay(radiopause);
 mySwitch.resetAvailable();
 
 }
 }
 }


Regards
Nicolai

Smokers_Choice

I have removed this line:

for(int i=0; i<6; i++) {

Code: [Select]

#include <RCSwitch.h>
unsigned long time;

int alarmTime = 570;
int countTime = 600;
int resetTime = 605;

int Relay = 12;

RCSwitch mySwitch = RCSwitch();

const int radiopause = 250;

void setup() {
 
  pinMode(Relay, OUTPUT);
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on inerrupt 0 => that is pin #2
  }

void loop() {
 
  Serial.print("Time: ");
  time = millis()/1000;
  //prints time since program started
  Serial.println(time);
  delay(250);
//******** 
 
  if (time == alarmTime) { //
  tone(8, 440, 500);
  }
 
  if (time == countTime) { //
  noTone(8);
  digitalWrite(Relay, HIGH);
  delay(3000);
  digitalWrite(Relay, LOW);
  delay(100);
  }
 
  if (time == resetTime) { //
  extern volatile unsigned long timer0_millis, timer0_overflow_count;
  noInterrupts();
  timer0_millis = timer0_overflow_count = 0;
  interrupts();
  }
 
  if (mySwitch.available()) {
   
    int value = mySwitch.getReceivedValue();
 
    if (value == 0) {
      Serial.print("Unknown encoding");
    } else {
      Serial.print("Received ");
      Serial.print( mySwitch.getReceivedValue() );
      Serial.print(" / ");
      Serial.print( mySwitch.getReceivedBitlength() );
      Serial.print("bit ");
      Serial.print("Protocol: ");
      Serial.println( mySwitch.getReceivedProtocol() );
  }
 
  if ( mySwitch.getReceivedValue() == 7618572) { //1. Lightning! - 7618572 - Remote 2 Ext.
  delay(100);
  digitalWrite(Relay, HIGH);
  delay(3000);
  digitalWrite(Relay, LOW);
  delay(100);
  }
 
  if ( mySwitch.getReceivedValue() == 7618563) { //3. Unlock - 7618563 - stop! Remote 2 Ext.
  delay(100);
  extern volatile unsigned long timer0_millis, timer0_overflow_count;
  noInterrupts();
  timer0_millis = timer0_overflow_count = 0;
  interrupts();
  }
 
  delay(radiopause);
  mySwitch.resetAvailable();
  }
  }

Go Up