Multi watch-face solution for Watchy

Overview

watchy999

A Multi watch-face solution for Watchy

What started out as a way to have more than one watch face on the Watchy by SQFMI, has turned into some-what of a firmware enhancement. I've chipped away at the base firmware enough to chisel out something that is more along the lines of what I want the Watchy to be, more like my Pebble. With that said, is this the best option for you? It depends, if you're an enthusaist, probably. If you're a seasoned developer, maaaybe?

Why Watchy999?

In learning Arduino and creating a way for multiple watch faces, I've made what works best "for me." I've standardized basic time functions to make creating watch faces as easy as possible. By simply looking over my example watch faces, you should be able to discern what's necessary to build your own watch face with little to no experience coding. That's how I started, I knew nothing, and thanks to a few thoughtful devs on the Pebble, I found my niche. I hope this helps Watchy999 folks in that same way.

Offical Release or not?

No, this is not an official release, yet... I need to flesh out a proper Readme, and that's gonna take some time given how large this project has grown.

Config999.h

This is where your one-time configurations reside. Hopefully, all future updates will not touch config999, and therefore updating to the latest revision of wathcy999 will not require any further updates. Most everything required to run watchy999 is explained in config999.h. Edit config999 once and you can set it and forget it.

Advantges over the stock firmware

It's got my watch faces, do I even need to say more? JK!!! But yeah, I do make some premium watch faces, so yeah, this will be the only way to get them. So what are the advantages? Once you've configured config999.h:

• Persistent configurations - Whatever settings you've configured on your Watchy will persist even if your battery dies, or install other watch faces.

• Multipile Wifi Access Points - Define multiple Wifi Access Points so you're always connected throughout your day.

• Mulple built-in premium watch faces - I'm a designer, so this isn't developer art. Conversely, my code looks like I wrote it in crayon, but you can't see it on the watch, so no harm no foul! ;)

• Color, Layout and Action buttons - Press a top or bottom right button on a watch face to see what happens. Colors may change, animations may trigger, or your layout will change.

• Configure everything from the watch - This is just how it should be right?

• Sleep mode - Want to really maximize your battery? Use sleep mode. Configure when to start sleep mode, or enable it on demand and easily add an extra day or two between charges.

To be continued...

You might also like...
Multi-dimensional dynamically distorted staggered multi-bandpass LV2 plugin
Multi-dimensional dynamically distorted staggered multi-bandpass LV2 plugin

B.Angr A multi-dimensional dynamicly distorted staggered multi-bandpass LV2 plugin, for extreme soundmangling. Based on Airwindows XRegion. Key featur

Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.
Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU.

Unicorn Engine Unicorn is a lightweight, multi-platform, multi-architecture CPU emulator framework, based on QEMU. Unicorn offers some unparalleled fe

Rmaxcut finds an approximate solution to a weighted max-cut problem via random perturbation.

Rmaxcut finds an approximate solution to a weighted max-cut problem via random perturbation. Each line in an input file consists of the first nodeID, the second nodeID and an integer weight.

This is the repo for the microcontroller part of project Cleanurge - a scalable IoT powered waste management system, our solution towards a greener world.
This is the repo for the microcontroller part of project Cleanurge - a scalable IoT powered waste management system, our solution towards a greener world.

Cleanurge A scalable waste management system powered by IoT. There are 3 repositories for the entire cleanurge system in total cleanurge-mcu: Containi

Files for my solution to the SSTIC 2021 challenge

SSTIC 2021 Challenge Writeup This repository hosts the files for my solution to the SSTIC 2021 challenge. The corresponding writeup can be found on my

Smart Home Total Solution - Keyword Recognition
Smart Home Total Solution - Keyword Recognition

Introduction Arm IoT Total Solutions provides a complete solution designed for specific use-cases, leaving developers to focus on what really matters

ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.
ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.

ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.

This is a repository entirely dedicated to all kind of questions ranging from basic DSA to CP. It aims to provide a solution to different questions. 📚

🎉 CP-DSA-Questions 🎉 This is a repository entirely dedicated to all kind of questions ranging from basic DSA to CP. It aims to provide a solution to

This repo contains solution of 450 DSA sheet by love babbar

