diff options
Diffstat (limited to 'VFD clock/index.md')
| -rw-r--r-- | VFD clock/index.md | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/VFD clock/index.md b/VFD clock/index.md new file mode 100644 index 0000000..56e6546 --- /dev/null +++ b/VFD clock/index.md @@ -0,0 +1,88 @@ +--- +description: "Vacuum fluorescent display with an ESP" +created: 2025-08-21 +--- + +## Resources + +- [WD202 User manual](https://www.touchdynamic.com/wp-content/uploads/2021/06/wd202.pdf) +- [WD202A User manual (contains RJ45 pinout)](https://manualzz.com/doc/html/11817581/digipos-wd-202a-customer-display-user-s-manual) + + + +Got an old VFD from a Point Of Sale device. The kind found in price tally displays in supermarkets. + +It uses RS232 to communicate, +so you need a TTL to RS232 converter for the display to recognise the signal from a micro controller. +Which convents the ESPs from 3.3v logic -> -15 to 15 volt. + +## --> Attribution: oliver@labitat.dk made the hardware awesome <-- + + + + + + + + + + + + +[Link to circuit diagram - cirkitdesigner.com](https://app.cirkitdesigner.com/project/05cf3635-211d-451e-8c80-614e9fb4ede3) + +[Link to code git repo](https://git.node5.net/firmware/vfd/) + +```cpp +#include <FastLED.h> +#include <ESP8266WiFi.h> +#include <ezTime.h> + +Timezone CopenhagenTime; + +void setup() { + Serial.begin(9600); + + Serial.write(0x0C); // Clear display + Serial.print("VFD display\n"); + Serial.print("Starting\n"); + + WiFi.setHostname(HOSTNAME); + WiFi.begin(WIFI_SSID, WIFI_PASSWORD); + + Serial.write(0x0C); // Clear display + Serial.printf("Hostname: %s\n", HOSTNAME); + Serial.printf("Connecting to: %s\n", WIFI_SSID); + while (WiFi.status() != WL_CONNECTED) + { + delay(1000); + Serial.print('.'); + } + + Serial.write(0x0C); // Clear display + Serial.println("Connected, IP address: "); + Serial.println(WiFi.localIP()); + delay(1000); + + waitForSync(); + CopenhagenTime.setLocation("Europe/Copenhagen"); + + Serial.write(0x0C); // Clear display +} + +void loop() { + // Get Unix epoch timestamp + char buffer [3]; + sprintf(buffer,"%03d",ms()); + String milliEpoch = String(now()) + buffer; + Serial.println(milliEpoch); + + delay(50); + // https://github.com/ropg/ezTime#getting-date-and-time + // 16;36;15 Sat 16 Aug 33 + String time_formatted = CopenhagenTime.dateTime("H:i:s D d M"); + Serial.println(time_formatted); + + events(); // Needed to update time continuously +} +``` |
