Firmware for HexBoard MIDI controller
-rw-r--r--Makefile10
-rw-r--r--README.md27
-rw-r--r--Rotary.patch21
-rw-r--r--build/.gitkeep0
4 files changed, 53 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index 110b398..40d6f3c 100644
--- a/Makefile
+++ b/Makefile
@@ -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."
diff --git a/README.md b/README.md
index 3963062..4cb7b6a 100644
--- a/README.md
+++ b/README.md
@@ -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