fork of reebn's uBitx v6 firmware
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Michael Clemens 6dceffd993 reactivated 80m, changed to color scheme to green on black 5 months ago
PDQ_MinLib Add icons for numpad and star 1 year ago
toneAC2 Remove secondary pin from library 1 year ago
README.md Add user manual link to readme 6 months ago
bands.cpp reactivated 80m, changed to color scheme to green on black 5 months ago
bands.h Add some band utility functions for later use 2 years ago
button.cpp Save ~100 bytes by combining these two functions 1 year ago
button.h Save ~100 bytes by combining these two functions 1 year ago
button_press_e.h Move button pressing logic to it's own file 1 year ago
button_timing.h Add classes for button timing variables and point 2 years ago
callsign.cpp Update callsign.cpp 5 months ago
callsign.h Re-add version to main display, add callsign display, and re-enable TX indicator 1 year ago
color_theme.h reactivated 80m, changed to color scheme to green on black 5 months ago
colors.h Switch colors from defines to consts 1 year ago
encoder.cpp Save 12 bytes by adjusting math, inspried by Jack Purdum 10 months ago
encoder.h First pass at a momentum function 2 years ago
glcdfont.c PDQ driver is working, but renders a little funny 2 years ago
keyer.cpp Adjust keyer behavior to always run PTT button as if in KEYER_STRAIGHT mode 10 months ago
menu.cpp Add an enterSubmenu routine to centralize that behavior 2 years ago
menu.h Move button pressing logic to it's own file 1 year ago
menu_main.cpp Slight tweak to how frequencies are changed so that quicklist changes will update the actual oscillators 1 year ago
menu_main.h Make function inputs const, and fix some compiler errors 2 years ago
menu_main_buttons.cpp Re-enable numpad, now that we have some more space 1 year ago
menu_main_buttons.h Change decision making in main menu loop to ensure display consistency when CAT changes 1 year ago
menu_np_ql_shared.cpp Reuse menu running code between quicklist and numpad 1 year ago
menu_np_ql_shared.h Reuse menu running code between quicklist and numpad 1 year ago
menu_numpad.cpp Reuse menu running code between quicklist and numpad 1 year ago
menu_numpad.h Start building out numpad menu 2 years ago
menu_numpad_buttons.cpp Reuse menu running code between quicklist and numpad 1 year ago
menu_numpad_buttons.h Reuse menu running code between quicklist and numpad 1 year ago
menu_quicklist.cpp Reuse menu running code between quicklist and numpad 1 year ago
menu_quicklist.h Create quicklist menu 1 year ago
menu_quicklist_buttons.cpp Revert the previous commit 1 year ago
menu_quicklist_buttons.h Create quicklist menu 1 year ago
menu_utils.cpp Revert "Rough pass at button grids" 1 year ago
menu_utils.h Revert "Rough pass at button grids" 1 year ago
morse.cpp Replace calls to the default Arduino Tone library to toneAC2, saving over 1024 bytes 1 year ago
morse.h morseText should take a const char* 2 years ago
nano_font.cpp Switch back to nicer font 1 year ago
nano_font.h Save ~4% progmem by using a slightly smaller font 2 years ago
nano_gui.cpp Add touch cancellation option 1 year ago
nano_gui.h Get rid of do-nothing functions 1 year ago
pin_definitions.h Remove function declarations from pin definition file 1 year ago
point.h Add classes for button timing variables and point 2 years ago
push_button.cpp Move button pressing logic to it's own file 1 year ago
push_button.h Move button pressing logic to it's own file 1 year ago
scratch_space.h Add dedicated scratch-space header so that we can track where these are still used 2 years ago
settings.cpp Add size to comment 10 months ago
settings.h Add quick list to EEPROM settings 1 year ago
setup.cpp Force redraw after setupTouch is called so that menu is on screen 1 year ago
setup.h Create a root menu for setup 2 years ago
si5351.cpp Give min/max frequency variable names 1 year ago
si5351.h Give min/max frequency variable names 1 year ago
toneAC2Proxy.cpp Proxy the tone library so that it builds 1 year ago
touch.cpp Fix zraw assignment issue that was preventing touch press-and-hold from working 1 year ago
touch.h Move touch functions to their own files 2 years ago
tuner.cpp Get rid of do-nothing functions 1 year ago
tuner.h Move SI5351 driver stuff into it's own header 1 year ago
ubitx_cat.cpp Get rid of do-nothing functions 1 year ago
ubitxv6.ino Move SI5351 driver stuff into it's own header 1 year ago
ui_touch.cpp Move touch functions to their own files 2 years ago
ui_touch.h Move touch functions to their own files 2 years ago
utils.cpp Fix compile errors 2 years ago
utils.h Define types for formatFreq 2 years ago
version.cpp Update displayed version 1 year ago
version.h Forgot to add version files to the project. Silly me. 2 years ago

