Browse Source

pushpull sensor logik

tags/FSM2.0
Simon Schmidt 3 years ago
parent
commit
dcae074b55
2 changed files with 7 additions and 33 deletions
  1. 6
    32
      lib/treppe/treppe.cpp
  2. 1
    1
      lib/treppe/treppe.h

+ 6
- 32
lib/treppe/treppe.cpp View File

} }


void Treppe::task(){ void Treppe::task(){
//Serial.printf("LDR: %f\n", ((float)analogRead(A0))/1023.*3.68);

if(finish){ if(finish){
direction = switch_direction; direction = switch_direction;
state = switch_state; state = switch_state;
fsm_outputs = FSMTreppe_Obj.getExternalOutputs(); fsm_outputs = FSMTreppe_Obj.getExternalOutputs();
print_state_on_change(); print_state_on_change();


if(current_sensor_state[0] && !last_sensor_state[0] && state == 0){
setTick(0);
setAnAus(1);
setDirection(1);
setState(1);
}

if(current_sensor_state[1] && !last_sensor_state[1] && state == 0){
setTick(0);
setAnAus(0);
setDirection(0);
setState(1);
}

// first switch - off approach, use timer later
if(!current_sensor_state[0] && last_sensor_state[0] && state == 1){
setTick(ticks_treppe);
setAnAus(1);
setDirection(1);
setState(0);
}

if(!current_sensor_state[1] && last_sensor_state[1] && state == 1){
setTick(ticks_treppe);
setAnAus(1);
setDirection(0);
setState(0);
}

last_sensor_state[0] = current_sensor_state[0];
last_sensor_state[1] = current_sensor_state[1];
// setTick(ticks_treppe);
// setAnAus(1);
// setDirection(0);
// setState(0);
ledsequence(); ledsequence();
//Serial.printf("LDR: %f\n", ((float)analogRead(A0))/1023.*3.68);
} }





+ 1
- 1
lib/treppe/treppe.h View File

void ledsequence(); void ledsequence();
void rampe(); void rampe();
bool read_sensor(int sensor) { bool read_sensor(int sensor) {
int pegel = !digitalRead(sensor);
int pegel = digitalRead(sensor);
return static_cast<bool>(pegel); return static_cast<bool>(pegel);
} }
public: public:

Loading…
Cancel
Save