Merge commit '34cb4879' into weiter-mit-PWM

Doch weiter mit PWM versuchen.
This commit is contained in:
Toberfra 2022-02-10 16:34:22 +01:00
commit 0757d036d5
8 changed files with 74 additions and 70 deletions

View File

@ -7,78 +7,94 @@ KlappenAblauf::~KlappenAblauf()
}
statusKlappen KlappenAblauf::setOpen(bool open)
void KlappenAblauf::setOpen(bool open)
{
if(aktuellerState == WARTE){
if(open)
aktuellerState = START_AUF;
else
aktuellerState = START_ZU;
return OK;
}
openSpeicher = open;
return ERROR_BUSY;
}
statusKlappen KlappenAblauf::setOpen(bool open , int id)
void KlappenAblauf::setOpen(bool open , int id)
{
KlappenAblauf *zeiger;
zeiger = (KlappenAblauf *) searchIdElement(id);
if(zeiger)
return zeiger->setOpen(open);
return ERROR_ID;
}
void KlappenAblauf::memberSetup(){
AnalogDigital::memberSetup();
openSpeicher = false;
fsmInit();
}
void KlappenAblauf::memberLoop(){
AnalogDigital::memberLoop();
openSpeicherAbfrage();
fsmStep();
}
void KlappenAblauf::fsmInit(){
aktuellerState = INIT;
}
void KlappenAblauf::openSpeicherAbfrage(){
if(openSpeicher){
if(aktuellerState == WARTE_GESCHLOSSEN){
aktuellerState = START_AUF;
}
}else{
if(aktuellerState == WARTE_OFFEN){
aktuellerState = START_ZU;
}
}
}
void KlappenAblauf::fsmStep(){
switch (aktuellerState)
{
case INIT:
aktuellerState = WARTE;
aktuellerState = START_ZU;
break;
case WARTE:
case WARTE_OFFEN:
case WARTE_GESCHLOSSEN:
break;
case START_AUF:
setMotorAktion(1);
timer = 5000;
aktuellerState = FAEHRT;
aktuellerState = FAEHRT_AUF;
break;
case START_ZU:
setMotorAktion(-1);
timer = 5000;
aktuellerState = FAEHRT;
aktuellerState = FAEHRT_ZU;
break;
case FAEHRT:
case FAEHRT_AUF:
timer -= getDeltamsec();
if(timer <= 0){
setMotorAktion(0);
aktuellerState = FERTIG;
aktuellerState = WARTE_OFFEN;
}
break;
case FERTIG:
aktuellerState = WARTE;
case FAEHRT_ZU:
timer -= getDeltamsec();
if(timer <= 0){
setMotorAktion(0);
aktuellerState = WARTE_GESCHLOSSEN;
}
break;
default:

View File

@ -36,13 +36,13 @@ public:
/**
* @param open
*/
statusKlappen setOpen(bool open);
static statusKlappen setOpen(bool open , int id);
void setOpen(bool open);
static void setOpen(bool open , int id);
protected:
void memberSetup();
void memberLoop();
virtual void memberSetup();
virtual void memberLoop();
// Static Protected attributes
//
@ -53,13 +53,19 @@ protected:
private:
int16_t timer;
bool openSpeicher;
void openSpeicherAbfrage();
typedef enum fsmStatesEnum{
INIT,
WARTE,
START_AUF,
WARTE_OFFEN,
START_ZU,
FAEHRT,
FERTIG,
FAEHRT_ZU,
WARTE_GESCHLOSSEN,
START_AUF,
FAEHRT_AUF,
}fsmStates;

View File

@ -21,6 +21,7 @@ void ArduinoAnpassung::setup(){
while(zeiger){
((ArduinoAnpassung*)zeiger)->memberSetup();
zeiger = zeiger->getNachfolgerElement();
}
}

View File

@ -15,8 +15,8 @@ public:
static void setup();
static void loop();
void memberSetup();
void memberLoop();
virtual void memberSetup();
virtual void memberLoop();
static unsigned int getDeltamsec();

View File

@ -8,13 +8,8 @@ void Ablauf();
void AblaufSekunde();
KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 );
//KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 );
//KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 );
KlappenSteuerung klappe2 (M2A , M2B , M2SENSE , 2 );
KlappenSteuerung klappe3 (M3A , M3B , M3SENSE , 23 );
//KlappenSteuerung klappe4 (M4A , M4B , M4SENSE , 1 );
@ -25,6 +20,8 @@ void setup() {
KlappenSteuerung::setMotorPwmPin(TIMER1_PWM_PIN);
KlappenSteuerung::setup();
pinMode(LED_BUILTIN , OUTPUT);
pinMode(TASTER_AUF , INPUT_PULLUP);
pinMode(TASTER_ZU , INPUT_PULLUP);
}
void loop() {
@ -34,32 +31,10 @@ void loop() {
}
void Ablauf(){
static unsigned int summeZeit;
summeZeit += KlappenSteuerung::getDeltamsec();
if(summeZeit >= 1000){ // eine Sekunde
summeZeit -= 1000;
AblaufSekunde();
}
}
void AblaufSekunde(){
static unsigned int sekunden;
sekunden ++;
//digitalWrite(LED_BUILTIN , !(sekunden & 3));
switch(sekunden){
case 1:
if(!digitalRead(TASTER_AUF))
KlappenSteuerung::setOpen(true , 5);
break;
case 11:
if(!digitalRead(TASTER_ZU))
KlappenSteuerung::setOpen(false , 5);
break;
case 20:
sekunden = 0;
break;
}
}

View File

@ -38,12 +38,15 @@ void Motor::setMotorAktion(int8_t richtung){
if(richtung > 0){
digitalWrite( pinA , 1);
digitalWrite( pinB , 0);
digitalWrite(LED_BUILTIN , 1);
}else if(richtung < 0){
digitalWrite( pinA , 0);
digitalWrite( pinB , 1);
digitalWrite(LED_BUILTIN , 1);
}else{
digitalWrite( pinA , 1);
digitalWrite( pinA , 0);
digitalWrite( pinB , 0);
digitalWrite(LED_BUILTIN , 0);
}
}

View File

@ -27,7 +27,7 @@ protected:
static uint8_t pinPwm;
void memberSetup();
virtual void memberSetup();
//static void interruptEinsprung();

View File

@ -20,13 +20,16 @@
#define M4B 10
#define M4SENSE A4
#define M5A 11
#define M5B 12
#define M5SENSE A5
//#define M5A 11
//#define M5B 12
//#define M5SENSE A5
#define M6A 13
#define M6B 14
#define M6SENSE A6
//#define M6A 13 // LED_BULDIN
//#define M6B 14
//#define M6SENSE A6
#define TASTER_AUF 11
#define TASTER_ZU 12