Ich liebe die leuchtende Uhr, und als ich eine andere brauchte, baute ich sie schnell auf einem Steckbrett aus ATtiny85, der Sieben-Segment-Anzeige TM1637 und der Echtzeituhr DS1307 zusammen. Während der Montage ließ mich jedoch das Gefühl nicht los, dass auf eine einfachere Steuerung verzichtet werden könnte. Und das stellte sich als wahr heraus.
Haftungsausschluss
Der Autor hat keinen technischen Hintergrund und die Arbeit bezieht sich nicht auf Mikrocontroller, denn mit Sicherheit ist alles so lala. Außerdem gibt es keine Optimierung des Energieverbrauchs - wir, das Arduino, haben es nicht akzeptiert!
Hardware
Zunächst habe ich die verfügbaren Lösungen untersucht und keine vorgefertigten Beispiele für den Anschluss eines Zweidraht-DS1307 an ATtiny13 gefunden. Weil
RTC durch einen Dreileiter-DS1302 ersetzt wurde. Zwei weitere Beine nahmen die Displayverbindung auf. Auf dem verbleibenden halben Fuß des Zurücksetzens befand sich eine Schaltfläche zum Einstellen der Zeit mit
StackOverflow und zwei Widerständen.
Endgültige Verbindung der Elemente
Anschlussplan (von staticmain )Für immer benötigen Sie noch 4,7-10K-Widerstände von den Beinen des PB1- und PB2-Mikrocontrollers (obere Mitte) zum Plus und einen 0,1μF-Kondensator zwischen Plus und Minus, aber es funktioniert ohne sie.
Software-Teil
Die Anzahl der Beine des ATtiny13 ist nicht das einzige Problem. Der verfügbare Speicher ist ebenfalls klein - nur 1 KB, weshalb vorgefertigte Bibliotheken nicht geeignet sind. Die Lösung besteht darin, das
MicroCore- Paket und die kompakte Bibliothek für
TM1637 zu verwenden . Für den DS1302 wurde nichts gefunden, daher musste ich ihn auf der Grundlage
dieses Repositorys selbst erstellen. Der resultierende Überwachungscode ist auf
GitHub verfügbar.
Schritt-für-Schritt-Anleitung für diejenigen, die wiederholen möchten
Teileliste- Mikrocontroller ATtiny13
- Anzeige auf TM1637
- Echtzeituhr DS1302
- Quarz bei 32768Hz
- Knopf
- Ein Widerstandspaar auf 1K und 10K
- 3 Volt Batteriehalter
- Steckbrett und Jumper oder Leiterplatte
Wenn Sie Ali-Express verwenden, dauert alles ungefähr 100 Rubel.- Als Programmierer - Arduino mit der in den Beispielen gelieferten ArduinoISP-Skizze, die darauf hochgeladen wurde. Wenn Sie wie ich Arduino Nano und die Pins 10-13 zum Verbinden verwenden, müssen Sie die Zeile 81 auskommentieren
#define USE_OLD_STYLE_WIRING
Nachdem Sie die Skizze zwischen die Beine des Bodens geladen und den Arduino abgeladen haben, müssen Sie einen Kondensator auf 10 mF setzen, obwohl einige ohne ihn genäht werden.

ATtiny13 Firmware-Prozess durch ein leicht staubiges Arduino
- Damit die Arduino IDE mit ATtiny13 arbeiten kann, wird der Inhalt von MicroCore dem Ordner% Program Files (x86)% / Arduino / hardware hinzugefügt. Danach wird in der IDE im Abschnitt Tools die ATtiny13-Karte mit den folgenden Einstellungen ausgewählt: BOD deaktiviert, LBO aktiviert, Clock 9.6 interner Osc.


- Git-Quellen enthalten bereits die für die Arbeit mit ds1302 und TM1637 erforderlichen Bibliotheken, die für die Arbeit mit den Pins (siehe Bibliotheksheaderdateien) bzw. dem Verbindungsbild konfiguriert sind. Laden Sie also einfach das Repository herunter und laden Sie clock.ino auf ATtiny13 hoch. Die Firmware nimmt fast den gesamten verfügbaren Speicherplatz ein.

Zusammengebautes Gerät auf einem Steckbrett. Grüne Punkte zeigen den Installationsort von ATtiny für Firmware an (das orangefarbene Plus-Stromkabel ist sehr schlecht sichtbar).
- Aufgrund der Besonderheit des Anschlusses der Taste, der ungenauen Widerstandswerte und der Versorgungsspannung kann es erforderlich sein, die Ansprechschwelle von analogRead in clock.ino (26. Zeile) zu ändern.
- Es war geplant, die Karte nach der LUT-Methode herzustellen, aber der Drucker fiel dabei aus, sodass die Überprüfung der resultierenden Karte auf unbestimmte Zeit verschoben wurde, bis sie repariert wurde.
Anstelle einer Schlussfolgerung
Die TM1637-Mikroschaltung, die eine Sieben-Segment-Anzeige steuert, verfügt über zweipolige Ausgänge, deren Status über die Schnittstelle gesendet werden kann. Sie werden jedoch auf dem Anzeigemodul nicht getrennt, und die verwendete Bibliothek unterstützt sie nicht.
Es wäre möglich, eine Platine für einen größeren Indikator zu züchten, indem Mikroschaltungen und ein Mikrocontroller auf einer Leiterplatte platziert werden, aber es schien mir, dass es in diesem Fall einfacher ist, eine fertige zu kaufen. Obwohl dies für mich ein guter Radiodesigner sein könnte.