Mini LED-matrix klok – Arduino Nano aangedreven tijdwekker
Onderdelen en benodigdheden
- Arduino Nano R3 (1×)
- DS3231M ±5ppm I2C Real-Time Clock (1×)
- Drukknop, momentaan (2×)
- LED matrix module 32×8 (MAX7219, vier-in-een) (1×)
Benodigde gereedschappen
- Solderbout (standaard)
Apps en online diensten
- Arduino IDE
Over dit project
Op "Nick's LED Projects" vond ik een klokproject met 4 matrices van 8×8. Ik heb de code minimaal aangepast voor de MAX7219 32×8 module (vier display's in één, veel goedkoper, bv. via AliExpress).
Functies
- Basismodus: grote cijfers
- Shuifmodus: cijfers rollen over scherm
- Kleine cijfers met seconden
- Tijd in woorden (bijv. "tien over twaalf")
- Datumweergave
- 12/24-uurs keuze
- Helderheidsinstelling
- Willekeurige modus: wisselt automatisch elke paar uur
- Menu via 2 drukknoppen voor instellingen en weergaveselectie
Benodigde bibliotheken: LedControl, FontLEDClock, RTClib, Button (Alexander Brevig). Download links in code-sectie.
Code
De volledige sketch (Mini Clock v1.0, GPL) is te downloaden. Belangrijkste delen:
- Matrix besturing:
LedControl lc(12,11,10,4)– 4 cascaded displays. - Tijdkeeping:
RTC_DS1307 ds1307(werkt ook met DS3231). - Knoppen: Pin 2 (A) en 3 (B) met pull-up.
- Modi: 0=basic, 1=small, 2=slide, 3=word_clock, 4=setup.
- Animaties:
slideanim()voor vloeiende overgang,crossFade()voor NeoPixel-kleurovergangen (in word_clock niet gebruikt, maar in code aanwezig). - Instelmenu: willekeurige modus, 12/24u, tijd/datum instellen, helderheid (0-15).
// Kern van de loop()
void loop() {
switch (clock_mode) {
case 0: basic_mode(); break;
case 1: small_mode(); break;
case 2: slide(); break;
case 3: word_clock(); break;
case 4: setup_menu(); break;
}
}
// Voorbeeld: basic_mode toont 5x7 cijfers met knipperende :
void basic_mode() {
cls();
byte secs=100, mins=100, count=0;
while (run_mode()) {
get_time();
if (buttonA.uniquePress()) { switch_mode(); return; }
if (buttonB.uniquePress()) { display_date(); return; }
if (secs != rtc[0]) { secs=rtc[0]; plot(15-offset,2,1); plot(15-offset,5,1); count=400; }
if (count==0) { plot(15-offset,2,0); plot(15-offset,5,0); } else count--;
if (mins != rtc[1]) { /* herschrijf uren/minuten */ }
delay(50);
}
fade_down();
}
De code bevat ook functies voor word_clock() (Engelse tekst: "TEN PAST TWELVE"), slide() (scrollende cijfers), display_date() (dag, datum, maand), en een compleet instelmenu.
Bibliotheken
Download apart (geen preview): LedControl, FontLEDClock, RTClib, Button.
Schema
Tip: De DS3231 is nauwkeuriger dan de DS1307 (±2 ppm vs ±5 ppm). Gebruik een knopcel (CR2032) op de RTC-module voor tijdbehoud bij stroomuitval.
Productieproces
- Koekeklok: geschiedenis, vakmanschap en moderne evolutie
- Arduino Mini Boss Battle Game – Retro-geïnspireerd Project
- Bouw een Aangepaste LED Hoofdklok met Alarm – Zichtbaar vanaf 12 Meter
- Bouw een Berlijnse Klok met Arduino UNO – DIY LED-matrix klok
- Analoge-stijl LED Persistence-of-Vision Klok – DIY Arduino Nano Project
- Interactieve LED-matrix deurdisplay met PIR-bewegingsensor – Arduino vakantiegroet
- Geluidsgeactiveerd 8-LED Lichtdisplay met Arduino
- Bouw een Slimme Arduino Vierpotige Robot: Stap-voor-Stap Handleiding
- DIY Hot Glue LED Matrix Lamp – Bouw je eigen kleurrijke display
- LED Sequencer Bouwen met 555 Timer & 4017 Teller – Frequentiedeling & Debounce
- MATLAB Matrix Basis: Data Aanmaken, Benaderen en Manipuleren