Inhoudsopgave:

Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen - Ajarnpa
Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen - Ajarnpa

Video: Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen - Ajarnpa

Video: Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen - Ajarnpa
Video: .Build - bouw je eigen Nixieklok - Zelfbouwuurwerk met oranje gloed 2024, Juli-
Anonim
Image
Image
Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen
Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen
Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen
Vierletterige woordklok met Akafugu-woordgenerator en inspirerende zinnen

Dit is mijn versie van de Four Letter Word Clock, een idee dat in de jaren 70 is ontstaan. De klok geeft een reeks van vierletterige woorden weer die zijn gegenereerd door een willekeurig woordgeneratoralgoritme of uit een database met gerelateerde vierletterwoorden.

Deze versie maakt gebruik van modernere 14-segments LED-displays en een Atmega 328p-microcontroller om de woorden en tijd weer te geven. Er worden twee woordgeneratiemodi ondersteund. De eerste gebruikt een algoritme om woordgroepen van vier letters te genereren die waarschijnlijk echte woorden zijn, vergelijkbaar met het origineel. Elk volgend woord staat los van het vorige. De tweede modus gebruikt de relationele woordendatabase van de "Edinburgh Associative Thesaurus", een document van woordassociaties gebaseerd op de antwoorden van mensen op het eerste woord dat in ze opkomt nadat ze een seed-woord hebben gegeven, en vervolgens het proces voort te zetten met het antwoordwoord. De database is aangepast aan het genereren van vierletterwoorden door de Akafugu Corporation, die een gegevensbestand van 57 Kbyte heeft gemaakt dat is opgeslagen in een externe EEPROM voor verwerking door de Atmega. Het resultaat is dat de klok Unix-tijd gebruikt als een willekeurig zaadje en een reeks bijbehorende vierletterwoorden genereert op basis van menselijke reacties, niet een of ander algoritme.

Opmerking: de Akafugu-woordendatabase bevat enkele seksueel expliciete en mogelijk aanstootgevende woorden. Als dit je stoort, schakel dan de willekeurige woordmodus in. Dit kan ook enkele aanstootgevende woorden genereren, maar er worden in ieder geval geen stromen van gerelateerde aanstootgevende woorden weergegeven!

De "Edinburgh Associative Thesaurus" is samengesteld op basis van reacties van mensen die in het begin van de jaren '60 in Engeland woonden. Het woord relaties weerspiegelt zeker die vooringenomenheid! Het woord "BESTE" wordt bijvoorbeeld vaak gevolgd door "PETE". Er bestaat geen duidelijk verband, tenzij je weet dat Pete Best de oorspronkelijke drummer van de Beatles was in de vroege jaren 60! Andere vooroordelen over de Britse cultuur van de jaren 60 zijn er in overvloed. Ik vind het heel interessant om te zien!

Het apparaat bevat ook een I2C-adresseerbare Real Time Clock-module met oplaadbare batterijback-up. De klok geeft 5 woorden weer van een van de twee selecteerbare algoritmen en geeft vervolgens de tijd, datum, dag van de week en jaar weer. De klok- en bedrijfsmodi worden ingesteld met behulp van drie drukknopschakelaars. Bedrijfsmodi worden opgeslagen in niet-vluchtige EEPROM en overleven een reset of stroomuitval. De RTC blijft ongeveer een jaar draaien nadat de stroom is uitgeschakeld, met extreme temperatuurgecompenseerde nauwkeurigheid. De juiste tijd wordt automatisch weergegeven wanneer de stroomvoorziening is hersteld.

Een extra feature zijn de 107 citaten over tijd die elke 10 minuten willekeurig worden weergegeven. Deze citaten scrollen van rechts naar links over de vier karakters, waardoor ze regelmatig worden aangemoedigd en geïnspireerd! Opslag voor de zinnen is in de externe EEPROM met de Akafugu-woordendatabase. De database neemt slechts 57 Kbytes in beslag van de 64 Kbytes die beschikbaar zijn in het apparaat, waardoor er ruimte overblijft voor de 107 frases. Een "opschep"-zin is altijd de eerste die wordt weergegeven wanneer de klok voor het eerst wordt ingeschakeld met het volgende interval van 10 minuten.

