From 57cfbe9a9c889ed4615ddd14b612895a083bb1e2 Mon Sep 17 00:00:00 2001 From: Dirk Jahnke Date: Wed, 12 Jun 2019 09:25:13 +0200 Subject: [PATCH] Added pictures and doc info. --- README.md | 12 +++++++++--- doc/Clock1a.png | Bin 0 -> 182065 bytes doc/WebConfig.png | Bin 0 -> 27542 bytes 3 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 doc/Clock1a.png create mode 100644 doc/WebConfig.png diff --git a/README.md b/README.md index 3d4ccb1..5bbeed2 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,17 @@ But it might as well be used as a fast clock display for model railroads. Prerequisites: -* WS-2812 based adressable LED chain forming the 7-segment display -* number of LEDs per segment is configurable +- WS-2812 based adressable LED chain forming the 7-segment display +- number of LEDs per segment is configurable +This is, how it could look like (fyi: the big cargo car is 1:45 scale, the small one is 1:160): +![Clock Picture](doc/Clock1a.png) + +The configuration menu allows the selection of real or fast clock and some options like colors, fastclock name or UTC time offset for real time: + +![Config Menu](doc/WebConfig.png) ## Links / References -- example of 3d printable segment frames +- example of 3d printable segment frames diff --git a/doc/Clock1a.png b/doc/Clock1a.png new file mode 100644 index 0000000000000000000000000000000000000000..a635a9041cf41acab60f0b32c343ff418e42c109 GIT binary patch literal 182065 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