Firmware for HexBoard MIDI controller
| -rw-r--r-- | Makefile | 10 | ||||
| -rw-r--r-- | README.md | 27 | ||||
| -rw-r--r-- | Rotary.patch | 21 | ||||
| -rw-r--r-- | build/.gitkeep | 0 |
4 files changed, 53 insertions, 5 deletions
@@ -1,8 +1,10 @@ # Copied fqbn from build.options.json -build/HexBoard_V1.1.ino.uf2: HexBoard_V1.1.ino - arduino-cli compile -b rp2040:rp2040:generic:flash=16777216_0,freq=133,opt=Small,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=tinyusb,ipstack=ipv4only,boot2=boot2_generic_03h_2_padded_checksum --output-dir build +build/build.ino.uf2: build/build.ino + arduino-cli compile -b rp2040:rp2040:generic:flash=16777216_0,freq=133,opt=Small,rtti=Disabled,stackprotect=Disabled,exceptions=Disabled,dbgport=Disabled,dbglvl=None,usbstack=tinyusb,boot2=boot2_generic_03h_2_padded_checksum --output-dir build build +build/build.ino: HexBoard_V1.1.ino + cp HexBoard_V1.1.ino build/build.ino -install: build/HexBoard_V1.1.ino.uf2 +install: build/build.ino.uf2 echo "Trying to copy into mounted device" - cp build/HexBoard_V1.1.ino.uf2 /run/media/zach/RPI-RP2/ + cp build/build.ino.uf2 /run/media/zach/RPI-RP2/ echo "Installed." @@ -26,7 +26,32 @@ we'll assume you're already proficient at installing software on your computer a #### Using [arduino-cli](https://arduino.github.io/arduino-cli/latest/) -(Instructions to come) +(You also need to have `python3` installed on your system) + +```sh +# Download the board index +arduino-cli --additional-urls=https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json core update-index +# Install the core for rp2040 +arduino-cli --additional-urls=https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json core download rp2040:rp2040 +arduino-cli --additional-urls=https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json core install rp2040:rp2040 +# Install libraries +arduino-cli lib install "MIDI library" +arduino-cli lib install "Adafruit NeoPixel" +arduino-cli lib install "U8g2" # dependency for GEM +arduino-cli lib install "Adafruit GFX Library" # dependency for GEM +arduino-cli lib install "GEM" +sed -i 's@#include "config/enable-glcd.h"@//\0@g' ../libraries/GEM/src/config.h # remove dependency from GEM +# Correct Rotary Library +git clone https://github.com/buxtronix/arduino buxduino +cd buxduino +git apply ../Rotary.patch +cd .. +mv buxduino/libraries/Rotary ../libraries/ +rm -rf buxduino +# Run Make to build the firmware +make +``` +Your firmware file will be the uf2 file inside the build directory. ### Flashing the firmware diff --git a/Rotary.patch b/Rotary.patch new file mode 100644 index 0000000..8cb27b4 --- /dev/null +++ b/Rotary.patch @@ -0,0 +1,21 @@ +diff --git a/libraries/Rotary/Rotary.cpp b/libraries/Rotary/Rotary.cpp +index 298925d..9d3a02a 100644 +--- a/libraries/Rotary/Rotary.cpp ++++ b/libraries/Rotary/Rotary.cpp +@@ -127,13 +127,9 @@ Rotary::Rotary(char _pin1, char _pin2) { + // Assign variables. + pin1 = _pin1; + pin2 = _pin2; +- // Set pins to input. +- pinMode(pin1, INPUT); +- pinMode(pin2, INPUT); +-#ifdef ENABLE_PULLUPS +- digitalWrite(pin1, HIGH); +- digitalWrite(pin2, HIGH); +-#endif ++ // Set pins to input pullup. ++ pinMode(pin1, INPUT_PULLUP); ++ pinMode(pin2, INPUT_PULLUP); + // Initialise state. + state = R_START; + } diff --git a/build/.gitkeep b/build/.gitkeep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/build/.gitkeep |