Compare commits
5 Commits
8a419375aa
...
5f57eea889
Author | SHA1 | Date | |
---|---|---|---|
5f57eea889 | |||
282675a487 | |||
eebb4ad6cb | |||
a0710a79f7 | |||
9cf8305ad8 |
@ -4,7 +4,7 @@ class LedController {
|
|||||||
private:
|
private:
|
||||||
int bluePin = 32;
|
int bluePin = 32;
|
||||||
int redPin = 33;
|
int redPin = 33;
|
||||||
int greenPin = 25;
|
int greenPin = 27;
|
||||||
AlarmStatus* status;
|
AlarmStatus* status;
|
||||||
|
|
||||||
void turnOn(int led){
|
void turnOn(int led){
|
||||||
|
@ -1,2 +1,78 @@
|
|||||||
#include "alarm.h"
|
#include <XT_DAC_Audio.h>
|
||||||
|
|
||||||
|
#include "alarm.h"
|
||||||
|
#include "Arduino.h"
|
||||||
|
#include "sound.h"
|
||||||
|
#include "soc/rtc_io_reg.h"
|
||||||
|
#include "alarmSound.h"
|
||||||
|
|
||||||
|
// XT_Wav_Class SirenSound(sampleSound);
|
||||||
|
XT_Wav_Class SirenSound(alarmSound);
|
||||||
|
XT_DAC_Audio_Class DacAudio(25, 0);
|
||||||
|
uint32_t DemoCounter=0;
|
||||||
|
|
||||||
|
class Siren{
|
||||||
|
private:
|
||||||
|
int sirenPin = 25;
|
||||||
|
AlarmStatus* status;
|
||||||
|
float sinVal;
|
||||||
|
int toneVal;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void playSound(){
|
||||||
|
int max = 180;
|
||||||
|
Serial.println("Sound on " + String(sirenPin));
|
||||||
|
|
||||||
|
if(status->silent)
|
||||||
|
max = 2;
|
||||||
|
for(int x = 0; x < max ; x++){
|
||||||
|
//convert angle of sinusoidal to radian measure
|
||||||
|
sinVal = (sin(x*(3.1412/180)));
|
||||||
|
//generate sound of different frequencies by sinusoidal value
|
||||||
|
toneVal = 2000+(int(sinVal*1000));
|
||||||
|
//Set a frequency for Pin-out 8
|
||||||
|
|
||||||
|
// ledcAttach(sirenPin, toneVal, 3);
|
||||||
|
tone(sirenPin, toneVal, 3);
|
||||||
|
// buzzer->tone(toneVal, 3);
|
||||||
|
// TimerFreeTone(TONE_PIN, toneVal, 2, 5);
|
||||||
|
delay(2);
|
||||||
|
}
|
||||||
|
noTone(sirenPin);
|
||||||
|
// buzzer->noTone();
|
||||||
|
// ledcWrite(sirenPin,0); // No sound
|
||||||
|
// ledcDetach(sirenPin);
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
Siren(AlarmStatus* statusRef){
|
||||||
|
status=statusRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
Siren(AlarmStatus* statusRef, int pin){
|
||||||
|
status=statusRef;
|
||||||
|
sirenPin=pin;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Init(){
|
||||||
|
// pinMode(sirenPin, OUTPUT);
|
||||||
|
// DacAudio = XT_DAC_Audio_Class(sirenPin, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void SoundSiren(){
|
||||||
|
if(status->muted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// playSound();
|
||||||
|
// delay(500);
|
||||||
|
|
||||||
|
DacAudio.FillBuffer(); // Fill the sound buffer with data
|
||||||
|
if(SirenSound.Playing==false) // if not playing,
|
||||||
|
DacAudio.Play(&SirenSound); // play it, this will cause it to repeat and repeat...
|
||||||
|
Serial.println(DemoCounter++);
|
||||||
|
}
|
||||||
|
};
|
@ -4,11 +4,13 @@
|
|||||||
const int DOOR_OPEN = HIGH;
|
const int DOOR_OPEN = HIGH;
|
||||||
const int DOOR_CLOSED = LOW;
|
const int DOOR_CLOSED = LOW;
|
||||||
struct AlarmStatus{
|
struct AlarmStatus{
|
||||||
int doorStatus;
|
int doorStatus =DOOR_OPEN;
|
||||||
bool doorChanged;
|
bool doorChanged =false;
|
||||||
bool isArmed;
|
bool isArmed = false;
|
||||||
bool isFired;
|
bool isFired =false;
|
||||||
bool ledOn;
|
bool ledOn =true;
|
||||||
|
bool muted =false;
|
||||||
|
bool silent =false; //low sound
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
2848
esp32/alarmSound.h
Normal file
2848
esp32/alarmSound.h
Normal file
File diff suppressed because it is too large
Load Diff
BIN
esp32/diagram.png
Normal file
BIN
esp32/diagram.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 MiB |
@ -12,11 +12,14 @@ public:
|
|||||||
|
|
||||||
static const int DEFAULT_DOOR_SENSOR_PIN=23;
|
static const int DEFAULT_DOOR_SENSOR_PIN=23;
|
||||||
|
|
||||||
DoorSensor(int doorSensorPin, AlarmStatus* statusObj){
|
DoorSensor(AlarmStatus* statusObj, int doorSensorPin){
|
||||||
Serial.println("const.");
|
|
||||||
DOOR_SENSOR_PIN = doorSensorPin;
|
DOOR_SENSOR_PIN = doorSensorPin;
|
||||||
status = statusObj;
|
status = statusObj;
|
||||||
}
|
}
|
||||||
|
DoorSensor(AlarmStatus* statusObj){
|
||||||
|
DOOR_SENSOR_PIN = DEFAULT_DOOR_SENSOR_PIN;
|
||||||
|
status = statusObj;
|
||||||
|
}
|
||||||
void Init(){
|
void Init(){
|
||||||
pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
|
pinMode(DOOR_SENSOR_PIN, INPUT_PULLUP);
|
||||||
status->doorStatus = digitalRead(DOOR_SENSOR_PIN);
|
status->doorStatus = digitalRead(DOOR_SENSOR_PIN);
|
||||||
|
@ -1,17 +1,22 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include "alarm.h"
|
#include "alarm.h"
|
||||||
#include "doorSensor.h"
|
#include "DoorSensor.h"
|
||||||
#include "LedController.h"
|
#include "LedController.h"
|
||||||
|
#include "Siren.h"
|
||||||
// #include <WiFi.h>
|
// #include <WiFi.h>
|
||||||
|
|
||||||
AlarmStatus s = {DOOR_OPEN, false, false, false, true};
|
AlarmStatus s;
|
||||||
DoorSensor doorSensor(DoorSensor::DEFAULT_DOOR_SENSOR_PIN, &s);
|
DoorSensor doorSensor(&s);
|
||||||
LedController led(&s);
|
LedController led(&s);
|
||||||
|
Siren siren(&s);
|
||||||
|
|
||||||
void printStatus(){
|
void printStatus(){
|
||||||
String msg = String("Door: ") + String(doorSensor.IsDoorOpen() ? "Open" : "Closed");
|
String msg = String("Door: ") + String(doorSensor.IsDoorOpen() ? "Open" : "Closed");
|
||||||
|
msg = msg + " | Alarm: " + String(s.isArmed ? "Armed": "Disarmed");
|
||||||
msg = msg + " | Is Fired: " + String(s.isFired ? "Fired": "Not Fired");
|
msg = msg + " | Is Fired: " + String(s.isFired ? "Fired": "Not Fired");
|
||||||
msg = msg + " | Led: " + String(s.ledOn ? "On": "Off");
|
msg = msg + " | Led: " + String(s.ledOn ? "On": "Off");
|
||||||
|
msg = msg + " | Silent: " + String(s.silent ? "Silent": "Loud");
|
||||||
|
msg = msg + " | Muted: " + String(s.muted ? "Muted": "Not Muted");
|
||||||
Serial.println(msg);
|
Serial.println(msg);
|
||||||
}
|
}
|
||||||
void setup() {
|
void setup() {
|
||||||
@ -20,16 +25,15 @@ void setup() {
|
|||||||
printStatus();
|
printStatus();
|
||||||
doorSensor.Init();
|
doorSensor.Init();
|
||||||
led.Init();
|
led.Init();
|
||||||
printStatus();
|
siren.Init();
|
||||||
|
|
||||||
|
|
||||||
s.isArmed = doorSensor.IsDoorClosed();
|
s.isArmed = doorSensor.IsDoorClosed();
|
||||||
Serial.println("Alarm is " + String(s.isArmed ? "Armed" : "Disarmed"));
|
// Serial.println("Alarm is " + String(s.isArmed ? "Armed" : "Disarmed"));
|
||||||
// WiFi.mode(WIFI_STA);
|
// WiFi.mode(WIFI_STA);
|
||||||
// WiFi.disconnect();
|
// WiFi.disconnect();
|
||||||
// delay(100);
|
// delay(100);
|
||||||
|
|
||||||
Serial.println("Stp Done");
|
printStatus();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,10 +46,15 @@ void loop() {
|
|||||||
s.doorChanged=false;
|
s.doorChanged=false;
|
||||||
|
|
||||||
|
|
||||||
|
if(s.isFired){
|
||||||
|
s.silent = !s.silent;
|
||||||
|
siren.SoundSiren();
|
||||||
|
}
|
||||||
|
|
||||||
led.Update();
|
led.Update();
|
||||||
|
|
||||||
|
|
||||||
delay(1000);
|
// delay(1000);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +69,7 @@ void DoorEvent(){
|
|||||||
Serial.println("Alarm is armed, firing");
|
Serial.println("Alarm is armed, firing");
|
||||||
s.isFired=true;
|
s.isFired=true;
|
||||||
}else{
|
}else{
|
||||||
delay(500);
|
// delay(500);
|
||||||
Serial.println("The door-closing");
|
Serial.println("The door-closing");
|
||||||
s.isArmed=true;
|
s.isArmed=true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user