mirror of
https://gitlab.com/fabinfra/fabhardware/absaugungsklappensteuerung.git
synced 2025-03-12 14:51:44 +01:00
Merge commit '34cb4879' into weiter-mit-PWM
Doch weiter mit PWM versuchen.
This commit is contained in:
commit
0757d036d5
@ -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:
|
||||
|
@ -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;
|
||||
|
||||
|
@ -21,6 +21,7 @@ void ArduinoAnpassung::setup(){
|
||||
while(zeiger){
|
||||
((ArduinoAnpassung*)zeiger)->memberSetup();
|
||||
zeiger = zeiger->getNachfolgerElement();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
if(!digitalRead(TASTER_AUF))
|
||||
KlappenSteuerung::setOpen(true , 5);
|
||||
|
||||
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:
|
||||
KlappenSteuerung::setOpen(true , 5);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
if(!digitalRead(TASTER_ZU))
|
||||
KlappenSteuerung::setOpen(false , 5);
|
||||
break;
|
||||
|
||||
case 20:
|
||||
sekunden = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -27,7 +27,7 @@ protected:
|
||||
static uint8_t pinPwm;
|
||||
|
||||
|
||||
void memberSetup();
|
||||
virtual void memberSetup();
|
||||
|
||||
|
||||
//static void interruptEinsprung();
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user