add arduino sketch and update readme
This commit is contained in:
83
PumpStateMachine.ino
Normal file
83
PumpStateMachine.ino
Normal file
@@ -0,0 +1,83 @@
|
||||
#include <StateMachine.h>
|
||||
|
||||
const int lowTriggerPin = 2;
|
||||
const int highTriggerPin = 3;
|
||||
const int ledPin = 13; // the number of the LED pin
|
||||
const int relay = 7;
|
||||
|
||||
StateMachine machine = StateMachine();
|
||||
|
||||
State* S0 = machine.addState(&state0); // Waiting for trigger
|
||||
State* S1 = machine.addState(&state1); // Pump
|
||||
State* S2 = machine.addState(&state2); // Stop Pump
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
// initialize the LED pin as an output:
|
||||
pinMode(ledPin, OUTPUT);
|
||||
// initialize the waterlevel sensors pin as an input:
|
||||
pinMode(lowTriggerPin, INPUT);
|
||||
pinMode(highTriggerPin, INPUT);
|
||||
// initialize the relay pin:
|
||||
pinMode(relay, OUTPUT);
|
||||
|
||||
S0->addTransition(&transitionS0S1,S1); // S0 transition to S1
|
||||
S1->addTransition(&transitionS1S2,S2); // S1 transition to S2
|
||||
S2->addTransition(&transitionS2S0,S0); // S2 transition to S0
|
||||
S2->addTransition(&transitionS2S1,S1); // S2 transition to S1
|
||||
}
|
||||
|
||||
void loop() {
|
||||
machine.run();
|
||||
}
|
||||
|
||||
void state0(){
|
||||
Serial.println("State 0");
|
||||
Serial.println("waiting for trigger");
|
||||
}
|
||||
|
||||
bool transitionS0S1(){
|
||||
if(digitalRead(lowTriggerPin) == HIGH && digitalRead(highTriggerPin) == HIGH){
|
||||
return true;
|
||||
}
|
||||
// Should never happen...
|
||||
if(digitalRead(lowTriggerPin) == LOW && digitalRead(highTriggerPin) == HIGH){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void state1(){
|
||||
Serial.println("State 1");
|
||||
Serial.println("Start pumping...");
|
||||
digitalWrite(ledPin, HIGH);
|
||||
digitalWrite(relay, HIGH);
|
||||
}
|
||||
|
||||
bool transitionS1S2(){
|
||||
if(digitalRead(lowTriggerPin) == LOW && digitalRead(highTriggerPin) == LOW){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void state2(){
|
||||
Serial.println("State 1");
|
||||
Serial.println("Stop pumping...");
|
||||
digitalWrite(ledPin, LOW);
|
||||
digitalWrite(relay, LOW);
|
||||
}
|
||||
|
||||
bool transitionS2S0(){
|
||||
if(digitalRead(lowTriggerPin) == LOW && digitalRead(highTriggerPin) == LOW){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool transitionS2S1(){
|
||||
if(digitalRead(lowTriggerPin) == HIGH && digitalRead(highTriggerPin) == LOW){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user