Saving parameter to EEPROM
I've discovered, that the value of the weighting feature is not saved to the EEPROM. I'Ve updated the Sketch.
All my changes in the sketch are surrounded with a conditional statement:#ifdef DL2SBA...#endif
and should be discovered easily.
If you look at the code, it seams to be well structured - but why the hell is all the code in a single file with over 6,000 lines of code? The Arduino IDE supports code in multiple source files very well.
In addition, there are many places in the code where conversions and calculations are done with the data type FLOAT. The 8-bit ATMEL are not really processors for crunching numerical datat.
In my opinion, most of the calculation can be easily done using long-math instead of using the space consuming FLOAT maths. This would also help to reduce the core size of the code, so that some more features like Keyboard and WINKEY can be compiled into one sketch.
Additionaly in some places, more or less constant values are permanently recalculated:loop_element_lengths((2.0-(float(weighting)/50)),(-1.0*keying_compensation),character_wpm,sending_type);
A better way is to calculate these values only once when they are changed. This would also reduce the jitter on the sent morse code.
These changes, together with a little restructering, would provide a better maintainable code base.