I have a count up and down timer that will turn on a fan and buzzer when the timer hits 60 seconds and back down to zero. I am using a remote control to control the entire circuit. The timer is trying to count up but it seems my void function names are not in the right place or something. So far I have gotten to where the timer is trying to count but won't leave zero. Also, if someone could help me try to interface my buzzer with the timer and remote that would be helpful too. And I can give the specs for the motor once the timer is working if someone wishes to help me with the motor and buzzer as well. Thank you.
#include <ir_Lego_PF_BitStreamEncoder.h>
#include <boarddefs.h>
#include <IRremoteInt.h>
#include <IRremote.h>
int pinCount = 2; //number of pins in the array
//Define Sensor Pin
const int RECV_PIN =22;
//Define LED Constants
const int bluePin =26;
const int greenPin =28;
const int redPin =24;
//Define IR Reciever and Results Objects
IRrecv irrecv(RECV_PIN);
decode_results results;
//Button Definition
boolean Power=false;
boolean Play=false;
//Define Integer to Remember Toggle State
int togglestate = 0;
unsigned long time;
unsigned long time2;
int counter;
bool upCounter = false;
bool downCounter = false;
bool mainCounter = false;
//Define Pins of 4 digit 7 segment Display
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
//Define Digital Pins of Display
int d4 = 12;
int d3 = 11;
int d2 = 10;
int d1 = 9;
//Math
long n = 0; //n represents value displayed on display
long y = 60000; //y represents start time of count down
int x = 100;
int del = 5; //value is the degree of fine tuning the clock
int count = 0; //Set count=0. Here count is a count value that increases by 1 every 0.1 second, which means 1 second is counted when the value is 10
//Timer
int timer = 500;
int value;
void setup() {
Serial.begin(9600);
irrecv.enableIRIn();
//Set LEDs as Outputs
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
//Set LED Display Pins as Outputs
pinMode(d1, OUTPUT);
pinMode(d2, OUTPUT);
pinMode(d3, OUTPUT);
pinMode(d4, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
time = millis();
}
void loop() {
time2 = millis();
if( time2- time >= 1000){
time = time2;
}
if(mainCounter == true){
if(time2- time >= 1000){
if( upCounter == true){
counter++;
if(counter >= 60){
upCounter = false;
downCounter = true;
}
}
else if(downCounter == true){
counter--;
if(counter <=0){
upCounter =true;
downCounter = false;
mainCounter = false;
}
}
time = time2;
}
}
if (irrecv.decode(&results)){
int value = results.value;
Serial.println(value);
switch(value){
case 0xFFA25D:
//Power ON/OFF
Power= !Power;
if(Power){
digitalWrite(bluePin, 0xFF);
digitalWrite(redPin, 0x00);
digitalWrite(greenPin, 0x00);
digitalWrite(d1, LOW);
digitalWrite(d2, LOW);
digitalWrite(d3, LOW);
digitalWrite(d4, LOW);
}
if(!Power){
digitalWrite(bluePin, LOW);
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
}
delay(1500);
break;
}
switch(value){
case 0xFF22DD:
//Play/Pause
Play= !Play;
if(Play){
mainCounter =true;
digitalWrite(bluePin, 0x00);
digitalWrite(redPin, 0xFF);
digitalWrite(greenPin, 0x00);
clearLEDs();//clear the 7-segment display screen
pickDigit(0);//Light up 7-segment display d1
pickNumber((n/1000));// get the value of thousand
delay(del);//delay 5ms
clearLEDs();//clear the 7-segment display screen
pickDigit(1);//Light up 7-segment display d2
pickNumber((n%1000)/100);// get the value of hundred
delay(del);//delay 5ms
clearLEDs();//clear the 7-segment display screen
pickDigit(2);//Light up 7-segment display d3
pickNumber(n%100/10);//get the value of ten
delay(del);//delay 5ms
clearLEDs();//clear the 7-segment display screen
pickDigit(3);//Light up 7-segment display d4
pickNumber(n%10);//Get the value of single digit
delay(del);//delay 5ms
}
if(!Play){ //Pause
mainCounter =false;
digitalWrite(bluePin, 0xFF);
digitalWrite(redPin, 0x00);
digitalWrite(greenPin, 0x00);
}
delay(1500);
break;
}
irrecv.resume();
}
}
/**************************************/
void pickDigit(int x) //light up a 7-segment display
{
//The 7-segment LED display is a common-cathode one. So also use digitalWrite to set d1 as high and the LED will go out
digitalWrite(d1, HIGH);
digitalWrite(d2, HIGH);
digitalWrite(d3, HIGH);
digitalWrite(d4, HIGH);
switch(x)
{
case 0:
digitalWrite(d1, LOW);//Light d1 up
break;
case 1:
digitalWrite(d2, LOW); //Light d2 up
break;
case 2:
digitalWrite(d3, LOW); //Light d3 up
break;
default:
digitalWrite(d4, LOW); //Light d4 up
break;
}
}
//The function is to control the 7-segment LED display to display numbers. Here x is the number to be displayed. It is an integer from 0 to 9
void pickNumber(int x)
{
switch(x)
{
default:
zero();
break;
case 1:
one();
break;
case 2:
two();
break;
case 3:
three();
break;
case 4:
four();
break;
case 5:
five();
break;
case 6:
six();
break;
case 7:
seven();
break;
case 8:
eight();
break;
case 9:
nine();
break;
}
}
void clearLEDs() //clear the 7-segment display screen
{
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void zero() //the 7-segment led display 0
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
}
void one() //the 7-segment led display 1
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void two() //the 7-segment led display 2
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
void three() //the 7-segment led display 3
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
}
void four() //the 7-segment led display 4
{
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void five() //the 7-segment led display 5
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void six() //the 7-segment led display 6
{
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void seven() //the 7-segment led display 7
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
}
void eight() //the 7-segment led display 8
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}
void nine() //the 7-segment led display 9
{
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
}/code]