450DSA This repo contains solution of 450 DSA sheet by love babbar . Here is the link for that list : https://450dsa.com/ Guidlines to be followed Onl

Comments
  • Error when compiling sketch

    Error when compiling sketch

    Arduino: 1.8.16 (Linux), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None"
    
    
    
    
    
    
    
    
    
    
    
    WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
    WARNING: library Rtc_Pcf8563 claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp: In constructor 'WatchyBase::WatchyBase()':
    Watchy_Base.cpp:53:24: error: no matching function for call to 'Watchy::Watchy()'
     WatchyBase::WatchyBase() {}
                            ^
    In file included from /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.h:6,
                     from /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp:2:
    /home/kelbot/Arduino/libraries/Watchy/src/Watchy.h:45:18: note: candidate: 'Watchy::Watchy(const watchySettings&)'
             explicit Watchy(const watchySettings& s) : settings(s){} //constructor
                      ^~~~~~
    /home/kelbot/Arduino/libraries/Watchy/src/Watchy.h:45:18: note:   candidate expects 1 argument, 0 provided
    /home/kelbot/Arduino/libraries/Watchy/src/Watchy.h:38:7: note: candidate: 'Watchy::Watchy(const Watchy&)'
     class Watchy {
           ^~~~~~
    /home/kelbot/Arduino/libraries/Watchy/src/Watchy.h:38:7: note:   candidate expects 1 argument, 0 provided
    /home/kelbot/Arduino/libraries/Watchy/src/Watchy.h:38:7: note: candidate: 'Watchy::Watchy(Watchy&&)'
    /home/kelbot/Arduino/libraries/Watchy/src/Watchy.h:38:7: note:   candidate expects 1 argument, 0 provided
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp: In member function 'virtual void WatchyBase::init(String)':
    Watchy_Base.cpp:91:7: error: invalid use of member function 'bool Watchy::syncNTP(long int, int, String)' (did you forget the '()' ?)
           syncNTP = dezign[4];
           ^~~~~~~
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp: In member function 'void WatchyBase::saveVars()':
    Watchy_Base.cpp:186:31: error: cannot resolve overloaded function 'syncNTP' based on conversion to type 'uint8_t' {aka 'unsigned char'}
                                   };
                                   ^
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp: In member function 'void WatchyBase::ntpApp()':
    Watchy_Base.cpp:1162:24: error: cannot resolve overloaded function 'syncNTP' based on conversion to type 'uint16_t' {aka 'short unsigned int'}
       uint16_t listIndex = syncNTP;
                            ^~~~~~~
    Watchy_Base.cpp:1167:54: error: no matching function for call to 'WatchyBase::showList(const char* [5], byte&, <unresolved overloaded function type>, bool, bool)'
       showList(listItems, itemCount, syncNTP, true, false);
                                                          ^
    In file included from /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp:2:
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.h:80:10: note: candidate: 'void WatchyBase::showList(const char**, byte, byte, bool, bool)'
         void showList(const char* listItems[], byte itemCount, byte listIndex, bool selected, bool partialRefresh);
              ^~~~~~~~
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.h:80:10: note:   no known conversion for argument 3 from '<unresolved overloaded function type>' to 'byte' {aka 'unsigned char'}
    Watchy_Base.cpp:1201:22: error: invalid operands of types 'uint16_t' {aka 'short unsigned int'} and '<unresolved overloaded function type>' to binary 'operator!='
             if(listIndex != syncNTP)
                ~~~~~~~~~~^~~~~~~~~~
    Watchy_Base.cpp:1203:9: error: invalid use of member function 'bool Watchy::syncNTP(long int, int, String)' (did you forget the '()' ?)
             syncNTP = listIndex;
             ^~~~~~~
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp: In member function 'void WatchyBase::syncNtpTime()':
    Watchy_Base.cpp:1572:43: error: 'YEAR_OFFSET' was not declared in this scope
           currentTime.Year = local->tm_year + YEAR_OFFSET - 2040; //This change matches watchy defaults
                                               ^~~~~~~~~~~
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy_Base.cpp:1572:43: note: suggested alternative: 'YEAR_OFFSET_DS'
           currentTime.Year = local->tm_year + YEAR_OFFSET - 2040; //This change matches watchy defaults
                                               ^~~~~~~~~~~
                                               YEAR_OFFSET_DS
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy999.cpp: In member function 'void Watchy999::checkBattery()':
    Watchy999.cpp:288:15: error: invalid operands of types '<unresolved overloaded function type>' and 'int' to binary 'operator=='
       if (syncNTP == 0 && !runOnce) {
           ~~~~~~~~^~~~
    /home/kelbot/Arduino/watchy999-main/watchy999/Watchy999.cpp: In member function 'virtual void Watchy999::drawWatchFace()':
    Watchy999.cpp:365:15: error: invalid operands of types '<unresolved overloaded function type>' and 'int' to binary 'operator=='
       if (syncNTP == 1 && currentTime.Hour == SYNC_HOUR && currentTime.Minute == SYNC_MINUTE && !lowBattFace || runOnce) { //Sync NTP at specified time (3am default)
           ~~~~~~~~^~~~
    exit status 1
    no matching function for call to 'Watchy::Watchy()'
    
    
    This report would have more information with
    "Show verbose output during compilation"
    option enabled in File -> Preferences.
    
    
    opened by klundry 5
Owner
null
C64 Watch is a customized T-Watch 2020 that was inspired by the Commodore 64 computer. It features a C64 theme and a built-in BASIC interpreter.

C64 Watch C64 Watch is a customized T-Watch 2020 that was inspired by the Commodore 64 computer. It features a C64 theme and a built-in BASIC interpre

Nick Bild 30 Nov 26, 2022
Is this hardware solution the ultimate in switch bounce elimination? Simple PCB, cheap components = final solution!

#230 Ultimate Switch Bounce Eliminator Direct link to video: https://youtu.be/b2uUYiGrS5Y It's time to try a final, alternative approach to the ubiqui

Ralph Bacon 7 Nov 7, 2022
The Sensor Watch is a board replacement for the classic Casio F-91W wristwatch.

The Sensor Watch is a board replacement for the classic Casio F-91W wristwatch.

null 660 Dec 29, 2022
A Smart Watch Project that uses RTL8722DM_MINI

AmebaWatch A Smart Watch Project that uses RTL8722DM_MINI Connection The pin connection to the GC9A01 SPI IPS LCD display is in the sketch code @Line

SimonXI 1 Oct 6, 2021
STM32+LVGL ==> WATCH

HWatch STM32+LVGL ==> WATCH 网盘链接: 源码: 链接:https://pan.baidu.com/s/1h0YSe5Ja6y8xVL-h4-vCUg 提取码:8pxz 参考资料: 链接:https://pan.baidu.com/s/13PEog4OyJ0LQ3oz

null 67 Oct 6, 2022
"the French term for a watch movement that is not completely assembled yet."

Chablon "the French term for a watch movement that is not completely assembled yet." Today it's a program to draw rectangles on the display of a PineT

Daniel Barlow 3 Jan 3, 2022
Emulator collection for Nintendo® Game & Watch™

Emulator collection for Nintendo® Game & Watch™ This is a port of the retro-go emulator collection that runs on the Nintendo® Game & Watch™: Super Mar

Konrad Beckmann 351 Dec 30, 2022
Watch TV channels on your device via internet from all over the world for free. IPTV API Implemented with QT C++

IPTV Desktop Description IPTV-Desktop is GUI application made with Qt C++ using IPTV API, which was developed by iptv-org. Watch free tv channels via

Not Your Surya 4 Oct 24, 2022
ESP32-CAM with LVGL Speech/Face Recognition IR Control

ESP_MASTER 视频介绍:https://www.bilibili.com/video/BV1SM4y1V7Yb This is a comprehensive project that combines the powerful computing capabilities of ESP32

Kevincoooool 198 Jan 5, 2023
BMI_automatics-faceshielding-device - this is a project utilizing STM32, MATLAB,Softmax classifier to achieve a portable face shielding(mask) device

BMI_automatics-faceshielding-device this is a project utilizing STM32, MATLAB,Softmax classifier to achieve a portable face shielding(mask) device in

Lyu Tian 2 Dec 23, 2021