Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Arduino Nano 4x64 LED Matrix Klok – Nieuwe Versie

Onderdelen en benodigdheden

Onderdeel Aantal
Arduino Nano R3 1
LED Matrix 1
Fotoweerstand 1
Breadboard (generiek) 1
DS3231 1

Apps en online diensten

  • Arduino IDE

Over dit project


Arduino Nano 4x64 LED Matrix Klok – Nieuwe Versie
Arduino Nano 4x64 LED Matrix Klok – Nieuwe Versie
Arduino Nano 4x64 LED Matrix Klok – Nieuwe Versie

Een klokweergave lezen in een kamer op enkele meters afstand vereist zo'n LED matrix display.

Na het kopen tegen een goede prijs van een 4-cel display, keek ik op Hackster naar beschikbare projecten: er zijn er verschillende voor Arduino Nano. Als je uur, minuut en seconden simultaan wilt zien: werken er maar enkele projecten, omdat je kleinere cijfers nodig hebt dan de wijd beschikbare met 5x7 pixels per cijfer. Een optie is de MD_Parola library te gebruiken, maar de codegrootte is te groot voor een simpele klok. De andere geteste optie was de Max72xxPanel library, maar deze is te oud en roept andere libraries aan. Uiteindelijk is het project gebaseerd op de basale interface library MD_MAX722XX, die in alle andere zit.

De opmerkingen op deze site, brachten me ertoe de hardware-aspecten en de code te herzien.

Arduino/chipKit library ondersteuning voor de DS3231 I2C Real-Time Clock
Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. Alle rechten voorbehouden

  • Eerst: het LED matrix display. Er zijn verschillende modellen op de markt, dus het is heel waarschijnlijk dat het display rare dingen laat zien na het uploaden van deze code. Oplossing: upload dit voorbeeld uit de "MD_MAX72xx_lib.h" library: "MD_MAX72xx_HW_Mapper.ino" en vind je hardwaremodel. In mijn code was het model gedefinieerd: #define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW, maar dit werkt misschien niet tot je het juiste model instelt!
  • De leuke kleine seconden bleken niet te verschijnen? Nu (v2), zijn de fonts voor deze seconden in de code inbegrepen, dus geen noodzaak om een andere library te wijzigen.
  • Een lange lijst met compilerwaarschuwingen ontstond door Arduino updates. Nu zijn de maanden in een tweedimensionale char array en niet meer met een pointer. Eventuele andere waarschuwingen komen van de DS3231.h library, maar kunnen genegeerd worden.
  • De knipperende puntjes zijn nu slechts 2 puntjes! De accurate seconden worden getoond, met mijn 3x5 fonts, na "hh:mm". Bovendien knipperen de kolompuntjes ":" bijna twee keer per seconde, gewoon om te tonen dat het leeft!
  • Antwoordend op een verzoek: de tijd wordt 53 seconden per minuut getoond en tijdens de laatste 7 seconden worden de datum en temperatuur getoond.
  • De dag van de week kan ook getoond worden, als je twee regels in de loop() uncomment. In dat geval, zou je wellicht de interval van 53 seconden naar 51 willen verminderen.
  • Als je het 12-uurs formaat prefereert, zie een van mijn oudere antwoorden.
  • De RTC-tijd kan ingesteld worden in de Arduino Serial Monitor door in het invoerveld DD/MM/YYYY uu:mm:ss te schrijven (vergeet de spatie niet) en Enter/Versturen te drukken. Dit kan gedaan worden wanneer een USB-kabel is aangesloten en Serial Monitor functioneert (juiste COM en baudrate).

De nieuwe code gebruikt 13558 bytes (44%) en 372 bytes (18%) voor variabelen, dus het is een beetje korter!

De datum wordt getoond als "dd Mon" en kamertemperatuur in graden Celsius (geschat met de interne RTC-sensor) wordt op een apart scherm getoond. De helderheid wordt geregeld door een fotoweerstand. De code werkt ook zonder lichtsensor.

Dank je voor je interesse, getoond door de "respect" knop!

Code

OUDE versie - Arduino Nano Dot Matrix Klok

Omdat veel libraries veranderd zijn sinds de eerste release, is deze code verouderd. Gebruik de nieuwe versie. Alle verbindingen worden in de code beschreven. Voor kleine fonts, wijzig een paar regels in MD_MAX72xx_font.cpp, zoals uitgelegd in de code.