Het apparaat maakt gebruik van 14-segments displays met gemeenschappelijke kathodes (2 kathodes voor elk cijfer) die worden gemultiplext door een timer-interrupt-serviceroutine die ertoe leidt dat het display met vier tekens wordt ververst op 100 Hz. Telkens wanneer de ISR wordt uitgevoerd, wordt het vorige halve teken uitgeschakeld, worden 7 van de 14 segmenten voor een van de vier tekens opgehaald, worden de overeenkomstige segmentpennen ingeschakeld en wordt de overeenkomstige kathode geaard. De displays zijn een beetje ongewoon, maar ik had een grote overtollige voorraad die ik wilde gebruiken. De dual-common kathode reduceert het aantal benodigde pinnen per cijfer van 15 naar 9. Er zijn net genoeg pinnen op een Atmega 328p om directe aandrijving van het display zonder schuifregister mogelijk te maken.

TO-DO: Wijzig de code om de Adafruit 4-karakter alfanumerieke LED-module te gebruiken

Stap 1: Geschiedenis

Geschiedenis
Geschiedenis
Geschiedenis
Geschiedenis
Geschiedenis
Geschiedenis
Geschiedenis
Geschiedenis

De originele FLW-klok werd gebouwd met grote Burroughs B7971 alfanumerieke neon-surplusbuizen die waren weggevangen uit ontmantelde ticker-displayborden. Deze zijn vergelijkbaar met de numerieke nixiebuizen van die tijd, maar gebruikten een 14-segments display om alle ASCII-tekens te vormen. De klok gebruikte discrete logica, waarbij letters uit een tabel werden geselecteerd om willekeurige combinaties van vier letters te vormen die werden gewogen om waarschijnlijk echte woorden te produceren.

Met het algoritme In het originele model uit 1972 verschijnen op elke positie alleen bepaalde letters. Er werd een met de hand getabelleerde analyse van enkele honderden vierletterwoorden gedaan en de frequentie van letters in elk van de vier posities werd geteld. De tien meest voorkomende letters van elke positie werden gebruikt, behalve in de tweede positie die slechts acht letters bevatte.

Voor elke positie liep een eenvoudige BCD (0-9) teller (een 74LS90 IC) vrij en werd de telling vastgelegd en ongeveer eens in de paar seconden tot eenmaal per minuut vastgehouden, afhankelijk van de snelheidsinstelling. De teller-snapshot werd vervolgens toegepast op een diode-decoderingsmatrix (met ongeveer 150 diodes) om de karakters te vormen.

Aangezien alleen de tien (of acht) meest voorkomende letters voor elke positie zijn geselecteerd, zonder rekening te houden met lettercombinaties, kunnen veel niet-woorden verschijnen, bijvoorbeeld FRLR, LREE, LLLL, enz.

Merk op dat de tweede positie slechts acht letters had, aangezien de negende en tiende letter in de steekproef een proportioneel lage frequentie hadden, terwijl de eerste en tweede een extreem hoge frequentie hadden, dus werden ze verdubbeld. Dus 10 x 8 x 10 x 10 = 8000 permutaties. De letters die in het eerste model uit 1973 waren geprogrammeerd, worden getoond in een van de bovenstaande afbeeldingen.

Stap 2: Code en schema

Code en schema
Code en schema
Code en schema
Code en schema
Code en schema
Code en schema
Code en schema
Code en schema

Het schema is bijgevoegd.

De klok kan worden gebouwd met behulp van elke op Atmega 328p gebaseerde Arduino.

Voor gebruik met een standalone Atmega 328p, zoals weergegeven in het schema, moet een ISP-programmeur worden gebruikt om de microcontroller via de Arduino IDE te programmeren. Na het programmeren moeten de zekeringen worden ingesteld met het volgende avrdude-commando (WinAVR moet geïnstalleerd zijn). Vervang de com-poort en het programmertype. Het gemakkelijkst is om een Arduino als ISP-programmeur te gebruiken. Google voor 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

