So at this point I’ve gotten annoyed with the other temperature sensor and decided I might as well move ahead with the functional part of the roaster. This means the first thing I needed to do is draw a main menu for options.
As you can see this lists Manual and Auto Roast. My plan is to make it where the first option simply gives you a few readings and then lets you “drive” by sliding the controls around. I would make it log the information of what you set things to and what you got back from the system and perhaps let you “store” the settings to play them again as a profile. That is where the next phase comes in, the Auto Roast.
I expect Auto Roast to be a portion of the system that would let you choose to either A) load a previous profile, or B) let the roaster pretty much run itself using a basic model of “drying” at a lower temperature for the first few minutes at a high fan speed and then begin to lower the fan speed and raise the temperature responding based on the time into the roast vs the temperature. Expectations of driving first crack and the end of the roast based on a desired result would vary how it would work. I’d anticipate some sort of yes/no 1/2/3/4 etc sort of question and answer series immediately before the roast activates. While it would be mostly automatic you can step in at any time and seize control of a particular setting.
At this time the roasting system only monitors. I have yet to work on actually connecting it directly to any of the controls on the roaster. This will come later when there are more and better controls implemented. Currently it simply shows bean temperature in Fahrenheit. I will add the option to switch the temperatures on the Settings option from the main menu. It also has a slighly inaccurate timer. It seems to gain a second or two over the system clock in the corner every 40-60 seconds. I need to work on the prioritization of the interrupts in the system and implement a series of if/else and/or case statements where I can service temperature, screen updates, and time tracking and use all of those checks as part of the delays required reading various sensors etc. For example if it takes 100ns to service one sensor telling it to read a temperature or something but I need to wait 100ns to do another function then I can initiate the read request, perform the other function, and then return at the end to pickup the temperature result. Some functions are more critical so they will take priority over other functions. Those functions will take place on a tighter schedule while the other functions will “squeeze in” anywhere they can and take place based on a “true/false” tracking of whether they’ve run recently. Once everything has run then everything will reset and things will start looping again.
The roast control system also has a series of buttons down the bottom for returning to the main menu, adding or removing time from the timer, as well as buttons for heat and fan control. I expect to put more sensor readings as time goes on to display on the empty space. I’m hoping to get the fan and heat controls to pop up over top of the roasting screen, allow adjustments, and then drop back to the bottom “tray”.