Need some help getting my idea up off the ground - Temperature controlled vape

Hey guys, I have had an Arduino, specifically the Garagelabs version (garaguino), for a few months now. I have played around a little bit with some LEDs and PWM to get an RGB LED to fade between colors. However, I wanted to do something a bit more complex. I decided I wanted to make myself a new vaporizer, but I wanted to include a temperature set. My vision is to have a 3 digit 7-seg display with 3 button inputs. One button would be like a mode-select navigation button, and the other two would be up/down select buttons. With this in mind, I came up with a finite state machine system as follows:

Modes - Digit select
Digit set
Fire
Sleep

The machine starts in Digit select.

Digit select:
The current values set in each digit are displayed and the decimal point to the right of the selected
digit is lit up

If up/down button is pushed the decimal will move left/right respectively to signify the new
selected digit

If the select button is tapped the machine goes to the digit set mode to set the currently selected
digit

If the select button is held for a short duration the machine goes to the fire mode

If the select button is held for a long duration the machine goes into sleep mode

Digit set:
All of the set values are displayed and the decimal point is lit up for the currently selected digit

If up/down button is pushed the value of the selected digit with increase/decrease respectively

If the select button is tapped the machine goes back to the digit select mode to select a different
digit

If the select button is held for a short duration the machine goes to the fire mode

If the select button is held for a long duration the machine goes into sleep mode

Fire:
Brings the heating element up to temp

If the select button is held it will go back the digit select mode for a temperature set change

Sleep:
Puts the device in a sleep mode

If any button is held for a short duration the device wakes up in digit select mode

Currently I am just trying to drive the 7-segment display correctly and get it to respond to the button presses correctly. Unfortunately my sketch will not compile due to the following errors:

vaporizer.ino:29:9: error: no matching function for call to 'State::State()'
vaporizer.ino:29:9: note: candidates are:
In file included from vaporizer.ino:2:0:
C:\Users\Toffer\Documents\Arduino\libraries\FSM/FiniteStateMachine.h:45:3: note: State::State(void (*)(), void (*)(), void (*)())
   State( void (*enterFunction)(), void (*updateFunction)(), void (*exitFunction)() );
   ^
C:\Users\Toffer\Documents\Arduino\libraries\FSM/FiniteStateMachine.h:45:3: note:   candidate expects 3 arguments, 0 provided
C:\Users\Toffer\Documents\Arduino\libraries\FSM/FiniteStateMachine.h:44:3: note: State::State(void (*)())
   State( void (*updateFunction)() );
   ^
C:\Users\Toffer\Documents\Arduino\libraries\FSM/FiniteStateMachine.h:44:3: note:   candidate expects 1 argument, 0 provided
C:\Users\Toffer\Documents\Arduino\libraries\FSM/FiniteStateMachine.h:42:7: note: State::State(const State&)
 class State {
       ^
C:\Users\Toffer\Documents\Arduino\libraries\FSM/FiniteStateMachine.h:42:7: note:   candidate expects 1 argument, 0 provided
vaporizer.ino: In function 'void sel_pressed_fnctn()':
vaporizer.ino:188:19: error: no match for 'operator==' (operand types are 'State' and 'State')
vaporizer.ino:189:21: error: no match for 'operator==' (operand types are 'State' and 'State')
vaporizer.ino:189:37: error: expected ';' before '{' token
Error compiling.

My current sketch is attached.

I have not put much thought past actually setting the temperature other than I plan on using the PID library to regulate the temperature via a transistor using PWM.

My immediate question is what exactly am I doing wrong in the code I currently have? I looked at the example that came with the FSM (finite state machine) library, but I fail to see what exactly I did differently to make it not work.

My “long term question” is for advice/comments about implementing the PID controller alongside the state machine. A few challenges/issues I can foresee are that after getting to temperature the heating element is going to be exposed to moving air, which would cool it down significantly due to its small mass (coil of kanthal). Can a PID handle this kind of dynamic environment to hold a temperature? Also, would it work/be safe if I had 2 pairs of batteries in parallel that I somehow switched between series and parallel during operation? It would start out in series to get a higher voltage to bring the coil up to temp quicker, then switch to parallel in order to get a better battery life. I’m not exactly sure how this would work, but from previous experience I know the coils can take a while to heat up, and with an initial higher voltage (double to be exact) it would heat up faster. After the switch I would have to double to duty cycle to get the same output voltage and have to make sure the PID has slowed to at most a 50% duty cycle before switching. Another idea to help the ramp up time I had was to somehow charge a super-capacitor and discharge it when initially bringing the coil up to temp, however I have not actually experimented with this yet.

Thoughts, questions, and comments so far? I plan on making everything available an open source after I get everything functioning and will give updates.

Thanks in advance

vaporizer.ino (7.86 KB)

bump