You are browsing as a guest. Sign up (or log in) to start making projects!

BigSaltyBeans

@BigSaltyBeans

Joined June 5th, 2026

  • 6Devlogs
  • 3Projects
  • 1Ships
  • 8Votes
Open comments for this post

1h 9m 15s logged

Major PCB Improvements

Many edits were made to the PCB, explained below:

  • Underglow LEDs on top and bottom were added!
  • Key LEDs were moved to a much better position
  • Used a ground fill instead of routing
  • Keys are more spaced and lined up
  • Traces are now 0.5mm thick

All V2 now needs is a CAD update!

Major PCB Improvements

Many edits were made to the PCB, explained below:

  • Underglow LEDs on top and bottom were added!
  • Key LEDs were moved to a much better position
  • Used a ground fill instead of routing
  • Keys are more spaced and lined up
  • Traces are now 0.5mm thick

All V2 now needs is a CAD update!

Replying to @BigSaltyBeans

0
1
Ship Pending review

Here is my 5 Key macropad for Hackpad! I've never designed a PCB before and this has been such a blast to learn, prototype, and ship! I'm pretty happy with my creation and proud of myself for learning how to build PCBs. Writing the firmware was also a new experience that I found extremely difficult, but you only learn through failures! Hopefully this gets to see the light of day.
Cheers!

Try project → See source code →
Open comments for this post

32m 30s logged

Finished Firmware and Ship!

After cleaning up the PCB design and generating gerber files I spent some time working on the firmware! I decided to use QMK for the firmware and programed support for all my hackpad’s features!

The default keys are the 4 Arrow keys, Z, and the volume knob with push to mute.

I did not expect the firmware to be as difficult to program as it was! This has been a fun project, there is still much to work on as things come together in the real world but I’m proud of where I’ve gotten up to now!

Finished Firmware and Ship!

After cleaning up the PCB design and generating gerber files I spent some time working on the firmware! I decided to use QMK for the firmware and programed support for all my hackpad’s features!

The default keys are the 4 Arrow keys, Z, and the volume knob with push to mute.

I did not expect the firmware to be as difficult to program as it was! This has been a fun project, there is still much to work on as things come together in the real world but I’m proud of where I’ve gotten up to now!

Replying to @BigSaltyBeans

0
1
Open comments for this post

3h 1m 30s logged

Devlog 1!
Hello world!

To commence this project I began my reading the DIY guide and following along, eventually splitting off and designing a keypad with my own variations! Below is a detailed overview of my keypad:

My keypad consists of 5 keys and a rotary encoder. The rotary encoder contains a switch that when pressed can be interpreted as it’s own keypress. I was hoping to use the rotary as a volume knob and it’s switch as a mute/unmute button. I placed them to the side to leave space for the controller as can be seen in the PCB design.

The keypad also has 5 LED’s, all strung together through the data in/outs. For the last feature, this keypad contains a programmable OLED screen on the top that can be used to display anything your imagination wants!

Moving forward I have yet to program the firmware, and I will also have to clean up the schematic as it’s quite messy.

Devlog 1!
Hello world!

To commence this project I began my reading the DIY guide and following along, eventually splitting off and designing a keypad with my own variations! Below is a detailed overview of my keypad:

My keypad consists of 5 keys and a rotary encoder. The rotary encoder contains a switch that when pressed can be interpreted as it’s own keypress. I was hoping to use the rotary as a volume knob and it’s switch as a mute/unmute button. I placed them to the side to leave space for the controller as can be seen in the PCB design.

The keypad also has 5 LED’s, all strung together through the data in/outs. For the last feature, this keypad contains a programmable OLED screen on the top that can be used to display anything your imagination wants!

Moving forward I have yet to program the firmware, and I will also have to clean up the schematic as it’s quite messy.

Replying to @BigSaltyBeans

0
1
Open comments for this post

50m 14s logged

Devlog 3!

More features on the way!
After uploading v1 and creating a readme I put time into writing new methods that will further make this project easy to use!

On Flysky controllers, the switches are lettered a-d. Instead of having to find out what channel the switches are mapped to, I designed a method that lets you pass the switch’s letter and it returns the bool value without you having to deal with the channel #.

In terms of complexity I also added two new methods for more experienced programmers using this lib:

readChannelRaw: This method returns the raw data from a specified channel

readSwitchRaw: This method returns the raw uninverted state of a switch.

Next up is writing examples and making axis mode settings!

Devlog 3!

More features on the way!
After uploading v1 and creating a readme I put time into writing new methods that will further make this project easy to use!

On Flysky controllers, the switches are lettered a-d. Instead of having to find out what channel the switches are mapped to, I designed a method that lets you pass the switch’s letter and it returns the bool value without you having to deal with the channel #.

In terms of complexity I also added two new methods for more experienced programmers using this lib:

readChannelRaw: This method returns the raw data from a specified channel

readSwitchRaw: This method returns the raw uninverted state of a switch.

Next up is writing examples and making axis mode settings!

Replying to @BigSaltyBeans

0
1
Open comments for this post

33m 39s logged

Devlog 2!
Real world testing!

After having written the most basic functions, I’ve gone to my electronics cabinet and put my code to the test!

Using a proper FlySky i6 controller I tested my library with an Arduino Mega and was able to find and troubleshoot many issues in my library code and .ino example. Overall everything worked really well, so I am now looking towards implementing more complex methods and features to both make the lib easier to use and to tailor it to the interests of more advanced users.

Cheers!

Devlog 2!
Real world testing!

After having written the most basic functions, I’ve gone to my electronics cabinet and put my code to the test!

Using a proper FlySky i6 controller I tested my library with an Arduino Mega and was able to find and troubleshoot many issues in my library code and .ino example. Overall everything worked really well, so I am now looking towards implementing more complex methods and features to both make the lib easier to use and to tailor it to the interests of more advanced users.

Cheers!

Replying to @BigSaltyBeans

0
2
Open comments for this post

38m 16s logged

Devlog 1!

For a long time Flysky controllers have been used in personal avionics and robotics projects, interacting with many boards.
All this time there has only been one main library used to interpret the signals from these controller’s receivers: iBusBM. It’s a great library for what it’s made for, but it’s design requires the need for extra code to be written if you want to read specific channels or switches in a clean manner.

My goal with this library is to simplify the code integration of Flysky into two main easy-to-use methods:

readAxis();
readSwitch();

Each method does exactly as their name suggests!

As this project develops I plan on adding more specific methods for more advanced use cases such as getting raw inputs or setting axis modes, but next up is real world testing on different boards!

Cheers!

Devlog 1!

For a long time Flysky controllers have been used in personal avionics and robotics projects, interacting with many boards.
All this time there has only been one main library used to interpret the signals from these controller’s receivers: iBusBM. It’s a great library for what it’s made for, but it’s design requires the need for extra code to be written if you want to read specific channels or switches in a clean manner.

My goal with this library is to simplify the code integration of Flysky into two main easy-to-use methods:

readAxis();
readSwitch();

Each method does exactly as their name suggests!

As this project develops I plan on adding more specific methods for more advanced use cases such as getting raw inputs or setting axis modes, but next up is real world testing on different boards!

Cheers!

Replying to @BigSaltyBeans

0
2

Followers

Loading…