12 segment Fibonacci-klok

Mondriaanlamp of fibonacciklok

 

<-- Home

Deze 12 segment Fibonacciklok is een variatie op de Fibonaccistokklok.
De elektronica en aansluitingen staan bij de bovenstaande link beschreven.
Deze pagina is een registratie van de gebruikte onderdelen en misschien een inspiratiebron.

Deze klok werd uitgerust met:

Twaalf SK6812 RGBW LEDs,
een HM-10 Bluetooth module,
een MAX7219 display om de tijd digitaal te kunnen lezen,
een ZS-042 DS3231 RTC tijdmodule
en een KY-040 rotary encoder voor noodgevallen om de klok te bedienen

De software bevat functionaliteit voor een HC-12 transceiver,
een 3x4 membrane keypad of
een one wirekey 3x4 membrane keypad


Zaag de blokjes met hoeken van 30 graden.
Zaag een sleuf met de dikte van het plexiglas in de buitenring aan de binnenkant.
 
Plak afplaktape aan de buitenkant van beide ringen keer ze om en breng houtlijm aan op de schuine kanten.
Verlijm de buitenring in twee helften. De binnenring kan helemaal verlijmt worden
Vouw de ringen dicht en verwijder overtollig lijm.
Zaag het plexiglas op maat. Ik gebruikte mm-papier om de vorm op maat te krijgen
LEDs
Tussen de LEDs worden schotten van geschuimd PVC wit 2 MM RAL 9003 geplaatst.
Schilder de kast en zet alles in elkaar.  
12 segment binnekant
Met een zwarte viltstift of smal zwart tape kan het plexiglas boven de schotjes zwart worden gemaakt voor een mooi accent
De onderdelen kunnen direct aan een Arduino Nano worden gesoldeerd of als er voldoende ruimte is op een printplaatje.


In het programma kan gevonden worden waar de onderdelen worden aangesloten
In het kort:
De LEDs op Digitale pin D5
De lichtsensor op analoge poort A2
De RTC-tijdmodule op analoge pin A4 de SDA lijn  en op A5 de SCL aansluiting
De Bluetooth module kan op pin 0 en 1 of pin 6 en 7 worden aangesloten.
De pin 6 en 7 keuze heeft als voordeel dat de Bluetooth-module met programmeren kan blijven zitten maar er is dan een extra bibliotheek nodig. Namelijk SoftwareSerial.
Als de Bluetooth-module op poort 0 en 1 is aangesloten stoort deze bij het uploaden van een programma in de Arduino. Je zal hem dan tijdelijk moeten loshalen als een programm in de Arduino wordt geladen.
//--------------------------------------------
// PIN Assigments
//-------------------------------------------- 
enum DigitalPinAssignments {
                    #ifdef STICKCLOCK  
 EmptyD00     = 0,                // EmptyD00
 EmptyD01     = 1,                // EmptyD01 
 EncoderPow   = 2,                // give power to Encoder
 clearButton  = 3,                // switch (labeled SW on decoder)
 encoderPinA  = 4,                // right (labeled DT on decoder)
 encoderPinB  = 5,                // left (labeled CLK on decoder)
 LED_PIN      = 11,               // Pin to control colour SK6812 WS2812 LEDs 
                     #endif //STICKCLOCK
                     #ifdef PCBCLOCK  
 EmptyD02     = 2,                // EmptyD02
 encoderPinA  = 3,                // right (labeled DT on Rotary decoder)
 clearButton  = 4,                // switch (labeled SW on Rotary decoder)
 LED_PIN      = 5,                // Pin to control colour SK6812 WS2812 LEDs
 encoderPinB  = 8,                // left (labeled CLK on Rotary decoder)
                     #endif //PCBCLOCK
                     #ifdef BTMOD_PIN6_PIN7
 BT_TX        = 6,                // Bluetooth TX
 BT_RX        = 7,                // Bluetooth RX
                     #endif //BTMOD_PIN6_PIN7    
                     #ifdef MAX7219
 MAX7219CLK   = 10,               // MAX7219CLK
 MAX7219CS    = 11,               // MAX7219CS 
 MAX7219DataIn= 12,               // MAX7219DataIn
                     #endif //MAX7219 
 HeartbeatLED = 9,                // EmptyD09 
 secondsPin   = 13};              // if set to 13 led will blink on board     SCK
                                   // Analogue hardware constants ----
enum AnaloguePinAssignments {
 EmptyA0      = 0,                // EmptyA0
 EmptyA1      = 1,                // EmptyA1 
 PhotoCellPin = 2,                // LDR pin
 OneWirePin   = 3,                // OneWire Keypad
 SDA_pin      = 4,                // SDA pin geel
 SCL_pin      = 5,                // SCL pin groen
 EmptyA6      = 6,                // EmptyA6
 EmptyA7      = 7};               // EmptyA7
 

Als de klok op een seriele poort wordt aangesloten wordt in een serieel terminal programma het menu getoond.

 " D D14042020 is date 14 April 2020",
 "E Normal, Extreme or Ultimate mode",
 "F Fibonacci or Chrono display",
 "L (L5) Min light intensity (1-255)",
 "M (M90)Max light intensity (1-250)",
 "N (N2208)Turn On/OFF LEDs between Nhhhh",
 "P (P1) to select a palette (0-9)",
 "I  for this info",
 "R  Reset to default settings",
 "T  T031500 is quarter past three am",
 "W  Test LDR reading every second",
 "X (X50) Demo mode. ms delay (0-9999)",

De laagste lichtintensiteit dat naar de klok wordt gestuurd kan met L worden ingesteld.
De klok gaat dan niet zachter branden dan die waarde als het compleet donker is.
L5 is een mooie waarde.
Met M kan de maximale sterkte worden ingesteld. Soms is de klok te fel of te zwak voor de plek waar hij staat.
M80 is de default waarde.
Met P kan de kleurpalette worden gekozen. P1 is standaard.
Tijd en datum instellen gaat met de T of D optie.
Door invoer van de letter F kan de klok als een analoge klok of Fibonacci stand worden gezet.
Met E invoeren komt de klok in Extreme stand en verspringt  elke 5 seconde groen vlak verspringen,
met de volgende invoer van E komt de klok in de Ultimate stand.
Dan wordt elke seconde het aantal minuten met paarse vlakken getoond.
Je kan dan de klok tot op 5 seconde nauwkeurig aflezen.
Deze opties werken alleen goed als de klok in chrono stand met F is gezet.

Na  invoer van R wordt de klok in zijn oorspronkelijke waarden teruggezet .


Bijlagen

FibonacciKlok_V015.ino

Deze en nieuwere versies zijn beschikbaar op Github

 

Home

2 november 2021,
18 maart 2021

Mail: Ed Nieuwenhuys

 


www.arach.nl