luc@lucheaton.com

Luc Heaton

Software Engineer

Hi, I mostly develop firmware for embedded devices.
I also build desktop and mobile applications,
as well as websites, and the odd game.

During my further education I studied:

Computer Science

Physics

Digital Illustration

The languages I use:

C/C++

C#

English / Français (un peu)

.experience

I learn through the projects I work on daily — most of which are listed here
Although I've done freelance, remote, and on-site work for:

Expanded my technical expertise by independently developing a custom USB interface for the STM32,
simplifying firmware updates via my dedicated Windows application.

Integrated a six-axis motion tracking sensor via I2C with the ESP32,
enhancing product functionality.

Created an intuitive interface to transmit specified configurations of RS232 serial data to a product.
Streamlining the product evaluation stage for the Quality Assurance team.

Developed multiple Companion modules, including the interspace-mastercuev7 module
extending product capabilities.

Designing and handling graphical interfaces for product displays that employ serial communication.

Engaging in daily discussions on product features and ideas,
demonstrating adaptability to design changes to fulfil customer requirements.

2019 - Present

Gained a new perspective of troubleshooting electronic devices from working alongside the support team.

Retained valuable technical knowledge to diagnose software and hardware faults of computers and select portable devices.

Interaction at the front desk with new or returning customers, taking notes of issues, and offering feedback.

Acquired a great insight into web development through discussions with other employees.

2017 - 2018

.portfolio

Some projects I'd like to give attention to:

Featured Project

MasterCueV7 Companion Module

I built a module for the Companion, a software platform designed to manage and control various software/hardware applications within the realm of live production, broadcasting, and other audio-visual setups. Through input devices such as the Stream Deck, users can perform complex actions with a simple button press without the need to be nearby.

The MasterCueV7 module, allows users to send and receive Cues, and set, suspend, or resume outputs, all through HTTP requests and JSON parsing.

My MasterCueV7 module can be found and added to your device by searching in the Companion Connections list of the Companion web interface, or on its Github page

NodeJS Companion 20/06/2023

Featured Project

RS232 Display Tester

I developed a Windows application featuring an intuitive GUI to transmit specified configurations of segment display data to drive Interspace Industries's (Big) Countdown displays over USB. Giving the user control of the three colours and 4x8 segments, plus the colon.

Originally I planned to build an embedded version that would shift the serial data, but because of the modified version of the RS232 protocol used, I instead built a dedicated WinForms application, which now streamlines the product evaluation stage for the Quality Assurance team.

C# WinForms 28/12/2022

Featured Project

Desktop VU Meter

Produced a working prototype of a desktop VU Meter with Winforms using NAudio. Monitoring multiple devices (current limit of 5) simultaneously, scaling the program window with each device added, with options to add / remove monitors, and refresh the list of audio devices.

The source code can be found on Github

C# WinForms 11/05/2020

Featured Project

Text-based Scrabble

An ASCII recreation of the board game Scrabble I developed for my Computer Science coursework.

Including: Premium scoring cells, Horizontal and vertical placement, Blank tiles, Dictionary validation and checking surrounding tiles during placement, Multi-word scoring, and more.

You can read my documentation of the project on Github

Python 16/12/2018

Other projects

TLC59281 Library

Built a C++ library to interface serially with the TLC59281 LED driver to control four seven-segment displays. This involved building 32-bit payloads that specify which segments to illuminate, the colour of the LEDs, and the symbol bits. As well as the transfer method requiring the correct timing to send data to the driver chip

Allowing others to interface with this display without needing to understand the payload structure. Also extending the functionality of the library with various helper methods for more control.

C/C++ 15/04/2021

Gyroscope Air Mouse

Built a C++ library to package the interface with a six-axis motion sensor. After configuration, and fine-tuning of resolution bits for each output (of which it has three accelerometer outputs and three gyroscope outputs), I can read the I2C data using an Arduino Micro (HID compatible). Translating the data into relative coordinate positions to control the mouse of a connected computer

C/C++ 05/05/2022

Power Regulator

Developed a performance-efficient realtime power analyzer with the AVR tiny series.

Built to indicate an OK status so long as the sampled voltage level is within an acceptable range. Otherwise, power cycling - However, if this occurs too frequently, we enter a lockdown state, whereby the power to the device is disconnected, and a manual reset is required. With my knowledge of AVR registers, I was able to gather and monitor the 10-bit resolution analogue input by combining the values of two separate registers.

C/C++ 17/09/2021

AutoTagger

Created a Python script that fixes the ID3 metadata on audio files so they are organized correctly by media players. As I frequently find the tags have slight differences, such as capitalization, which will break generated artist albums.

It works on audio files within a local directory, by validating the stored artist(s) names against an ever-growing dictionary file of artists, which is then applied to the ID3 tags along with the song name.

Python 09/07/2019

View all my projects