/* WARNING: Initiële code is nu verouderd. Gebruik de nieuwe (versie 2)
 * Arduino Nano DS3231 klok met LED Matrix 4x(8x8) SPI
 * 
 * Arduino Nano 5V logica - 32kB prog. ruimte
 * Tools:Board: Arduino Nano; Processor: ATmega328P (Old Bootloader)!!
 * LED Matrix 4x(8x8) SPI met connector aan de rechterkant (laatste module)
 * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in-1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=CN
 * 
 * AANSLUITINGEN:
 * >> LCD 4x64 -> Arduino Nano: (Hardware SPI gebruikmakend):
 * 5V -> 5V pin
 * GND -> GND pin
 * CLK_PIN -> 13 // of SCK
 * DATA_PIN -> 11 // of MOSI
 * CS_PIN -> 10 // of SS
 * 
 * >> DS3231 RTC -> Arduino Nano:
 * SDA (DAT) -> A4
 * SCL (CLK) -> A5
 * Geïnspireerd door: 1) Arduino Klok door AnthoTRONICS Laatste bewerking: Maart 22,2019
 * maar zonder MD_parola vanwege de grote footprint! Nieuwe getdate functie.
 * 2) Simplest UNO Digitale Klok Ooit door plouc68000:
 * https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1
 * 3) LEDDotMatrixClock.ino door Leonardo Sposina, maar hier zonder "Max72xxPanel.h"
 * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino
 * Niet Max72xxPanel.h gebruikmakend, maar kleine cijfers nog steeds gebruikt. Kleine footprint code hier.
 * Vervang in library MD_MAX72XX/src/MD_MAX72xx_font.cpp:
 * 1) #define USE_NEW_FONT 1
 * 2) fonts #148 ... 158 moeten vervangen worden met 3x5 fonts: ...
 * 
 * project: 13790 bytes (44%); variabelen 361 bytes (17%)
 * Auteur: MVP https://www.hackster.io/M-V-P
 */
#include <SPI.h>
#include "DS3231.h"
#include "MD_MAX72xx_lib.h"
//#include "Font_Data.h"
DS3231 rtc(SDA, SCL); // Real time clock
const byte LDR_PIN = A2; // LDR Sensor pin
#define MAX_DEVICES 4
#define CLK_PIN 13 // of SCK
#define DATA_PIN 11 // of MOSI
#define CS_PIN 10 // of SS
#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW
#define USE_NEW_FONT 1
#define BUF_SIZE 20 // tekst buffer grootte
#define CHAR_SPACING 1 // pixels tussen karakters
char buf[BUF_SIZE], secs[4];
uint8_t dots;
// SPI hardware interface
MD_MAX72XX matrix = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
const byte WAIT = 100;
const byte SPACER = 1;
byte FONT_WIDTH;
bool timeset=false;

void adjustClock(String data) { ... }
byte ledintensitySelect(int light) { ... }
void printText(uint8_t modStart, uint8_t modEnd, char *pMsg) { ... }
void setup() { ... }
void getDate() { ... }
void getHour() { ... }
void showsec() { ... }
void loop() { ... }

Nieuwe versie (v2) - Arduino Nano Dot Matrix Klok

Geüpdatet overeenkomstig nieuwe libraries.

