I need help writing the code for an Arduino. We are trying to automate a cookie making process and would like to get part of it to work. A bowl will start at its home position on a conveyor and will move to position 2, which is located directly in front of a proximity sensor. Once the bowl stops at position 2 this will then actuate an auger motor that will dispense brown sugar in the bowl. The bowl must remain at position 2 for 24.8 seconds (the time it takes to dispense all the brown sugar into the bowl).
I need help writing the code for an Arduino. We are trying to automate a cookie making process and would like to get part of it to work. A bowl will start at its home position on a conveyor and will move to position 2, which is located directly in front of a proximity sensor. Once the bowl stops at position 2 this will then actuate an auger motor that will dispense brown sugar in the bowl. The bowl must remain at position 2 for 24.8 seconds (the time it takes to dispense all the brown sugar into the bowl).
The essential first step is to pick a proximity sensor and verify that it works in the intended environment.
Come back when that is done, with much better project specifications. Those will include full details of the chosen sensor, and how the belt is powered and controlled.
1 - moving the bowl into sensor range. lets call this 'get_bowl'
2 - pause while the bowl fills. let's call this 'fill_bowl'.
3 - moving the bowl out of sensor range. Let's call this 'bowl_done
The transition from one state into another is caused by an external event. When the transition happens, the arduino needs to do something.
In state 1, a transition to state t happens when the sensor detects the bowl. The sketch needs to stop the conveyor, start pouring, and make a note of the current time
In state 2, the transition to state 3 happens when the time runs out. The sketch needs to stop pouring and start the conveyor
In state 3, the transition back to state 1 happens when the bowl moves out of sensor range. The sketch doesn't need to do anything but go back to state 1.
I like using enums and switch cases for this sort of thing:
enum State {
GET_BOWL, FULL_BOWL, BOWL_DONE
} state = GET_BOWL;
uint32_t fillTimer;
void loop() {
switch(state) {
case GET_BOWL:
if(the sensor has detected the bowl) {
turn conveyor off;
turn filler on;
fillTimer = millis();
state = FILL_BOWL;
}
break;
case FILL_BOWL:
if(we have been filling for 24.8 seconds) {
turn filler off;
turn conveyor on;
state = BOWL_DONE;
}
break;
case BOWL_DONE:
if(the bowl is no longer being detected) {
state = GET_BOWL;
}
break;
}
}