The big LCD code update. This splits the display and menu implementation. Paving the way for future different displays. It also makes it easier to modify the menu structures while keeping everything consistant. Note that this most likely breaks the translations, which need to be updated.
First cleanup. Moved all code to cpp files, so there are no dependencies on pde files. And no more odd requirement to cat files together. (Still need to fix the Makefile). Also cleaned up some defines and made defines upper case as by C coding conventions.
The joris' char drawins are expressed in binary so to show their content's in a more visual fashion.
This is not a code modification as much as a readibility modification.
new method for message for making KILLED message visible
The cli(); at the start of the kill() function also stops the internal
arduino timer which stops updating of millis() which prevents the
display of the "KILLED." message.
The new function updates the display directly without checking any
timers.
Added Menu Options to the Main-> Control->Temperature Submenu that allow the user to set new values for the ABS and PLA preheat function. EEPROM updated so that these settings can also be committed to EEPROM memory.
The pre-heat ABS and PLA options in the LCD Menu were broken a while back. The pre-heat worked fine, but the cooling fans were not switching on as intended. This is now fixed.
Since the class "MainMenu" was used within a static variable the
initialization of the object (constructor call) was done before Arduino
library startup. It always caused a crash when using AVRStudio with
JTAG debugger (caused from calling the LCD initialization / the lot of
I/O work / the stack used during this calls). By moving the LCD_INIT
out of the constructor and using an explicit call inside of Arduino
setup() implementation immediately fixed all problems and the JTAG
debugger runs fine.
reinitialize the lcd, if the SD card is inserted or removed. It seems that LCDs can confused by electrical discharges from time to time.
Since a removal or insert of the sd card takes a long time in firmware, just reinitializing the lcd does not hurt.
actually, it solves a problem with the UltiControlle
This is in my opinion a much better way of dealing with SD cards than my previous fix.
Instead of adding a momentary switch to fake the insertion of the card I have modified the ultralcd menu item:
Card Menu -> Refresh
to reinitialise the card providing that the SDCARDDETECT pin has been set to -1 in the pins.h file. This requires one less switch on the front panel and the refresh menu item is in the most relevent place for a user who wishes to inert a card and then print from it.
It also means that the "Card inserted" messages do not bother the users of these card readers (they dont make sense for users without SCCARDDETECT)
I find that the PID routine works better when the cooling fan is switched on
at the beginning of a warm up routine. Otherwise when you enable the fan
just before a print, you have a delay as the PIDre-adjusts.
This should also be safer as most cooling fans are directed at the hot -ends
thermal barrier!
Instead of a single pre-heat, now there is pre-heat ABS and PLA options
Added defines to the configuration file to adjust preheat temperatures for both