Fix buzzer volume
This commit is contained in:
parent
c43e7d379f
commit
43921bc4f2
4 changed files with 92 additions and 92 deletions
|
|
@ -7,17 +7,20 @@
|
|||
#define MODE_SETALARM 2
|
||||
|
||||
#define PIN_BUTTON 3
|
||||
#define PIN_BUZZER_LOUD 8
|
||||
#define PIN_BUZZER_QUIET 12
|
||||
#define PIN_LED_DUTY A0
|
||||
#define PIN_BUZZER 5
|
||||
#define PIN_REG_CLOCK 7
|
||||
#define PIN_REG_DATA 5
|
||||
#define PIN_REG_DATA 4
|
||||
#define PIN_REG_LATCH 6
|
||||
#define PIN_TOUCH_0 11
|
||||
#define PIN_TOUCH_1 10
|
||||
#define PIN_TOUCH_2 2
|
||||
#define PIN_TOUCH_3 9
|
||||
#define PIN_TOUCH_COM A1
|
||||
|
||||
CapacitiveSensor touch_0 = CapacitiveSensor(A1, 11);
|
||||
CapacitiveSensor touch_1 = CapacitiveSensor(A1, 10);
|
||||
CapacitiveSensor touch_2 = CapacitiveSensor(A1, 2);
|
||||
CapacitiveSensor touch_3 = CapacitiveSensor(A1, 9);
|
||||
CapacitiveSensor touch_0 = CapacitiveSensor(PIN_TOUCH_COM, PIN_TOUCH_0);
|
||||
CapacitiveSensor touch_1 = CapacitiveSensor(PIN_TOUCH_COM, PIN_TOUCH_1);
|
||||
CapacitiveSensor touch_2 = CapacitiveSensor(PIN_TOUCH_COM, PIN_TOUCH_2);
|
||||
CapacitiveSensor touch_3 = CapacitiveSensor(PIN_TOUCH_COM, PIN_TOUCH_3);
|
||||
|
||||
// Matrix state
|
||||
unsigned char matrix[8] = {0b10000001, 0, 0, 0, 0, 0, 0, 0b10000001};
|
||||
|
|
@ -44,6 +47,7 @@ unsigned long last_light_measure = 0;
|
|||
|
||||
unsigned long touch_time[4] = {0, 0, 0, 0};
|
||||
unsigned long last_touch_measure = 0;
|
||||
unsigned char touch_step = 0;
|
||||
|
||||
// Bytewise reverse
|
||||
unsigned char reverse(unsigned char b) {
|
||||
|
|
@ -111,8 +115,7 @@ void setup() {
|
|||
pinMode(PIN_REG_DATA, OUTPUT);
|
||||
pinMode(PIN_REG_CLOCK, OUTPUT);
|
||||
pinMode(PIN_REG_LATCH, OUTPUT);
|
||||
pinMode(PIN_BUZZER_QUIET, OUTPUT);
|
||||
pinMode(PIN_BUZZER_LOUD, OUTPUT);
|
||||
pinMode(PIN_BUZZER, OUTPUT);
|
||||
pinMode(PIN_BUTTON, INPUT_PULLUP);
|
||||
|
||||
pinMode(13, OUTPUT);
|
||||
|
|
@ -133,23 +136,37 @@ void loop() {
|
|||
#endif
|
||||
|
||||
// Calibrate the thresholds according to your resistors
|
||||
if(millis() > last_touch_measure + 50) {
|
||||
if(touch_0.capacitiveSensor(10) > 127 && millis() > touch_time[0] + 250) {
|
||||
touch_time[0] = millis();
|
||||
mode = (mode+1) % 3;
|
||||
}
|
||||
if(touch_1.capacitiveSensor(10) > 127 && millis() > touch_time[1] + 250) {
|
||||
touch_time[1] = millis();
|
||||
number_selection = (number_selection+1) % 4;
|
||||
}
|
||||
if(touch_2.capacitiveSensor(10) > 32 && millis() > touch_time[2] + 200) {
|
||||
touch_time[2] = millis();
|
||||
change_selected_number(1);
|
||||
}
|
||||
if(touch_3.capacitiveSensor(10) > 32 && millis() > touch_time[3] + 200) {
|
||||
touch_time[3] = millis();
|
||||
change_selected_number(-1);
|
||||
if(millis() > last_touch_measure + 15) {
|
||||
switch(touch_step) {
|
||||
case 0:
|
||||
if(touch_0.capacitiveSensor(10) > 126 && millis() > touch_time[0] + 250) {
|
||||
touch_time[0] = millis();
|
||||
mode = (mode+1) % 3;
|
||||
stop_ringing();
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if(touch_1.capacitiveSensor(10) > 126 && millis() > touch_time[1] + 250) {
|
||||
touch_time[1] = millis();
|
||||
number_selection = (number_selection+1) % 4;
|
||||
stop_ringing();
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if(touch_2.capacitiveSensor(10) > 31 && millis() > touch_time[2] + 150) {
|
||||
touch_time[2] = millis();
|
||||
change_selected_number(1);
|
||||
stop_ringing();
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if(touch_3.capacitiveSensor(10) > 31 && millis() > touch_time[3] + 150) {
|
||||
touch_time[3] = millis();
|
||||
change_selected_number(-1);
|
||||
stop_ringing();
|
||||
}
|
||||
}
|
||||
touch_step = (touch_step + 1) % 4;
|
||||
last_touch_measure = millis();
|
||||
}
|
||||
|
||||
|
|
@ -162,31 +179,15 @@ void loop() {
|
|||
}
|
||||
|
||||
if(alarm_ringing) {
|
||||
if(alarm_ring_start + 30000 > millis()) {
|
||||
if(millis()%1000 < 100) {
|
||||
matrix[7] = 0b11111111;
|
||||
digitalWrite(PIN_BUZZER_LOUD, LOW);
|
||||
digitalWrite(PIN_BUZZER_QUIET, HIGH);
|
||||
} else {
|
||||
matrix[7] = 0b10000001;
|
||||
digitalWrite(PIN_BUZZER_LOUD, LOW);
|
||||
digitalWrite(PIN_BUZZER_QUIET, LOW);
|
||||
}
|
||||
if(millis()%1000 < 100) {
|
||||
matrix[7] = 0b11111111;
|
||||
analogWrite(PIN_BUZZER, 1);
|
||||
} else {
|
||||
if(millis()%1000 < 100) {
|
||||
matrix[7] = 0b11111111;
|
||||
digitalWrite(PIN_BUZZER_LOUD, HIGH);
|
||||
digitalWrite(PIN_BUZZER_QUIET, LOW);
|
||||
} else {
|
||||
matrix[7] = 0b10000001;
|
||||
digitalWrite(PIN_BUZZER_LOUD, LOW);
|
||||
digitalWrite(PIN_BUZZER_QUIET, LOW);
|
||||
}
|
||||
matrix[7] = 0b10000001;
|
||||
digitalWrite(PIN_BUZZER, LOW);
|
||||
}
|
||||
if(digitalRead(PIN_BUTTON) == LOW) {
|
||||
digitalWrite(PIN_BUZZER_LOUD, LOW);
|
||||
digitalWrite(PIN_BUZZER_QUIET, LOW);
|
||||
alarm_ringing = false;
|
||||
stop_ringing();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -217,3 +218,9 @@ void change_time(unsigned long *t, signed int mul) {
|
|||
}
|
||||
*t %= 86400000;
|
||||
}
|
||||
|
||||
void stop_ringing() {
|
||||
digitalWrite(PIN_BUZZER, LOW);
|
||||
matrix[7] = 0b10000001;
|
||||
alarm_ringing = false;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue