This commit is contained in:
Simon Schmidt 2021-07-07 16:10:14 +02:00
parent b4513dc418
commit 81c79b5e64
3 changed files with 24 additions and 20 deletions
lib/treppe

@ -19,7 +19,8 @@
#ifndef RTW_HEADER_FSMTreppe_h_
#define RTW_HEADER_FSMTreppe_h_
#include <cstdint>
#include <stdint.h>
#include <Arduino.h>
// Class declaration for model FSMTreppe
class FSMTreppeModelClass {
@ -34,17 +35,17 @@ class FSMTreppeModelClass {
// External inputs (root inport signals with default storage)
struct ExtU_FSMTreppe_T {
uint32_t sensor_unten; // '<Root>/sensor_unten'
uint32_t sensor_oben; // '<Root>/sensor_oben'
uint32_t anim_beendet; // '<Root>/anim_beendet'
uint32_t ldr_schwelle; // '<Root>/ldr_schwelle'
int sensor_unten; // '<Root>/sensor_unten'
int sensor_oben; // '<Root>/sensor_oben'
int anim_beendet; // '<Root>/anim_beendet'
int ldr_schwelle; // '<Root>/ldr_schwelle'
};
// External outputs (root outports fed by signals with default storage)
struct ExtY_FSMTreppe_T {
uint32_t laufrichtung; // '<Root>/laufrichtung'
uint32_t status; // '<Root>/status'
uint32_t dimmrichtung; // '<Root>/dimmrichtung'
int laufrichtung; // '<Root>/laufrichtung'
int status; // '<Root>/status'
int dimmrichtung; // '<Root>/dimmrichtung'
};
// model initialize function

@ -115,7 +115,7 @@ void Treppe::print_state_on_change()
last_out.laufrichtung = fsm_outputs.laufrichtung;
last_out.status = fsm_outputs.status;
Serial.printf("FSM IN: s_u: %d, s_o: %d ldr_sw: %d, beendet: %d =>",
Serial.printf("FSM IN: s_u: %d, s_o: %d ldr_sw: %d, beendet: %d => ",
fsm_inputs.sensor_oben, fsm_inputs.sensor_unten, fsm_inputs.ldr_schwelle, fsm_inputs.anim_beendet);
Serial.printf("OUT: LR: %d DR: %d ST: %d\n",
fsm_outputs.laufrichtung, fsm_outputs.dimmrichtung, fsm_outputs.status);
@ -221,29 +221,30 @@ bool Treppe::check_ldr()
void Treppe::task()
{
uint32_t m=micros();
fsm_inputs.ldr_schwelle = check_ldr();
Serial.print("1:");
Serial.println(micros()-m);
// fsm_inputs.ldr_schwelle = check_ldr();
fsm_inputs.ldr_schwelle = 1;
// Serial.print("1:");
// Serial.println(micros()-m);
m=micros();
fsm_inputs.sensor_oben = read_sensor(SENSOR_OBEN);
fsm_inputs.sensor_unten = read_sensor(SENSOR_UNTEN);
fsm_inputs.anim_beendet = anim_beendet;
fsm_inputs.anim_beendet = 1;
// Serial.print("2:");
// Serial.println(micros()-m);
m=micros();
FSMTreppe_Obj.setExternalInputs(&fsm_inputs);
FSMTreppe_Obj->setExternalInputs(&fsm_inputs);
// Serial.print("3:");
// Serial.println(micros()-m);
m=micros();
FSMTreppe_Obj.step();
FSMTreppe_Obj->step();
// Serial.print("4:");
// Serial.println(micros()-m);
m=micros();
fsm_outputs = FSMTreppe_Obj.getExternalOutputs();
fsm_outputs = FSMTreppe_Obj->getExternalOutputs();
// Serial.print("5:");
// Serial.println(micros()-m);

@ -1,7 +1,7 @@
#ifndef __TREPPE_H
#define __TREPPE_H
#include "FSMTreppe3/FSMTreppe3.h"
#include "FSMTreppe2/FSMTreppe2.h"
#include "PCA9685.h"
// #define LDRDEBUG // comment in to override LDR measurement
@ -53,7 +53,7 @@ private:
// initialize with i2c-Address 0, use Wire Library
PCA9685 pwmController;
FSMTreppeModelClass FSMTreppe_Obj;
FSMTreppeModelClass* FSMTreppe_Obj;
FSMTreppeModelClass::ExtU_FSMTreppe_T fsm_inputs;
FSMTreppeModelClass::ExtY_FSMTreppe_T fsm_outputs;
enum fsm_status_t {
@ -91,11 +91,13 @@ private:
bool check_ldr();
public:
Treppe(uint8_t _stufen) : stufen(_stufen){
FSMTreppe_Obj.initialize();
FSMTreppe_Obj = new FSMTreppeModelClass;
FSMTreppe_Obj->initialize();
berechne_dimmer();
}
~Treppe() {
FSMTreppe_Obj.terminate();
FSMTreppe_Obj->terminate();
delete FSMTreppe_Obj;
}
void setup();