>_ Binesse Labs: Academy
Learn to Code with Light.
Binesse isn't just a clock. It's your first hardware project. Learn C++, manipulate time, and control pixels with open-source firmware.
The Stack β Arduino C++
If you know JavaScript or Python, C++ is just logic with strict types. We use the Arduino framework, which abstracts away the complex hardware registers so you can focus on building cool features.
1. The Setup & Loop
Every Binesse program has two main functions: setup() runs once when powered on, and loop() runs continuously forever.
2. Controlling Pixels
Our firmware uses a smooth transition engine. To change a pixel, write to the target buffer: targetPixels[getPixelIndex(0, 3)] = COLOR_RED;
3. Reading Time
The system handles RTC and NTP sync automatically. Read the current time safely with: DateTime now = getCurrentTime(); int h = now.hour();
Quick Start β From Zero to Hello World
Install the IDE
Download the free Arduino IDE or VS Code with the PlatformIO extension.
Clone the Repo
Grab the official Binesse SDK from GitHub. It includes all the base logic for timekeeping and colors.
Flash the Clock
Plug Binesse into your laptop via USB-C. Hit 'Upload' and watch your custom code come to life.
The Binesse Hackathon
Hardware is just the beginning. Once the first production run ships, the games begin. Submit your best custom firmware β from API integrations to generative art. The community votes on the best pull requests.
- 3 Winners: 1-of-1 Exotic Clocks (Padauk, Zebrawood, Purpleheart)
- $500 Cash Bounty
The Cookbook β Tutorials & Hacks
Six recipes to get you started. Each one is a small, complete project that hooks into the Binesse firmware.
Thermal Mode
The onboard DS3231 RTC has a built-in temperature sensor. Query it and display the room temperature in binary at the top of every hour.
float tempC = rtc.getTemperature();
// Map tempC to targetPixels arrayDeep Sleep Blackout
Absolute darkness is better for sleep. Hard-code a blackout window to kill the display entirely while you rest.
DateTime now = getCurrentTime();
if (now.hour() >= 23 || now.hour() < 7) {
strip.setBrightness(0);
}Production Monitor
Ping your company API over Wi-Fi. If it returns a 500 error, fill the transition buffer with Red until itβs fixed.
if (api.status() == 500) {
for(int i=0; i<NUM_LEDS; i++)
targetPixels[i] = COLOR_RED;
}Crypto Ticker
Link to the CoinGecko API. Light up the top-right pixel green for gains, red for losses. Watch the market in your peripheral vision.
int idx = getPixelIndex(5, 3);
if (btc_24h > 0) targetPixels[idx] = COLOR_GREEN;
else targetPixels[idx] = COLOR_RED;Pomodoro Timer
Turn Binesse into a focus timer. 25 minutes of solid amber light, followed by a 5-minute green break.
uint32_t c = isWorking ? COLOR_SUNSET : COLOR_GREEN;
for(int i=0; i<NUM_LEDS; i++) targetPixels[i] = c;Breathing Animation
Use a sine wave function to smoothly fade the overall brightness in and out, simulating a meditative breathing pattern.
int b = (sin(millis()/1000.0) + 1.0) * (BRIGHTNESS / 2.0);
strip.setBrightness(b);Start Hacking
The firmware is standard C++ / Arduino. Grab the SDK and break things.
Open the GitHub Repo β