HSV-klok: Levendige, aanpasbare klok voor Arduino-liefhebbers
Onderdelen en benodigdheden
| Arduino UNO | 1 |
| Seeed 2,8" TFT Touch Shield (V1.0) | 1 |
Over dit project
HSV-klok
Tijdens een bezoek aan de VS kocht ik een Seeed 2,8" TFT Touch Shield (V1.0) bij RadioShack. Ik gebruikte het om een kleurrijke klok te maken voor mijn vader op zijn 80e verjaardag.
Belangrijkste kenmerken:
- Klokweergave: De klok is gebaseerd op een rooster van rechthoekige cellen. De hoekpunten van de cellen worden lichtjes willekeurig vervormd en elke cel wordt door een willekeurige diagonaal verdeeld. Een willekeurige kleurenspreiding wordt over de cellen toegepast en elk driehoekje wordt beschaduwd voor een 3D-effect. Intern worden kleuren voorgesteld als HSV (Tint, Verzadiging & Waarde), maar omgezet naar RGB voor de LCD. De tijd wordt weergegeven met een eenvoudig lettertype door bepaalde cellen in complementaire kleuren te kleuren.
- Behuizing: Gelaserde bambou, ontworpen in Inkscape, gesneden door Ponoko.
- Montage: De shield heeft geen montagegaten, dus ik klemde het effectief in de behuizing tegen het frontpaneel. Een Arduino Uno zit via de headerpins op de shield.
- Externe RTC (DS3232) via I2C: De shield blootstelt geen ongebruikte pinnen, dus ik gebruikte een Uno die extra SDA/SCL-pinnen heeft. Ik maakte een low-profile headerconnector hiervoor die onder de shield zit. Voeding en ground haalde ik van een vergelijkbare connector op de ICSP-pinnen, ook onder de shield.
- Zomertijd-ondersteuning: Ik voegde eenvoudige zomertijd-ondersteuning toe aan de sketch (één klok minder om twee keer per jaar in te stellen). In plaats van logica als "de laatste zondag in september" gebruikt het een kleine tabel met specifieke start- en einddata voor toekomstige jaren (voor Nieuw-Zeeland in mijn geval).
- Touchscreen als 4x4 knoppenmatrix: Ik vereenvoudigde de Touch-bibliotheekcode zodat de touchscreen fungeert als een 4x4 raster van gedebounce knoppen. Bijvoorbeeld: de tijd instellen door de linkerbeneden- en rechterbovenhoek aan te raken.
- Versnelde rendering: Ik maakte aanzienlijke inspanningen om de rendering te versnellen: een hertekening van de cellen duurt ongeveer een kwart seconde. De rendering schrijft horizontale rijen pixels van een bepaalde kleur. Ik gebruik een aangepast Bresenham-algoritme om de horizontale uitlopers van een reeks lijnparen te berekenen die de driehoeken van een cel vormen. De code die pixels naar de LCD stuurt, is gebaseerd op de bibliotheek maar in-line, uitgevouwen, vereenvoudigd en geoptimaliseerd. Omdat kleurdata over meerdere PORTx's wordt geschreven, worden alle waarden vooraf berekend wanneer de kleur wordt geselecteerd, zodat het instellen van N pixels in een rij sneller gaat.
- Landscape-orienatie: De LCD wordt in landschapsoriëntatie gebruikt. Ik worstelde lang om het scherm in horizontale rijen te laten updaten. De datasheet van de controller is verwarrend. Er zijn commando's voor de "cursor"-locatie ("DRAM Horizontal/Vertical Address Set (R20h, R21h)"). Pixeldata wordt op de cursorlocatie geschreven en de cursor update, met wrap naar de volgende regel. Er is ook een commando voor schermoriëntatie, "Entry Mode (R03h)", die ook cursor-rij/kolom-incrementen aanpast. Echter, ik ontdekte dat het veranderen van de oriëntatie naar Landscape en daarna de cursor positioneren niet werkte. De oplossing die ik uiteindelijk vond (wellicht verborgen in de datasheet) is het gebruik van het "window"-commando in plaats van het cursor-commando: "Horizontal and Vertical RAM Address Position (R50h, R51h, R52h, R53h)". Het instellen van de coördinaten van de linkerbovenhoek van het venster zorgt ervoor dat pixeldata daar begint en horizontaal updatet (in landscape).
Schakeling
De schakeling is simpel:
- De TFT-shield gemonteerd op de Uno.
- +5V DC, Ground, SDA & SCL gaan van de gelabelde pinnen op de Uno naar de RTC-module. Getoond in de eerste drie foto's (shield verwijderd). Let op: voor toegangsredenen komt voeding/ground van de ICSP1-connector.

Foto's















Productieproces
- De Kazoo: Van Oude Mirliton tot Modern Plastic Speelgoed – Geschiedenis, Productie & Toekomst
- De Harp: Van Oude Wortels tot Moderne Meesterwerken
- Geëxpandeerd Polystyreenschuim (EPS): Productie, Eigenschappen en Duurzaamheid
- Raspberry Pi Sensoren Meesterworden: Een Praktische Handleiding voor Elektronica en Communicatieprotocollen
- Bouw een Slimme Robot met de Bridge Shield – Raspberry Pi & Arduino Integratie
- Web-gestuurd DMX-verlichtingssysteem – Arduino Master Controller
- Bluetooth-gecontroleerde Arduino Spybot bouwen
- Draadknippers begrijpen: Typen, toepassingen en gebruik
- Steengroeven begrijpen: Typen, toepassingen en wereldwijde spreiding
- Passleutels begrijpen: Typen, toepassingen en historisch belang
- On-site stikstofgeneratie: labveiligheid & betrouwbaarheid verbeteren