Und welch Freude: weder die unmittelbare Nähe zur 230V-Kabelage
noch die zum 12V-Netzteil bringen den ATmega328 mit seinen 16MHz
durcheinander.
Eine winzige Firmware-Änderung könnte (irgendwann mal)
vielleicht noch sein, dass unmittelbar vor dem Abschalten des
Relais ein
display.println("Power
off");
ans OLED gesendet wird. Oder ein
delay(3000);
unmittelbar dahinter. Oder -noch besser- beides.
Praktisch bleibt das OLED nach PowerOff nämlich noch zwei bis
drei Sekunden an und zeigt den Wert der Countdown-Variable nach
einem Nulldurchgang an.
Der angezeigte Wert auf dem OLED lautet 18:12:15.
Das entspricht
18*60*60+
12*60+
15=65.535
Sekunden.
Und die Zahl kennt man ja: 2
16-1 oder auch 2
0+2
1+...+2
14+2
15.
Hier noch der angekündigte
Link auf
Thingiverse für das Gehäuse.
Und
hier nur das
SCAD-File - falls Thingiverse demnächst endgültig kaputt
oder gleich ganz offline ist.
Weil Thingiverse nach geschlagenen acht Tagen immer noch keine
3D-Vorschau anzeigt, muss man es wohl bereits jetzt als
kaputt
betrachten.
Daher habe ich mein 3D-Modell auch zu MyMiniFactory hochgeladen.
Hier der
Link
zum Ausschalttimer.
Und zu Cults3D musste ich es nicht mal hochladen. Die spiegeln
meine Thingiverse-Designs vollautomatisch in ihre Sammlung. Hier
der
entsprechende
Link.
ein kleiner Upgrade
...weil der gammlige Drehgeber nach knapp vier Monaten den Geist
aufgegeben hat.
Ersetzt habe ich ihn durch einen
Drehgeber
von Reichelt bzw. der Firma ALPS, der einzeln mehr kostet,
als die 10 Stück vom Chinesen (konkret 4,45€ zu
4,06€/10).
Da das Gehäuse dafür ohnehin wieder geöffnet werden musste, kam
auch gleich der angedachte
Firmware-Upgrade zur v1.1
drauf.
Und die musste ich zweimal flashen, weil ich in der 1.0'er
Firmware das gemacht hatte, was ich
eigentlich nie
mehr machen wollte. Da stand:
if(remaining_seconds<1)
digitalWrite(RELAIS,
LOW);
// ...und bei Ablauf der Wartezeit den [eigenen] Saft
abdrehen"
|
und wenn man das dann erweitert nach:
if(remaining_seconds<1)
// Test auf Abschaltbedingung
display.clearDisplay();
// bei Ablauf der Wartezeit...
display.setCursor(10, 10);
display.println("Power
Off");
// ...Abschalt-Meldung ausgeben
display.display();
digitalWrite(RELAIS,
LOW);
// ...und den [eigenen] Saft abdrehen
delay(10000);
// warten, bis alle Kondensatoren leer sind
|
dann geht das natürlich schief - okay, nicht in Python...aber in
C schon.
Weil mir das nicht das erste Mal so passiert ist, hatte ich mir
eigentlich fest vorgenommen, auch einzelne Statements hinter
einer if-Anweisung
grundsätzlich in geschweifte Klammern
zu setzen.
Merke: Pfusch rächt sich immer!
Leider passt der 3D-gedruckte Drehknopf nicht mehr auf den neuen
Drehgeber, weil dieser 5mm länger als der vorige ist.
Dementsprechend gibt es jetzt also auch eine
v1.1a der scad-Datei. Die
v1.1 war schon vergeben und hatte Lüftungsschlitze im Oberteil
nachgerüstet.
Neu gedruckt habe ich das geänderte Oberteil bisher jedoch
nicht.
Zusammen mit dem Drehgeber habe ich mir übrigens auch ein sehr
viel kompakteres
AC/DC-Modul
bestellt. Falls ich irgendwann mal einen weiteren Ausschalttimer
aufbauen sollte, werde ich eine 12V-Version von dem Ding
benutzen... und das Gehäuse auf halbe Größe eindampfen.