Watchy is an exciting Open Source E-Paper Watch, based on Arduino and the ESP32 micro controller. WatchySim is a simulation framework for its watch faces.
Watchy is based on Arduino, and so relies on using the Arduino IDE to compile and upload new Watchy sketches to define your watch face. This requires that you have the hardware available and connected, and is also slowed down somewhat by the speed of the Arduino upload process.
WatchySim gives you a Watchy-like SDK to develop your watch faces, but lets you test them in a standard Windows GDI-based application.
WatchySim builds under Visual Studio Community Edition. This is a free version of Visual Studio that anybody can download and use.
WatchySim comes with most of the example Watchy watch faces by default. You can explore these examples to see how to add another. In general:
- Add a new header file (for example,
Watchy_PowerShell.h
). This file defines your class that extends the Watchy class. Unlike the actual Watchy SDK, in this class - include"Watchy.h"
, rather than<Watchy.h>
. This now references our simulated version of the Watchy SDK. You will have to change this include to<Watchy.h>
when you move this watch face to Arduino. In this file, most Watchy watch faces include a secondary header (for example"powershell.h"
) that includes their bitmaps. - Add a new C++ file (for eample,
Watchy_PowerShell.cpp
) to implement the logic for your watch face. In this implementation, you will have access to many of the methods exposed by Watchy:display.drawBitmap()
,display.fillScreen()
, and more. - Update the beginning of
WatchySim.cpp
to include your new watch face's header file and create an instance of your custom watch face class. Follow the examples there, and comment out the ones that are currently defined.
- Since WatchySim is a simulation of the Watchy SDK, it implements the bare minimum of the Arduino SDK. Watch faces that rely on Arduino libraries will not work without you implementing (and hopefully contributing back a PR!) a simulation of those APIs.
- WatchySim is incomplete. It currently only implements enough of the Watchy SDK to get a set of popular / example watch faces building and simulating. If you want to simulate additional Watchy features that aren't currently implemented, you can add these to this project's version of
Watchy.h
andWatchy.cpp
. Please contribute back a PR if you do, so the whole community can benefit. - Some of what watchysim simulates might not be faithful to what happens in an actual physical Watchy. If you find inaccuracies, please contribute a PR!
The contents of this repository is under an MIT License.