aboutsummaryrefslogtreecommitdiff
path: root/arduino_sketch/fuzzy_alarm_clock_ds1307
diff options
context:
space:
mode:
Diffstat (limited to 'arduino_sketch/fuzzy_alarm_clock_ds1307')
-rw-r--r--arduino_sketch/fuzzy_alarm_clock_ds1307/fuzzy_alarm_clock_ds1307.pde54
1 files changed, 28 insertions, 26 deletions
diff --git a/arduino_sketch/fuzzy_alarm_clock_ds1307/fuzzy_alarm_clock_ds1307.pde b/arduino_sketch/fuzzy_alarm_clock_ds1307/fuzzy_alarm_clock_ds1307.pde
index 8a88b38..c08bd6a 100644
--- a/arduino_sketch/fuzzy_alarm_clock_ds1307/fuzzy_alarm_clock_ds1307.pde
+++ b/arduino_sketch/fuzzy_alarm_clock_ds1307/fuzzy_alarm_clock_ds1307.pde
@@ -3,7 +3,7 @@
#include <RealTimeClockDS1307.h>
// minutes of "dawn" before alarm
-#define TIN 30
+#define TIN 2
// "dawn" + "daylight"
#define TDAY 45
// "dawn" + "daylight" + blue blinding light
@@ -13,17 +13,22 @@
#define NALARMS 4
// pins and addressed
-#define RPIN 3
-#define YPIN 5
-#define BPIN 6
+#define RPIN 5
+#define YPIN 6
+#define BPIN 9
-#define APIN 9
+#define APIN0 3
+#define APIN1 11
int st = 0; // alarm status (minutes from alarm - TIN)
char alarms[NALARMS][5]; // alarm settings
char cmin; // current minute
int a = -1; // current alarm
char dbg = 0; // print debug informations
+bool ringing = false; // sound the alarm
+
+#define NFREQ 9
+int freq[] = { 255, 192, 128, 96, 64, 96, 128, 192, 255 }; // frequencies for the alarm
void setup () {
Serial.begin(9600);
@@ -33,6 +38,11 @@ void setup () {
pinMode(YPIN,OUTPUT);
pinMode(BPIN,OUTPUT);
+ pinMode(APIN0,INPUT);
+ pinMode(APIN1,INPUT);
+ TCCR2A = _BV(COM2A0) | _BV(COM2B1) | _BV(WGM20);
+ TCCR2B = _BV(WGM22) | _BV(CS22);
+
digitalWrite(RPIN,255);
digitalWrite(YPIN,255);
digitalWrite(BPIN,0);
@@ -90,9 +100,13 @@ void loop () {
set_leds();
}
if ( st == TIN ) {
+ ringing = true;
+ } else {
+ ringing = false;
+ }
+ if ( ringing ) {
ring_alarm();
}
-
// wait about till the next second
delay(1000);
@@ -339,26 +353,14 @@ void set_leds() {
// PC speaker
//
void ring_alarm() {
- analogWrite(APIN,8);
- delay(500);
- analogWrite(APIN,0);
- delay(500);
- analogWrite(APIN,16);
- delay(500);
- analogWrite(APIN,0);
- delay(500);
- analogWrite(APIN,32);
- delay(500);
- analogWrite(APIN,0);
- delay(500);
- analogWrite(APIN,64);
- delay(500);
- analogWrite(APIN,0);
- delay(500);
- analogWrite(APIN,128);
- delay(500);
- analogWrite(APIN,0);
- delay(500);
+
+ pinMode(APIN1,OUTPUT);
+ for (int i=0; i<NFREQ ; i++) {
+ OCR2A = freq[i];
+ delay(50);
+ }
+ pinMode(APIN1,INPUT);
+
}
// vim: set filetype=c: