Inhaltsverzeichnis:

Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen - Gunook
Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen - Gunook

Video: Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen - Gunook

Video: Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen - Gunook
Video: DIY Wortuhr - Der Bausatz von Du-Kannst-Mitspielen.de | Tips, Tricks & More 2024, Juli
Anonim
Image
Image
Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen
Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen
Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen
Vier-Buchstaben-Wortuhr mit Akafugu-Wortgenerator und inspirierenden Sätzen

Dies ist meine Version der Vier-Buchstaben-Worduhr, eine Idee, die in den 1970er Jahren entstand. Die Uhr zeigt eine Reihe von Wörtern mit vier Buchstaben an, die entweder von einem Zufallswortgeneratoralgorithmus oder aus einer Datenbank verwandter Wörter mit vier Buchstaben generiert werden.

Diese Version verwendet modernere 14-Segment-LED-Anzeigen und einen Atmega 328p-Mikrocontroller, um die Wörter und die Zeit anzuzeigen. Es werden zwei Wortgenerierungsmodi unterstützt. Die erste verwendet einen Algorithmus, um Wortgruppen aus vier Buchstaben zu generieren, die wahrscheinlich tatsächliche Wörter sind, ähnlich dem Original. Jedes nachfolgende Wort hat nichts mit dem vorherigen zu tun. Der zweite Modus verwendet die relationale Wortdatenbank aus dem "Edinburgh Assoziativen Thesaurus", einem Dokument mit Wortassoziationen, das auf den Antworten der Menschen auf die Frage nach dem ersten Wort basiert, das ihnen einfällt, nachdem ihnen ein Startwort gegeben wurde, und dann den Prozess mit dem Antwortwort fortzusetzen. Die Datenbank wurde von der Akafugu Corporation an die Vier-Buchstaben-Wortgenerierung angepasst, die eine 57-KByte-Datendatei erstellt hat, die in einem externen EEPROM zur Verarbeitung durch den Atmega gespeichert wird. Das Ergebnis ist, dass die Uhr die Unix-Zeit als zufälligen Seed verwendet und eine Folge von zugehörigen vierbuchstabigen Wörtern basierend auf menschlichen Antworten und nicht auf einem Algorithmus generiert.

Hinweis: Die Wortdatenbank von Akafugu enthält einige sexuell eindeutige und potenziell anstößige Wörter. Wenn Sie dies stört, schalten Sie bitte den Zufallswortmodus ein. Dies kann auch einige anstößige Wörter erzeugen, aber zumindest werden keine Ströme verwandter anstößiger Wörter angezeigt!

Der "Edinburgh Associative Thesaurus" wurde auf der Grundlage der Antworten von Menschen zusammengestellt, die Anfang der 60er Jahre in England lebten. Die Wortbeziehungen spiegeln definitiv diese Voreingenommenheit wider! Auf das Wort „BEST“folgt beispielsweise häufig „PETE“. Es besteht keine offensichtliche Verbindung, es sei denn, man weiß, dass Pete Best Anfang der 60er Jahre der ursprüngliche Schlagzeuger der Beatles war! Andere Vorurteile gegenüber der britischen Kultur der 60er Jahre gibt es zuhauf. Ich finde es sehr interessant zuzuschauen!

Das Gerät enthält außerdem ein I2C-adressierbares Echtzeituhrmodul mit Akku-Backup. Die Uhr zeigt 5 Wörter aus einem der beiden wählbaren Algorithmen an und zeigt dann Uhrzeit, Datum, Wochentag und Jahr an. Uhrzeit und Betriebsart werden über drei Drucktaster eingestellt. Betriebsarten werden im nichtflüchtigen EEPROM gespeichert und überstehen einen Reset oder Stromausfall. Die RTC läuft nach dem Abschalten der Stromversorgung noch etwa ein Jahr weiter, mit extremer temperaturkompensierter Genauigkeit. Die korrekte Uhrzeit wird automatisch angezeigt, wenn die Stromversorgung wiederhergestellt ist.

Ein zusätzliches Feature sind die 107 Zeitzitate, die zufällig alle 10 Minuten angezeigt werden. Diese Zitate scrollen von rechts nach links über die vier Charaktere und bieten häufige Ermutigung und Inspiration! Die Speicherung der Phrasen erfolgt im externen EEPROM mit der Akafugu-Wortdatenbank. Die Datenbank benötigt nur 57 KB der 64 KB, die im Gerät zur Verfügung stehen, so dass Platz für die 107 Phrasen bleibt. Ein "prahlender" Satz ist immer der erste, der angezeigt wird, wenn die Uhr im nächsten 10-Minuten-Intervall zum ersten Mal eingeschaltet wird.

Das Gerät verwendet 14-Segment-Anzeigen mit gemeinsamer Kathode (2 Kathoden für jede Ziffer), die von einer Timer-Interrupt-Serviceroutine gemultiplext werden, die dazu führt, dass die vierstellige Anzeige mit 100 Hz aktualisiert wird. Immer wenn der ISR läuft, schaltet er das vorherige Halbzeichen aus, ruft 7 der 14 Segmente für eines der vier Zeichen ab, schaltet die entsprechenden Segment-Pins ein und erdet die entsprechende Kathode. Die Displays sind etwas ungewöhnlich, aber ich hatte einen großen Überschuss, den ich verwenden wollte. Die Dual-Common-Kathode reduziert die Anzahl der benötigten Pins pro Ziffer von 15 auf 9. Es gibt gerade genug Pins auf einem Atmega 328p, um eine direkte Ansteuerung des Displays ohne Schieberegister zu ermöglichen.

TO-DO: Code ändern, um das 4-stellige alphanumerische LED-Modul von Adafruit zu verwenden

Schritt 1: Geschichte

Geschichte
Geschichte
Geschichte
Geschichte
Geschichte
Geschichte
Geschichte
Geschichte

Die ursprüngliche FLW-Uhr wurde mit großen Burroughs B7971 alphanumerischen Neon-Überschussröhren gebaut, die aus stillgelegten Börsenticker-Anzeigetafeln gesammelt wurden. Diese ähneln den numerischen Nixie-Röhren der Zeit, verwendeten jedoch eine 14-Segment-Anzeige, um alle ASCII-Zeichen zu bilden. Die Uhr verwendete diskrete Logik, indem sie Buchstaben aus einer Tabelle auswählte, um zufällige Kombinationen aus vier Buchstaben zu bilden, die so gewichtet wurden, dass sie wahrscheinlich echte Wörter erzeugen.

Mit dem Algorithmus Im Originalmodell von 1972 erscheinen an jeder Position nur bestimmte Buchstaben. Eine von Hand tabellarische Analyse von mehreren hundert Wörtern mit vier Buchstaben wurde durchgeführt und die Häufigkeit der Buchstaben an jeder der vier Positionen wurde gezählt. Die zehn häufigsten Buchstaben jeder Position wurden verwendet, außer an der zweiten Position, die nur acht Buchstaben enthielt.

Für jede Position lief ein einfacher BCD (0-9)-Zähler (ein 74LS90 IC) frei und die Zählung wurde je nach Geschwindigkeitseinstellung etwa alle paar Sekunden bis einmal pro Minute erfasst und gehalten. Der Zähler-Schnappschuss wurde dann auf eine Dioden-Decodierungsmatrix (unter Verwendung von etwa 150 Dioden) angewendet, um die Zeichen zu bilden.

Da für jede Position nur die zehn (oder acht) gängigsten Buchstaben ausgewählt wurden, können ohne Rücksicht auf Buchstabenkombinationen viele Nichtwörter vorkommen, z. B. FRLR, LREE, LLLL usw.

Beachten Sie, dass die zweite Position nur acht Buchstaben hatte, da der neunte und der zehnte Buchstabe in der Stichprobe eine proportional niedrige Häufigkeit hatten, während der erste und zweite eine extrem hohe Häufigkeit hatten – sie wurden also verdoppelt. Somit 10 x 8 x 10 x 10 = 8000 Permutationen. Die Buchstaben, die in das erste Modell von 1973 einprogrammiert wurden, sind in einem der obigen Bilder zu sehen.

Schritt 2: Code und Schaltplan

Code und Schaltplan
Code und Schaltplan
Code und Schaltplan
Code und Schaltplan
Code und Schaltplan
Code und Schaltplan
Code und Schaltplan
Code und Schaltplan

Der Schaltplan ist beigefügt.

Die Uhr kann mit jedem auf Atmega 328p basierenden Arduino gebaut werden.

Für die Verwendung mit einem eigenständigen Atmega 328p, wie im Schaltplan gezeigt, muss ein ISP-Programmierer verwendet werden, um den Mikrocontroller über die Arduino IDE zu programmieren. Nach der Programmierung sollten die Sicherungen mit dem folgenden avrdude-Befehl gesetzt werden (WinAVR muss installiert sein). Ersetzen Sie den COM-Port und den Programmierertyp. Am einfachsten ist es, einen Arduino als ISP-Programmierer zu verwenden. Google für Details.

avrdude -c arduino -P com13 -b 19200 -p atmega328p -U lfuse:w:0xFF:m -U hfuse:w:0xDF:m -U efuse:w:0x05:m

