2016-01-10 Dobrica Pavlinusic <dpavlin@rot13.org>
*/
+#include <EEPROM.h>
+
const int led_pin = 13;
const int buzzer_pin = 4;
const int mosfet_pins[] = { 9, 10, 6 }; // PWM pins: 3,5,6,9,10,11
int LDR_SIZE = 1; // 1 number of LDR reading to average
int LDR_NOISE = 6; // 6 calibrate LDR noise level
+int LDR_CHANGE = 1; // do we report LDR changes?
#define PIR_TIMEOUT 10 // s
#endif
- Serial.print("Commands: b - beep, qwe/asd/zxc - MOSFETs, hjkl - single step fade, L - LDR, P - PIR\nLDR = ");
+ Serial.print("Commands: b - beep, qwe/asd/zxc - MOSFETs, hjkl - single step fade, ui/op/[/] - LDR size-+/noise-+/read/changes, P - PIR\nLDR = ");
int ldr = analogRead(ldr_pin);
Serial.println(ldr);
// recall startup values
for(int i=0; i<=2; i++) {
- analogWrite(mosfet_pins[i], mosfet_pwm[i]);
+ int pwm = EEPROM.read(i);
+ mosfet_pwm[i] = pwm;
+ analogWrite(mosfet_pins[i], pwm);
}
digitalWrite(led_pin, LOW);
ldr_count = 0;
ldr_sum = 0;
- if ( abs(ldr-last_ldr) > LDR_NOISE ) {
+ if ( abs(ldr-last_ldr) > LDR_NOISE && LDR_CHANGE ) {
Serial.print("LDR = ");
Serial.println(ldr);
last_ldr = ( last_ldr + ldr ) / 2;
case 'k': mosfet(vi_nr, (mosfet_pwm[vi_nr]+1)%255 ); break;
case 'l': vi_nr = ( vi_nr + 1 ) % 3; Serial.println(vi_nr); break;
- case 'L': Serial.println(ldr); break;
+ // LDR
+ case 'u': LDR_SIZE -= 1; Serial.println(LDR_SIZE); break;
+ case 'i': LDR_SIZE += 1; Serial.println(LDR_SIZE); break;
+ case 'o': LDR_NOISE -= 1; Serial.println(LDR_NOISE); break;
+ case 'p': LDR_NOISE += 1; Serial.println(LDR_NOISE); break;
+ case '[': Serial.println(ldr); break;
+ case ']': LDR_CHANGE = ! LDR_CHANGE; break;
+
case 'P': Serial.println(pir); break;
+ case 'S':
+ for(int i=0; i<3; i++) EEPROM.write(i, mosfet_pwm[i]);
+ Serial.println("EEPROM store brightness");
+ break;
+
/*
m1 = (m1 + 10) % 255;
analogWrite(mosfet1_pin, m1);