From 40e0d86c1364b1f0c2395a42c5e1b49730b7e31e Mon Sep 17 00:00:00 2001 From: pro100sasho <65253560+pro100sasho@users.noreply.github.com> Date: Tue, 23 Jun 2020 22:45:32 +0300 Subject: Added Alarm MicroController Code --- Code from circuits/Alarm/Alarm.ino | 104 +++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 Code from circuits/Alarm/Alarm.ino diff --git a/Code from circuits/Alarm/Alarm.ino b/Code from circuits/Alarm/Alarm.ino new file mode 100644 index 0000000..7ad8a31 --- /dev/null +++ b/Code from circuits/Alarm/Alarm.ino @@ -0,0 +1,104 @@ +#include + +#define NOTE_C5 523 +#define NOTE_D5 587 +#define NOTE_E5 659 +//Defining the notes' frequencies for the melody + +#define interval 10000 +//Time in millisecconds between first and second alarm + +#define BTN_PIN 2 +#define STRIP_PIN 3 +#define LED_COUNT 4 +#define PIEZZO_PIN 5 + +#define MELODY_LENGTH 4 + +int melodies[2][MELODY_LENGTH] = +{ + {NOTE_C5, NOTE_E5, NOTE_D5, 0}, + {NOTE_C5, NOTE_C5, NOTE_C5, NOTE_C5} +}; + +int noteDurations[] = +{ + 1000 / 8, 1000 / 8, 1000 / 8, 1000 / 2 +}; + +Adafruit_NeoPixel strip = Adafruit_NeoPixel(LED_COUNT, STRIP_PIN, NEO_GRB + NEO_KHZ800); +unsigned long color = strip.Color(255, 255, 255); + +bool ButtonIsPressed() +{ + return digitalRead(BTN_PIN) == 1; +} + +void ledToggle() +{ + if(strip.getPixelColor(0) == strip.Color(0,0,0)) + { + strip.fill(color); + } + else + { + strip.clear(); + } + strip.show(); +} + +void playNote(int noteDuration, int noteToPlay) +{ + tone(PIEZZO_PIN, noteToPlay, noteDuration); + delay(noteDuration * 1.30); + + noTone(PIEZZO_PIN); +} + +void PlayMelodyAndLEDs(int position) +{ + for(int i = 0; i < MELODY_LENGTH; i++) + { + playNote(noteDurations[i], melodies[position][i]); + ledToggle(); + delay(100); + + } +} + +void setup() +{ + pinMode(BTN_PIN, INPUT); + pinMode(STRIP_PIN, OUTPUT); + pinMode(PIEZZO_PIN, OUTPUT); + strip.begin(); +} + +void Alarm(unsigned long timeSinceActivation) +{ + while(ButtonIsPressed()) + { + if(millis() - timeSinceActivation > interval) + { + color = strip.Color(255, 0, 0); + PlayMelodyAndLEDs(1); + } + else + { + color = strip.Color(255, 255, 0); + PlayMelodyAndLEDs(0); + } + } +} + + + +void loop() +{ + if(ButtonIsPressed()) + { + Alarm(millis()); + } + delay(100); +} + -- cgit v1.2.3