>_ 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

01

Install the IDE

Download the free Arduino IDE or VS Code with the PlatformIO extension.

02

Clone the Repo

Grab the official Binesse SDK from GitHub. It includes all the base logic for timekeeping and colors.

03

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

sensortemperaturertc

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 array
πŸŒ’

Deep Sleep Blackout

sleepbrightnesstime

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

apiwifialert

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

apiwififinance

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

timerproductivityfocus

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

animationledmath

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 β†’

Related