2 Over complicated desk LED dimmer
3 2016-01-10 Dobrica Pavlinusic <dpavlin@rot13.org>
6 const int led_pin = 13;
7 const int buzzer_pin = 4;
8 const int mosfet_pins[] = { 9, 10, 6 };
9 int mosfet_pwm[] = { 0, 0, 0 };
14 pinMode(led_pin, OUTPUT);
15 pinMode(buzzer_pin, OUTPUT);
17 for(int i=0; i<sizeof(mosfet_pins); i++) pinMode(mosfet_pins[i], OUTPUT);
19 Serial.println("Commands: b - beep, qwe/asd/zxc - MOSFETs");
23 void mosfet(int nr, int value) {
24 int pwm = mosfet_pwm[nr];
26 Serial.println("ignored");
29 Serial.print("MOSFET ");
32 Serial.println(value);
33 int sleep = 1000 / abs(pwm - value);
34 int step = pwm < value ? 1 : -1;
35 for(int i=pwm; i != value; i += step) {
36 analogWrite(mosfet_pins[nr], i);
40 analogWrite(mosfet_pins[nr], value);
41 mosfet_pwm[nr] = value;
45 if (Serial.available()) {
46 digitalWrite(led_pin, HIGH);
47 int in = Serial.read();
50 tone(buzzer_pin, 1800, 100);
52 tone(buzzer_pin, 2200, 100);
55 case 'q': mosfet(0, 255); break;
56 case 'a': mosfet(0, 127); break;
57 case 'z': mosfet(0, 0); break;
58 case 'w': mosfet(1, 255); break;
59 case 's': mosfet(1, 127); break;
60 case 'x': mosfet(1, 0); break;
61 case 'e': mosfet(2, 255); break;
62 case 'd': mosfet(2, 127); break;
63 case 'c': mosfet(2, 0); break;
67 analogWrite(mosfet1_pin, m1);
68 Serial.print("MOSFET 1 = ");
73 analogWrite(mosfet1_pin, m1);
74 Serial.print("MOSFET 1 = ");
79 Serial.print("unknown command ");
82 digitalWrite(led_pin, LOW);