Several of my early projects were on the Arduino plateform, but I quickly "graduated" to using regular micropocessors, in particular Microchip PIC devices. Their free IDE and compilers make it easy and economical to write programs in C and their ICSP (In Circuit Serial Programming) interface coupled with their low cost PicKit4 programmer provide a low cost to full program development and implementation.
As for PCB design and manufacturing, I use KiCad for PCB design (excellent free program) and you can't beat the Chinese for quick and cheap PCB manufacturing (PCBWay).
Some Arduino source code is available for download on this page, the other examples can be copied from the pdf's in the browser. Firefox seems to loose line endings, but Chrome of Edge do not.
This document presents a reliable method and implementation of switch debouncing.
Working Arduino examples are provided to illustrate the concept.
Document in pdf: debouncing.pdf
Arduino examples (zip file): arduino.zip
Simple I2C routines
Here we present a set of building blocks to write I2C routines in a simple environment
and provide working example of I2C routines to control an EEPROMs and a temperature sensor.
Document in pdf: simple_i2c.pdf
Modifying a table from a subroutine
A brief note on how to set up a C subroutine that can modify a table
Document in pdf: table_modify.pdf