mirror of
https://gitlab.com/fabinfra/fabhardware/absaugungsklappensteuerung.git
synced 2025-03-12 23:01:52 +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){
|
openSpeicher = open;
|
||||||
if(open)
|
|
||||||
aktuellerState = START_AUF;
|
|
||||||
else
|
|
||||||
aktuellerState = START_ZU;
|
|
||||||
return OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ERROR_BUSY;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
statusKlappen KlappenAblauf::setOpen(bool open , int id)
|
void KlappenAblauf::setOpen(bool open , int id)
|
||||||
{
|
{
|
||||||
KlappenAblauf *zeiger;
|
KlappenAblauf *zeiger;
|
||||||
zeiger = (KlappenAblauf *) searchIdElement(id);
|
zeiger = (KlappenAblauf *) searchIdElement(id);
|
||||||
if(zeiger)
|
if(zeiger)
|
||||||
return zeiger->setOpen(open);
|
return zeiger->setOpen(open);
|
||||||
return ERROR_ID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KlappenAblauf::memberSetup(){
|
void KlappenAblauf::memberSetup(){
|
||||||
|
|
||||||
AnalogDigital::memberSetup();
|
AnalogDigital::memberSetup();
|
||||||
|
openSpeicher = false;
|
||||||
fsmInit();
|
fsmInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KlappenAblauf::memberLoop(){
|
void KlappenAblauf::memberLoop(){
|
||||||
AnalogDigital::memberLoop();
|
AnalogDigital::memberLoop();
|
||||||
|
openSpeicherAbfrage();
|
||||||
fsmStep();
|
fsmStep();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KlappenAblauf::fsmInit(){
|
void KlappenAblauf::fsmInit(){
|
||||||
aktuellerState = INIT;
|
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(){
|
void KlappenAblauf::fsmStep(){
|
||||||
|
|
||||||
switch (aktuellerState)
|
switch (aktuellerState)
|
||||||
{
|
{
|
||||||
case INIT:
|
case INIT:
|
||||||
aktuellerState = WARTE;
|
aktuellerState = START_ZU;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WARTE:
|
case WARTE_OFFEN:
|
||||||
|
case WARTE_GESCHLOSSEN:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case START_AUF:
|
case START_AUF:
|
||||||
setMotorAktion(1);
|
setMotorAktion(1);
|
||||||
timer = 5000;
|
timer = 5000;
|
||||||
aktuellerState = FAEHRT;
|
aktuellerState = FAEHRT_AUF;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case START_ZU:
|
case START_ZU:
|
||||||
setMotorAktion(-1);
|
setMotorAktion(-1);
|
||||||
timer = 5000;
|
timer = 5000;
|
||||||
aktuellerState = FAEHRT;
|
aktuellerState = FAEHRT_ZU;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FAEHRT:
|
case FAEHRT_AUF:
|
||||||
timer -= getDeltamsec();
|
timer -= getDeltamsec();
|
||||||
if(timer <= 0){
|
if(timer <= 0){
|
||||||
setMotorAktion(0);
|
setMotorAktion(0);
|
||||||
aktuellerState = FERTIG;
|
aktuellerState = WARTE_OFFEN;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FERTIG:
|
case FAEHRT_ZU:
|
||||||
aktuellerState = WARTE;
|
timer -= getDeltamsec();
|
||||||
|
if(timer <= 0){
|
||||||
|
setMotorAktion(0);
|
||||||
|
aktuellerState = WARTE_GESCHLOSSEN;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -36,13 +36,13 @@ public:
|
|||||||
/**
|
/**
|
||||||
* @param open
|
* @param open
|
||||||
*/
|
*/
|
||||||
statusKlappen setOpen(bool open);
|
void setOpen(bool open);
|
||||||
static statusKlappen setOpen(bool open , int id);
|
static void setOpen(bool open , int id);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
void memberSetup();
|
virtual void memberSetup();
|
||||||
void memberLoop();
|
virtual void memberLoop();
|
||||||
|
|
||||||
// Static Protected attributes
|
// Static Protected attributes
|
||||||
//
|
//
|
||||||
@ -53,13 +53,19 @@ protected:
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
int16_t timer;
|
int16_t timer;
|
||||||
|
|
||||||
|
bool openSpeicher;
|
||||||
|
void openSpeicherAbfrage();
|
||||||
typedef enum fsmStatesEnum{
|
typedef enum fsmStatesEnum{
|
||||||
INIT,
|
INIT,
|
||||||
WARTE,
|
|
||||||
START_AUF,
|
WARTE_OFFEN,
|
||||||
START_ZU,
|
START_ZU,
|
||||||
FAEHRT,
|
FAEHRT_ZU,
|
||||||
FERTIG,
|
|
||||||
|
WARTE_GESCHLOSSEN,
|
||||||
|
START_AUF,
|
||||||
|
FAEHRT_AUF,
|
||||||
|
|
||||||
}fsmStates;
|
}fsmStates;
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ void ArduinoAnpassung::setup(){
|
|||||||
while(zeiger){
|
while(zeiger){
|
||||||
((ArduinoAnpassung*)zeiger)->memberSetup();
|
((ArduinoAnpassung*)zeiger)->memberSetup();
|
||||||
zeiger = zeiger->getNachfolgerElement();
|
zeiger = zeiger->getNachfolgerElement();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ public:
|
|||||||
static void setup();
|
static void setup();
|
||||||
static void loop();
|
static void loop();
|
||||||
|
|
||||||
void memberSetup();
|
virtual void memberSetup();
|
||||||
void memberLoop();
|
virtual void memberLoop();
|
||||||
|
|
||||||
|
|
||||||
static unsigned int getDeltamsec();
|
static unsigned int getDeltamsec();
|
||||||
|
@ -8,13 +8,8 @@ void Ablauf();
|
|||||||
void AblaufSekunde();
|
void AblaufSekunde();
|
||||||
|
|
||||||
KlappenSteuerung klappe1 (M1A , M1B , M1SENSE , 5 );
|
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 );
|
//KlappenSteuerung klappe4 (M4A , M4B , M4SENSE , 1 );
|
||||||
|
|
||||||
|
|
||||||
@ -25,6 +20,8 @@ void setup() {
|
|||||||
KlappenSteuerung::setMotorPwmPin(TIMER1_PWM_PIN);
|
KlappenSteuerung::setMotorPwmPin(TIMER1_PWM_PIN);
|
||||||
KlappenSteuerung::setup();
|
KlappenSteuerung::setup();
|
||||||
pinMode(LED_BUILTIN , OUTPUT);
|
pinMode(LED_BUILTIN , OUTPUT);
|
||||||
|
pinMode(TASTER_AUF , INPUT_PULLUP);
|
||||||
|
pinMode(TASTER_ZU , INPUT_PULLUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
@ -34,32 +31,10 @@ void loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Ablauf(){
|
void Ablauf(){
|
||||||
static unsigned int summeZeit;
|
if(!digitalRead(TASTER_AUF))
|
||||||
|
|
||||||
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);
|
KlappenSteuerung::setOpen(true , 5);
|
||||||
break;
|
|
||||||
|
|
||||||
case 11:
|
if(!digitalRead(TASTER_ZU))
|
||||||
KlappenSteuerung::setOpen(false , 5);
|
KlappenSteuerung::setOpen(false , 5);
|
||||||
break;
|
|
||||||
|
|
||||||
case 20:
|
|
||||||
sekunden = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,12 +38,15 @@ void Motor::setMotorAktion(int8_t richtung){
|
|||||||
if(richtung > 0){
|
if(richtung > 0){
|
||||||
digitalWrite( pinA , 1);
|
digitalWrite( pinA , 1);
|
||||||
digitalWrite( pinB , 0);
|
digitalWrite( pinB , 0);
|
||||||
|
digitalWrite(LED_BUILTIN , 1);
|
||||||
}else if(richtung < 0){
|
}else if(richtung < 0){
|
||||||
digitalWrite( pinA , 0);
|
digitalWrite( pinA , 0);
|
||||||
digitalWrite( pinB , 1);
|
digitalWrite( pinB , 1);
|
||||||
|
digitalWrite(LED_BUILTIN , 1);
|
||||||
}else{
|
}else{
|
||||||
digitalWrite( pinA , 1);
|
digitalWrite( pinA , 0);
|
||||||
digitalWrite( pinB , 0);
|
digitalWrite( pinB , 0);
|
||||||
|
digitalWrite(LED_BUILTIN , 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ protected:
|
|||||||
static uint8_t pinPwm;
|
static uint8_t pinPwm;
|
||||||
|
|
||||||
|
|
||||||
void memberSetup();
|
virtual void memberSetup();
|
||||||
|
|
||||||
|
|
||||||
//static void interruptEinsprung();
|
//static void interruptEinsprung();
|
||||||
|
@ -20,13 +20,16 @@
|
|||||||
#define M4B 10
|
#define M4B 10
|
||||||
#define M4SENSE A4
|
#define M4SENSE A4
|
||||||
|
|
||||||
#define M5A 11
|
//#define M5A 11
|
||||||
#define M5B 12
|
//#define M5B 12
|
||||||
#define M5SENSE A5
|
//#define M5SENSE A5
|
||||||
|
|
||||||
#define M6A 13
|
//#define M6A 13 // LED_BULDIN
|
||||||
#define M6B 14
|
//#define M6B 14
|
||||||
#define M6SENSE A6
|
//#define M6SENSE A6
|
||||||
|
|
||||||
|
#define TASTER_AUF 11
|
||||||
|
#define TASTER_ZU 12
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user