/* Arduino Nano DS3231 klok met LED Matrix 4x(8x8) SPI
 * Versie 2 - geüpdatet 15/05/2021
 * Arduino Nano 5V logica - 32kB prog. ruimte
 * Tools:Board: Arduino Nano; Processor: ATmega328P (Old Bootloader)!!
 * LED Matrix 4x(8x8) SPI met connector aan de rechterkant (laatste module)
 * https://www.banggood.com/MAX7219-Dot-Matrix-Module-4-in-1-Display-For-Arduino-p-1072083.html?rmmds=myorder&cur_warehouse=CN
 * 
 * AANSLUITINGEN:
 * >> LCD 4x64 -> Arduino Nano: (Hardware SPI gebruikmakend):
 * 5V -> 5V pin
 * GND -> GND pin
 * CLK_PIN -> 13 // of SCK
 * DATA_PIN -> 11 // of MOSI
 * CS_PIN -> 10 // of SS
 * 
 * >> DS3231 RTC -> Arduino Nano:
 * SDA (DAT) -> A4
 * SCL (CLK) -> A5
 * Geïnspireerd door: 1) Arduino Klok door AnthoTRONICS Laatste bewerking: Maart 22,2019
 * maar zonder MD_parola vanwege de grote footprint! Nieuwe getdate functie.
 * 2) Simplest UNO Digitale Klok Ooit door plouc68000:
 * https://create.arduino.cc/projecthub/plouc68000/simplest-uno-digital-clock-ever-4613aa?ref=user&ref_id=680368&offset=1
 * 3) LEDDotMatrixClock.ino door Leonardo Sposina, maar hier zonder "Max72xxPanel.h"
 * https://github.com/leonardosposina/arduino-led-dot-matrix-clock/blob/master/LEDDotMatrixClock/LEDDotMatrixClock.ino
 * Niet Max72xxPanel.h gebruikmakend, maar kleine cijfers nog steeds gebruikt. Kleine footprint code hier.
 * 
 * project: 13558 bytes (44%); variabelen 372 bytes (17%)
 * Auteur: MVP https://www.hackster.io/M-V-P
 */
#include <SPI.h>
#include "DS3231.h"
#include "MD_MAX72xx_lib.h"
//#include "Font_Data.h"
DS3231 rtc(SDA, SCL); // Real time clock
const byte LDR_PIN = A2; // LDR Sensor pin
#define MAX_DEVICES 4
#define CLK_PIN 13 // of SCK
#define DATA_PIN 11 // of MOSI
#define CS_PIN 10 // of SS
// Definieer hieronder je LED matrix hardware model:
//#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define USE_NEW_FONT 1
#define BUF_SIZE 20
#define CHAR_SPACING 1
char buf[BUF_SIZE], secs[4];
uint8_t hh, mm, ss, dots;

// Definitie van de kleine fonts:
uint8_t Font3x5[10][3] = {
  {248, 136, 248}, // 48 0
  {144, 248, 128}, // 49 1
  {200, 168, 184}, // 50 2
  {136, 168, 248}, // 51 3
  {112, 72, 224},  // 52 4
  {184, 168, 232}, // 53 5
  {248, 168, 232}, // 54 6
  {8, 232, 24},    // 55 7
  {248, 168, 248}, // 56 8
  {184, 168, 248}  // 57 9
};

char months[12][4] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
char* wday;

MD_MAX72XX matrix = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
const byte WAIT = 100;
const byte SPACER = 1;
byte FONT_WIDTH;
bool timeset=false;

void adjustClock(String data) { ... }
byte ledintensitySelect(int light) { ... }
void printText(uint8_t modStart, uint8_t modEnd, char *pMsg) { ... }
void setup() { ... }
void getDate() { ... }
void getHour() { ... }
void showsec(uint8_t secs) { ... }
void loop() { ... }

Schema's

Geïnspireerd door Leonardo Sposina, maar #define CS_PIN(Matrix)<--> 10(Nano)

Het schema is BIJNA hetzelfde voor alle Matrix projecten. Hier is de fotoweerstand origineel. Zoals vermeld in de code: #define CS_PIN(Matrix)<--> 10(Nano) https://github.com/leonardosposina/arduino-led-dot-matrix-clock

Productieproces

  1. Bouw een Arduino Real-Time Clock voor Islamitische Gebedstijden
  2. Arduino Temperatuurbewaking & Realtime Klok met 3.2" TFT-display
  3. Een LED bedienen via Bluetooth met Arduino – Eenvoudige DIY Handleiding
  4. Interactief Nextion HMI-weerstation met Arduino Mega en sensoren
  5. Interactieve LED-matrix deurdisplay met PIR-bewegingsensor – Arduino vakantiegroet
  6. Twee Stappenmotors Sturen met Arduino Nano & Joystick – Simpele Tutorial
  7. Arduino Flip Clock met 8×8 LED Matrix – DIY Real-Time Clock Project
  8. Een 8×8 LED-matrix beheersen met Arduino Uno: Stap-voor-stap handleiding
  9. Bouw een handgehoude Geiger-teller met Arduino Nano
  10. Geavanceerde slimme batterijlader met multiplexing en digitaal display
  11. Real-time Arduino Weerklok: OLED-display voor tijd, datum & temperatuur