All:
Bo made the statement: Never did find the compiled hex files but going from source worked fine for my 20x4 display.
It's fairly easy to find where they are placed, along with some other compile-time information.
First, go to your Preferences dialog (File --> Preferences) and check the compilation check box for the "Show verbose output during:"
Second, compile your program. Do not click the compile/upload icon, only the check mark for compile only. You will see a lot of stuff scroll by just below the IDE's Source Code Window.
Third, look towards the end of that list of output for YourProgramName.hex. For example, on my test program is was:
????? C:\Users\econjack\AppData\Local\Temp\arduino_build_160543/TestProgram.ino.hex
Fourth, go to the directory (yellow above) and look at the output files. You will see file types:
????? elf -- executable-linkable file, used for a debugger
????? hex -- the flash output file
????? eep -- th eEEPROM outout file
????? sym -- symbol table information
????? lst -- assembler output
The lst file is very interesting to look at, as it shows the C code mixed in with its associated assembler output. (You can load the file into any text editor.) For example, which is more efficient: a cascading series of if statements or a switch/case? Write a short test program using both constructs and then look at the assembler output. You find that the switch/case produces a jump table, which is very efficient in terms of speed, but may be less efficient in terms of memory. Even if you don't know assembler, you'll get a feel for the answer. Use whichever fits the situation.
If you want to directly load a hex file into an Arduino, you could use an AVR programmer, or XLoader (http://www.hobbytronics.co.uk/arduino-xloader).
Jack, W8TEE
?