Lab

These are all of the software and hardware development projects I am working on in my spare time. I will work to keep this page up to date with my latest progress. Once a software project gets to a decently stable state, I will post the source code here for it. This work by Kamots is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License or Apache License 2.0, depending on the file. Please respect the work that has gone in to these projects by following the terms of the appropriate license.

These and other projects I am working on can be found on GitHub

Thanks for visiting!
- Kamots

This page was last updated on Jan 23, 2018 @ 09:15 UTC.

Game of Life

Arduino GoL Picture
Hardware Components:

This project brings Conway's Game of Life to the Arduino platform using the very cool Adafruit shield listed above. Yes, many others have written the Game of Life for the Arduino platform. My goal was to have a larger grid size (29x40 currently), fast generation processing, and more features. I believe I reached this goal and I am continuing to improve on the code.

I have implemented several features including saving and restoring the grid to EEPROM with 3 separate blocks for storage, saving the 3 EEPROM blocks to an SD card in Golly's .RLE format, and a grid edit mode so you can use the joystick on the Adafruit LCD shield to manipulate the current grid or create your own patterns. I've also added a speed switch option since you may want to slow down processing to see the patterns. There is an on-screen menu for all of this, and several pre-defined patterns that can be run just by selecting the appropriate menu items. I also use a single bit per cell so memory utilization is very good.

I know it could be faster with a parallel LCD but that isn't what I want since many others have done that already. Feel free to e-mail me suggestions on improving the processing speed.

Download files


Ethernet Network Tester

Arduino EthT Picture
Hardware Components:

This project came from conversations I had at work about the need for a tool to do basic network testing including DHCP verification. There are many tools out there to do this, but I thought it would be fun to do on the Arduino.

On power-up the code attempts to initialize the Ethernet card and, if successful, attempts to obtain an IP address via DHCP. Once it receives DHCP lease information, it proceeds to ping the default gateway provided by the DHCP server. It displays the results on the LCD which refreshes with every ping attempt. I also included code to check 1-Wire-based temperature sensors and report the value of the last sensor tested every 10 seconds.

I plan to expand the capabilities of this and clean up the code before I release it on here. I think several more useful tests can be built in.


1-Wire LCD Library

Digispark 1-Wire Picture
Hardware Components:

This is my first Arduino library project. It was influenced by the fact that I had an old 1-Wire LCD I purchased many years ago in hopes of having a display for my 1-Wire devices at the time. I never got it working properly back then since I didn't understand the 1-Wire protocol as well as I do now.

The library is designed to provide a common interface to the hobby-boards.com LCD Driver v2.0 based on a DS2408 with a 1602F Parallel LCD module. If you have code written for the normal Arduino LCD drivers, you will be able to use this library to easily point your output to a 1-Wire connected LCD if you have the board or make your own based on its design. With permission, I have the PDF to the schematic linked above.

I originally developed this on an Arduino Nano, but I have since moved it to a Digispark since its limited number of I/O pins makes this an ideal project for it. I've used pin 5 so I2C could still be used for other things.

The library still needs a few extra features before I release it, but it is currently functional for output of built-in characters. I will be working to add custom character capabilities for LCDs that support it. I also want to support more LCD models before release since I have only tested my 16x2 LCD.


1-Wire Sensors Library

Hardware Components:

I wrote this library to simplify the various 1-Wire projects I've been working on that use 1-Wire sensors. Right now it only supports various temperature sensors, but I plan to expand it to access humidity sensors along with accessing iButton mission log data. It is designed to use minimal resources and can scale up to 128 devices if you have the memory for the arrays (uses about 3 bytes of RAM per device if float isn't used).

Download files


NTP Server

Hardware Components:

Details coming soon!