Diese Einstellungen deaktivieren den Bootloader-Reset-Vektor, sodass der Code sofort mit dem Hauptcode-Vektor beginnt. Die Sicherungen sind auch für einen externen 16MHz-Oszillator eingestellt. Nach dem Brennen können Sie den Chip nicht erneut programmieren, bis der Quarz und die Kondensatoren wie im Schaltplan gezeigt verbunden sind, da der standardmäßige interne Oszillator mit diesen Sicherungseinstellungen deaktiviert ist.

Die Arduino-Bibliothek DS3231 muss installiert sein, um den Zugriff auf die RTC-Taktroutinen zu ermöglichen. Es ist notwendig, die Unix-Zeitunterstützung in der Bibliothek zu aktivieren, indem Sie die Zeile "#define CONFIG_UNIXTIME" in der Datei config.h der DS3231 RTC-Bibliothek auskommentieren. Unix-Zeit wird als Startwert für den Zufallszahlengenerator verwendet, damit die Wort- und Phrasensequenzen nicht jedes Mal wiederholt werden, wenn die Uhr eingeschaltet wird.

Das DS3231 RTC-Taktmodul selbst ist eine gängige Variante, die bei ebay verkauft wird. Das Modul ist oben abgebildet. Suchen Sie nach dem Typ mit einer wiederaufladbaren Backup-Batterie.

Zusätzlich zu einem programmierten Mikrocontroller ist es auch erforderlich, ein serielles EEPROM 24LC512 von Microchip mit der Akafugu-Wortdatenbank und der Phrasenliste zu beschaffen und zu programmieren. Dies geschieht mit einer einfachen Schaltung, die mit einem Arduino und einer als FAT32 formatierten SD-Karte mit der Datei output2.dat darauf erstellt wurde. Ein Sketch liest die Daten von der SD-Karte und schreibt sie in das EEPROM. Details finden Sie unter den folgenden beiden Links. Stellen Sie sicher, dass Sie die Programmierskizze und die Datendatei in diesem Instructable verwenden, da dem am Akafugu-Link die Phrasendatenbank fehlt. Folgen Sie den Anweisungen in den Links.

Übersicht über die Akafugu FLW-Datenbank

Anleitung zum Brennen der Datendatei auf das EEPROM

Schritt 3: Einrichtung und Steuerung der Uhr

Die folgenden Tastenkombinationen werden zum Einstellen der Uhr verwendet:

Stundeneinstellung: Taste 1 während des normalen Betriebs gedrückt halten.

Minuteneinstellung: Taste 2 während des normalen Betriebs gedrückt halten. Sekunden werden automatisch auf "00" zurückgesetzt

Sekunden auf Null zurückgesetzt: Taste 3 während des normalen Betriebs gedrückt halten, loslassen, um mit Beginn der neuen Minute zu synchronisieren

Monat einstellen: Halten Sie die Tasten 1 und 2 während des normalen Betriebs zusammen

Datum einstellen: Halten Sie die Tasten 1 und 3 während des normalen Betriebs zusammen

Jahr einstellen: Halten Sie die Tasten 2 und 3 während des normalen Betriebs zusammen

Wochentag einstellen: Halten Sie die Tasten 1, 2 und 3 während des normalen Betriebs zusammen

Wenn das Gerät zum ersten Mal eingeschaltet wird, werden die Betriebsmodi schnell angezeigt, bevor die Wortgenerierung beginnt:

"EE" bedeutet, dass das externe I2C-EEPROM mit der Akafugu-Wortdatenbank und der Phrasenliste erkannt wurde.

"NOEE" bedeutet, dass das EEPROM nicht erkannt wurde. Das Gerät kehrt zur zufälligen Wortgenerierung und ohne Phrasenanzeige zurück.

"CK" bedeutet, dass Uhrzeit und Datum nach der Anzeige von 5 aufeinanderfolgenden Wörtern angezeigt werden.

„NOCK“bedeutet, dass Uhrzeit/Datum ausgeschaltet ist. Ein stetiger Wortstrom wird kontinuierlich angezeigt, alle 10 Minuten durch einen Satz unterbrochen.

"RND" bedeutet, dass der zufällige Wortgenerierungsmodus verwendet wird

"REL" bedeutet, dass der relationale "Akafugu"-Wortdatenbankgenerierungsmodus verwendet wird

Um den Modus zu ändern und zu speichern, ziehen Sie die Uhr ab und schließen Sie sie wieder an, während Sie eine der angezeigten Tasten gedrückt halten. Dann Taste loslassen. Der neue Modus wird gespeichert und angezeigt:

Schaltfläche 1: Umschalten und Speichern des zufälligen oder relationalen Wortgenerierungsmodus

Taste 2: Schaltet die Anzeige von Datum/Uhrzeit nach 5 aufeinanderfolgenden Wörtern ein oder aus

Empfohlen: