const int ldr_pin = A3; // LDR +5 -- A3 -[10K]- GND
const int pir_pin = A2;
+
#define TOUCHPAD 1 // set this to 0 if debugging without touchpad
#define PIR_TIMEOUT 10 // s
PS2 mouse(8, 7); // PS2 synaptics clock, data
#endif
-int mosfet_pwm[] = { 255, 255, 255 }; // initial and current state of mosfet pwm
+
+int mosfet_pwm[] = { 127, 127, 127 }; // initial and current state of mosfet pwm
+
+void MOSFET_PWM(int i, int pwm) {
+ analogWrite(mosfet_pins[i], pwm);
+ Serial.print("MOSFET=");
+ Serial.print(i);
+ Serial.print(":");
+ Serial.println(pwm);
+}
+
void setup() {
Serial.begin(115200);
int sleep = 1000 / abs(pwm - value);
int step = pwm < value ? 1 : -1;
for(int i=pwm; i != value; i += step) {
- analogWrite(mosfet_pins[nr], i);
- Serial.println(i);
+ MOSFET_PWM(nr, i);
delay(sleep);
}
- analogWrite(mosfet_pins[nr], value);
+ MOSFET_PWM(nr, value);
mosfet_pwm[nr] = value;
}
int last_pir = 0;
long int pir_millis = millis();
+
void loop() {
#if TOUCHPAD
Serial.print("\tpwm = ");
Serial.print(pwm);
if ( nr >= 0 && nr <= 2 && pwm >= 0 && pwm <= 255 ) {
- analogWrite(mosfet_pins[nr], pwm);
- Serial.print("\tOK");
+ Serial.println("\tOK");
+ MOSFET_PWM(nr, pwm);
} else {
- Serial.print("\tIGNORED");
+ Serial.println("\tIGNORED");
}
}
- Serial.println();
}
#endif
Serial.println("PIR timeout, fade-out");
pir_millis = -1; // mark that we are in timeout
for(int i=0; i<=2; i++) {
- analogWrite(mosfet_pins[i], 0);
+ MOSFET_PWM(i, 0);
}
}
} else {
if (pir_millis < 0) {
Serial.println("PIR fade-in after timeout");
for(int i=0; i<=2; i++) {
- analogWrite(mosfet_pins[i], mosfet_pwm[i]);
+ MOSFET_PWM(i, mosfet_pwm[i]);
}
}
pir_millis = ms;