Generated by All in One SEO v5.0.0.1, this is an llms.txt file, used by LLMs to index the site. # Notes To Self ## Sitemaps - [XML Sitemap](https://benjemmett.com/sitemap.xml): Contains all public & indexable URLs for this website. ## Posts - [Blog](https://benjemmett.com/blog) - [Driving an LED Matrix with MicroPython](https://benjemmett.com/archives/114) - I created a MicroPython library to drive an LED matrix using an ESP32. - [LED Matrix Animation](https://benjemmett.com/archives/711) - Simple process for basic LED matrix animation using a custom MicroPython library. - [MicroPython on ESP32](https://benjemmett.com/archives/84) - Installing & running Micropython on an ESP32 dev board. - [Color Timer with Circuit Python](https://benjemmett.com/archives/1365) - This color changing timer shows when an hour passes by going from blue to red in reverse rainbow order. It's a subtle and non-intrusive reminder to get up and take a break without needing to watch a clock. This was developed and tested on an Adafruit Circuit Playground Express, and a Circuit Playground Bluefruit (shown - [Wemos D1 With Arduino IDE](https://benjemmett.com/archives/934) - The Wemos D1 ESP8266 board is a good little board with a few quirks to note when working with Arduino. Here are my notes on it. The main things to note are: You must put the board into program mode before uploading code. This is done by resetting the board while pin D3 is pulled - [Custom OctoPrint Light Control](https://benjemmett.com/archives/1336) - In order to shed light on my 3D prints, I added a custom control to OctoPrint running on a Raspberry Pi so that I can turn on the LED lights and control brightness through the web page. This is was easy to do through the config.yaml file. Neptune 3 Pro Light Control Through this Reddit - [SDR FM Radio with Python](https://benjemmett.com/archives/1302) - This project uses GNU Radio Companion to generate python code from a flow graph that plays FM radio stations using an RTL-SDR. The screenshot shows it tuned to WRSA Mis 96.9, along with the demodulated FM signal. I'm working on Mac OS, but GNU Radio is also well supported on Linux and Windows. Purchase RTL-SDR - [Simple Wireless Serial Communication](https://benjemmett.com/archives/790) - Notes on basic setup & testing of the JDY-40 wireless serial port module. These are simple wireless serial communication modules that work fairly well and don't require much power to operate. Part of the simplicity of JDY-40 is that it natively broadcasts to all other JDY-40 modules, meaning there is no additional setup required for - [Discrete Fourier Transform Frequency Bins](https://benjemmett.com/archives/168) - Notes about calculating the frequency for each DFT bin. - [JDY-40 Wireless Broadcast](https://benjemmett.com/archives/1252) - A commenter on a previous post asked about JDY-40 broadcasting to multiple nodes, where only a specific remote node will reply to the broadcast. This project shows a way to setup a three-node JDY-40 network with one hub and two remote nodes. Python and Arduino code can be found here. Network Architecture Each node in - [Why Are Complex Numbers in the Discrete Fourier Transform?](https://benjemmett.com/archives/1207) - Why does the Fourier Transform generate complex numbers in the frequency domain? The Discrete Fourier Transform (DFT) of a signal x (lower case) generates a sequence of complex values, X (upper case). Each value of X, denoted X[k], represents how much a particular frequency, denoted fk, is part of the original signal x. The post - [Ugly Remote Control Battery Mod](https://benjemmett.com/archives/1194) - I modified the remote control for my office light & fan so that it takes a 9 volt battery instead of the "23A 12V" battery it is designed to take. Although, this is an ugly solution it works great and is still a good fit in my hand. The purpose of this project was partly - [Simple Game Buzzers with Arduino](https://benjemmett.com/archives/1179) - My son was in need of game buzzers on short notice. So I put together something quick & simple that got the job done. This has 5 buzzers connected to an Arduino Nano, which could support up to 8 buzzers. When a player presses their button, it lights up and the buzzer sounds. Only one - [Setup ST Nucleo 64](https://benjemmett.com/archives/31) - Setting up STM32 Cube IDE for the ST Nucleo 64 development board. - [Python on Mac OS](https://benjemmett.com/archives/62) - Notes on setting up python on Mac OS 11.5.2. - [ATtiny85 Driving WS2812](https://benjemmett.com/archives/94) - I'm working on driving some WS 2812 lights with an ATtiny85 using the WS 2812 library from this github project. Setup AVR Tools For Mac Using homebrew I installed the avr-gcc (AVR C code cross compiler) and avrdude (tool to write data to AVR chips) brew tap osx-cross/avr brew install avr-gcc brew install avrdude I'm - [Star Projector LED Replacement](https://benjemmett.com/archives/145) - I replaced the color changing LED lights in a small star projector. - [555 Timer Circuit on Paper](https://benjemmett.com/archives/183) - I created a simple 555 timer circuit on paper by using adhesive copper sheets and a cutting machine. - [Books Read in 2021](https://benjemmett.com/archives/205) - Some of the notable books I read this year. - [Lighting a Christmas Ornament](https://benjemmett.com/archives/230) - Making a Christmas tree ornament into an illuminated freestanding nativity scene. - [I2C Testing with MCP2221](https://benjemmett.com/archives/251) - Experimenting with Adafruit MCP2221 breakout board to bridge I2C to USB. This handy module seems like a great way to test out I2C devices interactively. - [Python Virtual Environment On Windows](https://benjemmett.com/archives/268) - Notes about setting up & using python virtual environments on Windows. - [LED Countdown Snail Timer](https://benjemmett.com/archives/302) - I made a countdown timer with design help from my kids. - [Using AVR Flash Memory](https://benjemmett.com/archives/317) - Notes on storing data in flash with PROGMEM and driving an OLED display. - [Custom PCB for LED Light Game](https://benjemmett.com/archives/349) - I made a custom PCB light game with the option for running extra programs as well. - [Some of Books I Read in 2022](https://benjemmett.com/archives/265) - Humble Pi: When Math Goes Wrong in the Real World Matt Parker Math is a powerful tool that's foundational to modern society. However, as this book demonstrates, when math is misunderstood or misused it can lead to failures that are sometimes comical but often tragic. Matt has put together a great collection of failure stories - [ESP-Now With MicroPython](https://benjemmett.com/archives/640) - Testing a MicroPython build that supports ESP-Now. Example code for some initial tests on ESP32 dev boards included. - [Custom Characters with an LCD 1602](https://benjemmett.com/archives/689) - Custom characters can be used to draw any simple image on an LCD 1602 display. The gitbub repo includes a python script to generate display code from any image. - [How I Made an ATMega328 Data Logger](https://benjemmett.com/archives/375) - Making a ATMega328 data logger for collecting GPS data. - [Pulse Width Modulation Outsourcing To PCA9685](https://benjemmett.com/archives/521) - These are my notes on setting up the ATMega4809 microcontroller for dimming LED lights using a PCA9685 PWM controller IC. - [DIY Light Box With Wifi Control](https://benjemmett.com/archives/958) - This light box is illuminated by individually addressable LED strips and controlled over Wifi. The code and scenery template pdf can be found here: https://github.com/benjohnemmett/LightBox/ The 3D printed insert file can be found here as an stl or obj: https://www.tinkercad.com/things/ihSa8Sw1An6-light-box-insert-rev-2 Supplies Wooden box: Mine is from Hobby lobby and has a glass front (https://www.hobbylobby.com/crafts-hobbies/wood-crafts-blank-surfaces/frames/square-wood-shadow-box/p/80811310) WS2812 - [ATmega328 UART Control Notes](https://benjemmett.com/archives/245) - Notes & examples using the UART on an ATmega328 microcontroller. - [Coordinate Transform Notes](https://benjemmett.com/archives/330) - Notes about generating and applying a coordinate transformation matrix using Euler angles. - [DIY GPS Unit with Arduino Uno](https://benjemmett.com/archives/1138) - This DIY GPS unit consists of an Arduino Uno, SSD1306 OLED display, and BN-220 GPS. It is powered by a 9V battery. In another post I detailed a memory corruption issue workaround for this project. The Arduino sketch is on Github: https://github.com/benjohnemmett/GpsDisplay Components: Arduino Uno Compatible Board (AliExpress affiliate link) Arduino Uno Shield Blank PCB - [Arduino Heap Space Workaround](https://benjemmett.com/archives/1125) - I thought this GPS project would be done quickly, but found myself scratching my head for days on a weird issue. I still don't know exactly what caused the problem, but I found a work around by moving some data to heap memory instead of using the stack. I can only guess that there is - [JDY-41 Wireless Range Test](https://benjemmett.com/archives/1090) - The JDY-41 is a wireless transceiver module with some improvements over the similar JDY-40 which in highlighted in the post, Simple Wireless Serial Communication. The JDY-41 claims a range of 160 meters. I did a basic wireless range test to verify the claimed range of the JDY-41. I purchased a few JDY-41 modules here (AliExpress - [Flashy Paper Christmas Tree](https://benjemmett.com/archives/1035) - This Christmas-themed paper circuit uses no microcontroller, only a 555 timer and CD4017 decade counter to drive blinking LEDs. The KiCad project and other files can be found in the github repo. This circuit was made using a craft cutting machine to cut copper traces from adhesive copper sheets, similar to this project. I found - [Python Code Templates](https://benjemmett.com/archives/1025) - These python code templates are based on software tools that I have developed lately. They can be a helpful reference for future projects. The code is also available in this Github repo. Basic ArgParse Template A python script which takes command line arguments using argparse and runs a main function import argparse import sys def - [C++ Code Templates](https://benjemmett.com/archives/1031) - Here are a couple of basic start point templates for C++ programs. The code can also be found in this Github repo. Input Argument Parsing This very simple bit of code checks for input arguments and prints them out #include int main(int argc, char **argv) { printf("argc: %d\n", argc); for (int i = 0; - [Simple Fix For a 3D Printed Plane Part](https://benjemmett.com/archives/996) - I've been printing and building the 3DLabPrint A-10. They provide a link to purchase landing gear retracts on AliExpress, however the link goes to a set which does not fit the 3D printed sockets. Fortunately, it was not a difficult fix. All I used was a candle and a screwdriver. I thought about taking a - [Flight Dynamic Equations](https://benjemmett.com/archives/479) - Brief reference for equations relating to flight dynamics. Taken from the book "The Illustrated Guide to Aerodynamics" by H.C. "Skip" Smith and "The Science of Flight" video course on the Great Courses. Lift Equation Relates aircraft velocity, air density, and wing area to the amount of lift generated by the wing. Coefficient of lift is - [Servo Motor Control With ATmega4809](https://benjemmett.com/archives/440) - Building on the PWM input capture, this is an active passthrough program that drives servo motors. This is a key step toward flight stabilization and control. - [C Linker and Fresh Eyes](https://benjemmett.com/archives/831) - It's often valuable to set a project down for a while. After setting down the Flight Logger project for a few months, I came back to it with fresh eyes and quickly realized that I could simplify how some hardware specific code is called from hardware agnostic code. This issue and solution may be an - [Simple & Delicious Pizza Dough](https://benjemmett.com/archives/460) - The dough recipe that I use for my Ooni oven. - [Make Ping Pong Poké Ball with 3D Printed Mask](https://benjemmett.com/archives/736) - How I made ping pong poké balls for a kids birthday party using a 3D printed mask. - [Simple Multi-Channel Pulse Width Capture with ATmega4809](https://benjemmett.com/archives/404) - Some notes on 4-channel servo control PWM capture with an ATmega4809. Includes source code and notes on development and improvements. - [Basic Video Conversion With FFMpeg](https://benjemmett.com/archives/324) - Notes on basic video format conversion with ffmpeg - [Pinewood Derby CNC](https://benjemmett.com/archives/274) - I cut out pinewood derby cars with a small CNC using Fusion 360 and Candle. - [Window Blind Valance Clip 3D Print](https://benjemmett.com/archives/132) - One of my first 3D print designs was this replacement valance clip using tinkercad. I just printed another couple replacement clips recently and decided to share the design on thingiverse. My kids (and I) break these fairly often so it's nice to be able to print a new one on demand. It doesn't take much ## Pages - [](https://benjemmett.com/) - Search Categories Recently Added Notes - [My Games](https://benjemmett.com/my-roku-games) - iOS Games Doggle Time Sharpen your logic and speed in a one-of-a-kind numeric puzzle. Use pattern recognition, arithmetic, and quick thinking to crack the code and hear your dog speak, giving you a new joke or trivia each day. View on the iOS App Store Roku Games Here are a few fun Roku Games I - [Doggle Time](https://benjemmett.com/doggle-time-support) - Support For any issues with Doggle Time, please contact support at goodthinggames@gmail.com. Privacy Policy for Doggle Time Effective Date: 11/6/2025 Doggle Time is a fun, offline mobile game. We value your privacy and are committed to protecting it. This Privacy Policy explains how we handle your information—or in this case, how we don't. Information We - [Contact](https://benjemmett.com/contact) - [Home](https://benjemmett.com/593-2) - Notes on making stuff with electronics, software, and more Check Out The Latest Browse Topics - [Hangman Helper](https://benjemmett.com/hangman-helper) - Hangman Helper Enter your secret phrase: Go Letter Counts - [About](https://benjemmett.com/about) - Writing notes is a great way to reflect on experiences and share them with others. They are also a great tool to record lessons learned. This site is a collection of notes that I've made for myself and anyone else who may find them useful. ## MailPoet Page - [MailPoet Page](https://benjemmett.com/?mailpoet_page=subscriptions) - [mailpoet_page] - [MailPoet Page](https://benjemmett.com/?mailpoet_page=captcha) - [mailpoet_page] ## Categories - [Other](https://benjemmett.com/archives/category/other) - [Microcontrollers](https://benjemmett.com/archives/category/microcontrollers) - [Math](https://benjemmett.com/archives/category/math) - [Retrospective](https://benjemmett.com/archives/category/retrospective) - [Coding](https://benjemmett.com/archives/category/coding) - [Electronics](https://benjemmett.com/archives/category/electronics) ## Tags - [python](https://benjemmett.com/archives/tag/python) - [mac os](https://benjemmett.com/archives/tag/mac-os) - [virtual environment](https://benjemmett.com/archives/tag/virtual-environment) - [Microcontroller](https://benjemmett.com/archives/tag/microcontroller) - [STM32](https://benjemmett.com/archives/tag/stm32) - [ESP32](https://benjemmett.com/archives/tag/esp32) - [micropython](https://benjemmett.com/archives/tag/micropython) - [AVR](https://benjemmett.com/archives/tag/avr) - [ATTiny85](https://benjemmett.com/archives/tag/attiny85) - [LED matrix](https://benjemmett.com/archives/tag/led-matrix) - [3D Print](https://benjemmett.com/archives/tag/3d-print) - [LED Lights](https://benjemmett.com/archives/tag/led-lights) - [Color Changing Lights](https://benjemmett.com/archives/tag/color-changing-lights) - [Electronics](https://benjemmett.com/archives/tag/electronics) - [Repair](https://benjemmett.com/archives/tag/repair) - [Digital Signal Processing](https://benjemmett.com/archives/tag/digital-signal-processing) - [DSP](https://benjemmett.com/archives/tag/dsp) - [Fourier Transform](https://benjemmett.com/archives/tag/fourier-transform) - [DFT](https://benjemmett.com/archives/tag/dft) - [FFT](https://benjemmett.com/archives/tag/fft) - [Frequency Analysis](https://benjemmett.com/archives/tag/frequency-analysis) - [Circuit Design](https://benjemmett.com/archives/tag/circuit-design) - [Kicad](https://benjemmett.com/archives/tag/kicad) - [555 Timer](https://benjemmett.com/archives/tag/555-timer) - [LED](https://benjemmett.com/archives/tag/led) - [Books](https://benjemmett.com/archives/tag/books) - [2021](https://benjemmett.com/archives/tag/2021) - [Reading](https://benjemmett.com/archives/tag/reading) - [Distracted](https://benjemmett.com/archives/tag/distracted) - [Stuff Matters](https://benjemmett.com/archives/tag/stuff-matters) - [Math](https://benjemmett.com/archives/tag/math) - [Sherlock Holmes](https://benjemmett.com/archives/tag/sherlock-holmes) - [Wright Brothers](https://benjemmett.com/archives/tag/wright-brothers) - [Flying](https://benjemmett.com/archives/tag/flying) - [Skateboarding](https://benjemmett.com/archives/tag/skateboarding) - [Lights](https://benjemmett.com/archives/tag/lights) - [Christmas](https://benjemmett.com/archives/tag/christmas) - [Coin Cell Battery](https://benjemmett.com/archives/tag/coin-cell-battery) - [ATmega328](https://benjemmett.com/archives/tag/atmega328) - [UART](https://benjemmett.com/archives/tag/uart) - [I2C](https://benjemmett.com/archives/tag/i2c) - [IIC](https://benjemmett.com/archives/tag/iic) - [TWI](https://benjemmett.com/archives/tag/twi) - [MCP2221](https://benjemmett.com/archives/tag/mcp2221) - [EEPROM](https://benjemmett.com/archives/tag/eeprom) - [windows](https://benjemmett.com/archives/tag/windows) - [CNC](https://benjemmett.com/archives/tag/cnc) - [Pinewood Derby](https://benjemmett.com/archives/tag/pinewood-derby) - [Fusion 360](https://benjemmett.com/archives/tag/fusion-360) - [Woodworking](https://benjemmett.com/archives/tag/woodworking) - [PCB](https://benjemmett.com/archives/tag/pcb) - [OLED](https://benjemmett.com/archives/tag/oled) - [PROGMEM](https://benjemmett.com/archives/tag/progmem) - [Flash](https://benjemmett.com/archives/tag/flash) - [SSD1306](https://benjemmett.com/archives/tag/ssd1306) - [video](https://benjemmett.com/archives/tag/video) - [ffmpeg](https://benjemmett.com/archives/tag/ffmpeg) - [gif](https://benjemmett.com/archives/tag/gif) - [mp4](https://benjemmett.com/archives/tag/mp4) - [ATmega4809](https://benjemmett.com/archives/tag/atmega4809) - [PWM](https://benjemmett.com/archives/tag/pwm) - [Flight Controller](https://benjemmett.com/archives/tag/flight-controller) - [PCA9685](https://benjemmett.com/archives/tag/pca9685) - [Wingboard](https://benjemmett.com/archives/tag/wingboard) - [Coordinate](https://benjemmett.com/archives/tag/coordinate) - [Transform](https://benjemmett.com/archives/tag/transform) - [Linear Algebra](https://benjemmett.com/archives/tag/linear-algebra) - [Matrix](https://benjemmett.com/archives/tag/matrix) - [Vector](https://benjemmett.com/archives/tag/vector) - [Food](https://benjemmett.com/archives/tag/food) - [Pizza](https://benjemmett.com/archives/tag/pizza) - [Dough](https://benjemmett.com/archives/tag/dough) - [Cooking](https://benjemmett.com/archives/tag/cooking) - [Recipe](https://benjemmett.com/archives/tag/recipe) - [GPS](https://benjemmett.com/archives/tag/gps) - [Data Logging](https://benjemmett.com/archives/tag/data-logging) - [Blink](https://benjemmett.com/archives/tag/blink) - [ESP-Now](https://benjemmett.com/archives/tag/esp-now) - [Arduino](https://benjemmett.com/archives/tag/arduino) - [Arduino Uno](https://benjemmett.com/archives/tag/arduino-uno) - [LCD](https://benjemmett.com/archives/tag/lcd) - [Making](https://benjemmett.com/archives/tag/making) - [Wireless](https://benjemmett.com/archives/tag/wireless) - [Serial](https://benjemmett.com/archives/tag/serial) - [Flight](https://benjemmett.com/archives/tag/flight) - [Aircraft](https://benjemmett.com/archives/tag/aircraft) - [software](https://benjemmett.com/archives/tag/software) - [code](https://benjemmett.com/archives/tag/code) - [programming](https://benjemmett.com/archives/tag/programming) - [C++](https://benjemmett.com/archives/tag/c) - [Software Development](https://benjemmett.com/archives/tag/software-development) - [Coding](https://benjemmett.com/archives/tag/coding) - [Communication](https://benjemmett.com/archives/tag/communication) - [JDY-41](https://benjemmett.com/archives/tag/jdy-41) - [Display](https://benjemmett.com/archives/tag/display) - [Game](https://benjemmett.com/archives/tag/game) - [Buzzer](https://benjemmett.com/archives/tag/buzzer) - [Buttons](https://benjemmett.com/archives/tag/buttons) - [Ugly](https://benjemmett.com/archives/tag/ugly) - [Remote Control](https://benjemmett.com/archives/tag/remote-control) - [9 Volt](https://benjemmett.com/archives/tag/9-volt) - [Complex Numbers](https://benjemmett.com/archives/tag/complex-numbers) - [JDY-40](https://benjemmett.com/archives/tag/jdy-40) - [Broadcast](https://benjemmett.com/archives/tag/broadcast) - [Software Defined Radio](https://benjemmett.com/archives/tag/software-defined-radio) - [GNU Radio](https://benjemmett.com/archives/tag/gnu-radio) - [Circuit Python](https://benjemmett.com/archives/tag/circuit-python)