README.md

uBiTXv6

This project is found at https://github.com/reedbn/ubitxv6/

It was forked from https://github.com/afarhan/ubitxv6/

The purpose of this project is to clean up (modularize) the source code, and add features that were not present in Ashhar's original version of the project, without requiring any hardware modifications to a stock uBiTXv6.

New features include:

  • Much faster screen refresh (vs Ashhar's 6.3.1 aka 6.0 release)
  • Morse code readback for sightless operation
  • Save/recall your favorite frequencies
  • When adjusting settings, the existing/current setting is shown as reference
  • Cancel touch recalibration

User Manual: https://docs.google.com/document/d/1jlllZbvFMCzO1MJLzlJDGb10HXSehlFNMDPsxGJZtvY/edit?usp=drivesdk

Installing on Your Radio

There are plenty of tutorials on how to upload sketches to Arduino Nanos. Just search for them. Addtionally, Ashhar created a video explaining the process specifically for uBiTX v6: https://www.youtube.com/watch?v=3n_V3prSJ_E

I developed this code using the Arduino IDE 1.8.9 toolchain, with -Wall and -Wextra compiler options turned on. Arduino IDE 1.8.13 was reported to compile too big (see https://groups.io/g/BITX20/topic/75008576), but this should be resolved in this project's tag R1.5.1.

Personalized Callsign

To edit the callsign displayed, open the file callsign.cpp and change the string. Then re-compile and upload.

Future Features/Modifications

There are some features that would be good to add, but I just didn't get around to.

  • Setting to choose the tuning step size
  • Setting to choose whether or not the knob tuning should accelerate (current behavior) or have a fixed interval
  • Provide an option in each menu screen to load the default option for each setting

While the current code (as of 2020-05-05) is ~100 bytes shy of the full 30720 available on the nano, there's still opportunity to add new features by "creating" room. Below is a list of places you might create room:

I added lots of bounds checking, especially on string writes, that, if removed, could free a good number of bytes. While keeping them is best practice, for a non-IoT, non-critical piece of hardware, it shouldn't be a huge issue.

I added the RACK to the CAT to better emulate the FT-817 (I hope, at least!). Removing the RACK's and just leaving the default ACK's will also free up bytes.

I added a bunch of strings to the menuing with the intention of helping people understand their functions, but technically they're not necessary, and could all be removed.

I switched to a smaller footprint font than Ashhar's original code, but there are MUCH smaller fonts out there. Changing to a lower resolution, scaled up font can save hundreds or thousands of bytes, but won't look as pretty. Also, the star, gear, and numpad icons will need to be either added to the new font, or replaced with characters.

The first change I made to this fork was to replace Ashhar's original (incredibly slow) screen drawing routines with PDQ. Since that change, Ashhar has updated his drawing routine to be MUCH faster than his original, but still slightly slower than PDQ. It may be that Ashhar's new routines are smaller that PDQ, but I don't actually know that for certain.

There are a good number of instances of back-to-back calls of strncpy_P and displayText. Creating a single function that performs these operations together, and then calling that new function instead of the back-to-back calls everywhere may save space.

License

The majority of this code is released under GPL v3 license, per Ashhar's original code.

The files in the PDQ_MinLib subdirectory were copied from https://github.com/XarkLabs/PDQ_GFX_Libs, and have Adafruit's BSD License.

The files in the toneAC2 were copied from https://bitbucket.org/teckel12/arduino-toneac2/wiki/Home, and are GPL v3 licensed.