Deze instellingen schakelen de reset-vector van de bootloader uit, zodat de code onmiddellijk begint met de hoofdcode-vector. De zekeringen zijn ook ingesteld voor een externe 16MHz-oscillator. Eenmaal verbrand, kunt u de chip niet opnieuw programmeren totdat het kristal en de condensatoren zijn aangesloten zoals weergegeven in het schema, omdat de standaard interne oscillator is uitgeschakeld met deze zekeringinstellingen.

De Arduino-bibliotheek DS3231 moet worden geïnstalleerd om toegang te krijgen tot de RTC-klokroutines. Het is noodzakelijk om Unix-tijdondersteuning in de bibliotheek in te schakelen door de regel "#define CONFIG_UNIXTIME" in het DS3231 RTC-bibliotheekconfig.h-bestand te verwijderen. Unix-tijd wordt gebruikt als basis voor de generator van willekeurige getallen, zodat de woord- en zinsreeksen niet elke keer worden herhaald als de klok wordt aangezet.

De DS3231 RTC-klokmodule zelf is een veel voorkomende variëteit die op ebay wordt verkocht. De module is hierboven geïllustreerd. Zoek naar het type met een oplaadbare reservebatterij.

Naast een geprogrammeerde microcontroller is het ook nodig om een Microchip 24LC512 seriële EEPROM te verkrijgen en te programmeren met de Akafugu-woordendatabase en zinsdeellijst. Dit wordt gedaan met behulp van een eenvoudig circuit gebouwd met een Arduino en een SD-kaart die is geformatteerd als FAT32 met het output2.dat-bestand erop. Een schets leest de gegevens van de SD-kaart en schrijft deze naar de EEPROM. Details zijn te vinden via de volgende twee links. Zorg ervoor dat u de programmeerschets en het gegevensbestand in deze Instructable gebruikt, omdat die op de Akafugu-link de woordgroepdatabase mist. Volg de procedure in de links.

Akafugu FLW database overzicht

Instructies voor het branden van het gegevensbestand naar de EEPROM

Stap 3: Klok instellen en bedienen

De volgende toetsencombinaties worden gebruikt voor het instellen van de klok:

Ingestelde uren: Houd knop 1 ingedrukt tijdens normaal bedrijf.

Minuteninstelling: Houd knop 2 ingedrukt tijdens normaal bedrijf. Tweede worden automatisch gereset naar "00"

Seconden reset naar nul: Houd knop 3 ingedrukt tijdens normaal bedrijf, laat los om te synchroniseren met het begin van een nieuwe minuut

Maand instellen: Houd de knoppen 1 en 2 samen tijdens normaal gebruik

Datum instellen: Houd de knoppen 1 en 3 samen tijdens normaal gebruik

Jaar instellen: Houd de knoppen 2 en 3 samen tijdens normaal gebruik

Dag van de week instellen: Houd de knoppen 1, 2 en 3 samen tijdens normaal gebruik

Wanneer het apparaat voor het eerst wordt ingeschakeld, worden de bedrijfsmodi snel weergegeven voordat de woordgeneratie begint:

"EE" betekent dat de I2C externe EEPROM met de Akafugu-woordendatabase en de zinslijst is gedetecteerd.

"NOEE" betekent dat de EEPROM niet is gedetecteerd. Het apparaat keert terug naar het willekeurig genereren van woorden en er wordt geen zin weergegeven.

"CK" betekent dat de tijd en datum worden weergegeven na 5 opeenvolgende woorden.

"NOCK" betekent dat de tijd/datum is uitgeschakeld. Een gestage stroom van woorden wordt continu weergegeven, elke 10 minuten onderbroken door een zin.

"RND" betekent dat de modus voor het genereren van willekeurige woorden wordt gebruikt

"REL" betekent dat de relationele "Akafugu" woorddatabase-generatiemodus wordt gebruikt

Om de modus te wijzigen en op te slaan, koppelt u de klok los en sluit u deze weer aan terwijl u een van de aangegeven knoppen ingedrukt houdt. Laat vervolgens de knop los. De nieuwe modus wordt opgeslagen en weergegeven:

Knop 1: Wissel en bewaar de modus voor het genereren van willekeurige of relationele woorden

Knop 2: Zet de weergave van datum/tijd na 5 opeenvolgende woorden aan of uit

Aanbevolen: