diff --git a/door-sensor/door-sensor.ino b/door-sensor/door-sensor.ino index fe6141a..bf8244a 100644 --- a/door-sensor/door-sensor.ino +++ b/door-sensor/door-sensor.ino @@ -1,25 +1,22 @@ #include -#include "pitches.h" +#include "melody.h" + #define IR_RECEIVE_PIN 7 -#include -#define TONE_PIN 8 + + const int DOOR_SENSOR_PIN = 13; -// notes in the melody: -int melody[] = { - NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 -}; +/* Connections: +* Door Sensor: Gnd & 13 +* Buzzer: Gnd & 8 +* Led Receptor: 7 & Gnd & 5V +*/ + -// note durations: 4 = quarter note, 8 = eighth note, etc.: -int noteDurations[] = { - 4, 8, 8, 4, 4, 4, 4, 4 -}; -int melody2[] = { 262, 196, 196, 220, 196, 0, 247, 262 }; -int duration[] = { 250, 125, 125, 250, 250, 250, 250, 250 }; int currentDoorState; // current state of door sensor int lastDoorState; // previous state of door sensor @@ -32,6 +29,10 @@ void setup() pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP); currentDoorState = digitalRead(DOOR_SENSOR_PIN); // read state + + if(useTimerFreeTone){ + Serial.println("configure to use timer free tone"); + } } int lastCmd; unsigned long lastTime; @@ -85,27 +86,6 @@ void handleDoor(){ } } -void playTone(){ - // // iterate over the notes of the melody: - // for (int thisNote = 0; thisNote < 8; thisNote++) { - - // // to calculate the note duration, take one second divided by the note type. - // //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. - // int noteDuration = 1000 / noteDurations[thisNote]; - // tone(8, melody[thisNote], noteDuration); - - // // to distinguish the notes, set a minimum time between them. - // // the note's duration + 30% seems to work well: - // int pauseBetweenNotes = noteDuration * 1.30; - // delay(pauseBetweenNotes); - // // stop the tone playing: - // noTone(8); - // } - - for (int thisNote = 0; thisNote < 8; thisNote++) { // Loop through the notes in the array. - TimerFreeTone(TONE_PIN, melody2[thisNote], duration[thisNote]); // Play thisNote for duration. - delay(50); // Short delay between notes. - } -} + diff --git a/door-sensor/melody.h b/door-sensor/melody.h new file mode 100644 index 0000000..f4f2a93 --- /dev/null +++ b/door-sensor/melody.h @@ -0,0 +1,50 @@ +#include "pitches.h" +#include + +// notes in the melody: +int melody[] = { + NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 +}; + +// note durations: 4 = quarter note, 8 = eighth note, etc.: +int noteDurations[] = { + 4, 8, 8, 4, 4, 4, 4, 4 +}; + +int melody2[] = { 262, 196, 196, 220, 196, 0, 247, 262 }; +int duration[] = { 250, 125, 125, 250, 250, 250, 250, 250 }; + +const bool useTimerFreeTone =true; + +#define TONE_PIN 8 + + + +void playTone(){ + if(useTimerFreeTone) + { + for (int thisNote = 0; thisNote < 8; thisNote++) { // Loop through the notes in the array. + TimerFreeTone(TONE_PIN, melody2[thisNote], duration[thisNote]); // Play thisNote for duration. + delay(50); // Short delay between notes. + } + return; + } + + // iterate over the notes of the melody: + for (int thisNote = 0; thisNote < 8; thisNote++) { + + // to calculate the note duration, take one second divided by the note type. + //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. + int noteDuration = 1000 / noteDurations[thisNote]; + tone(TONE_PIN, melody[thisNote], noteDuration); + + // to distinguish the notes, set a minimum time between them. + // the note's duration + 30% seems to work well: + int pauseBetweenNotes = noteDuration * 1.30; + delay(pauseBetweenNotes); + // stop the tone playing: + noTone(TONE_PIN); + } + + +} \ No newline at end of file