#include "pitches.h"
#include "SevSeg.h"
#define SPEAKER_PIN 0
#define greenLED_pin 1
#define mSensor_pin 2
const int buttonTones[] = {
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
static unsigned long timer = millis();
static unsigned long timerLoop = millis();
const int COUNTDOWN_SEC = 15;
static int deciSeconds = COUNTDOWN_SEC*10;
static bool gotMotion = false;
static bool countdown_ended = false;
//bool greenLEDon = true;
SevSeg sevseg; //Instantiate a seven segment controller object
void setup() {
// put your setup code here, to run once:
//pinMode(greenLED_pin, OUTPUT);
//digitalWrite(greenLED_pin, HIGH);
pinMode(mSensor_pin, INPUT);
//pinMode(SPEAKER_PIN, OUTPUT);
Serial.begin(9600);
byte numDigits = 3;
byte digitPins[] = {3, 4, 5};
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13};
bool resistorsOnSegments = false; // 'false' means resistors are on digit pins
byte hardwareConfig = COMMON_ANODE; // See README.md for options
bool updateWithDelays = false; // Default 'false' is Recommended
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
bool disableDecPoint = false; // Use 'true' if your decimal point doesn't exist or isn't connected
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(90);
}
void playTune() {
tone(SPEAKER_PIN, NOTE_C4);
delay(100);
tone(SPEAKER_PIN, NOTE_D4);
delay(100);
tone(SPEAKER_PIN, NOTE_E4);
delay(100);
tone(SPEAKER_PIN, NOTE_F4);
delay(100);
noTone(SPEAKER_PIN);
}
void updateTimer() {
sevseg.setNumber(deciSeconds, 1);
if (millis() - timer >= 100) {
timer += 100;
deciSeconds--; // 100 milliSeconds is equal to 1 deciSecond
if (deciSeconds == 0) { // Reset to 0 after counting for 1000 seconds.
//deciSeconds=COUNTDOWN_SEC*10;
countdown_ended = true;
Serial.println("BOOMMM!!!!");
}
sevseg.setNumber(deciSeconds, 1);
}
//sevseg.refreshDisplay(); // Must run repeatedly
}
void checkMotion() {
if (deciSeconds % 10 == 0) {
gotMotion = digitalRead(mSensor_pin) == 1;
if (gotMotion) {
Serial.println("Got some montion!");
//playTune();
}
else {
Serial.println("No motion!");
//noTone(SPEAKER_PIN);
}
}
}
void loop() {
// digitalWrite(greenLED_pin, greenLEDon?LOW:HIGH);
// greenLEDon=!greenLEDon;
if (millis() - timerLoop >= 100) {
timerLoop += 100;
if (!gotMotion)
checkMotion();
if (gotMotion && !countdown_ended) {
updateTimer();
}
}
sevseg.refreshDisplay(); // Must run repeatedly
}