mirror of
https://gitlab.com/fabinfra/fabhardware/absaugungsklappensteuerung.git
synced 2025-03-12 14:51:44 +01:00
Programm fuer ersten Testlauf
ohne PWM und ohne ADC
This commit is contained in:
parent
c190169d4e
commit
eb302f45b3
@ -1,23 +1,89 @@
|
|||||||
#include "KlappenAblauf.h"
|
#include "KlappenAblauf.h"
|
||||||
|
|
||||||
// Constructors/Destructors
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
KlappenAblauf::~KlappenAblauf()
|
KlappenAblauf::~KlappenAblauf()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Methods
|
statusKlappen KlappenAblauf::setOpen(bool open)
|
||||||
//
|
{
|
||||||
|
if(aktuellerState == WARTE){
|
||||||
|
if(open)
|
||||||
|
aktuellerState = START_AUF;
|
||||||
|
else
|
||||||
|
aktuellerState = START_ZU;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ERROR_BUSY;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
statusKlappen 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();
|
||||||
|
fsmInit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KlappenAblauf::memberLoop(){
|
||||||
|
AnalogDigital::memberLoop();
|
||||||
|
fsmStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
void KlappenAblauf::fsmInit(){
|
||||||
|
aktuellerState = INIT;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Accessor methods
|
void KlappenAblauf::fsmStep(){
|
||||||
//
|
|
||||||
|
|
||||||
|
switch (aktuellerState)
|
||||||
|
{
|
||||||
|
case INIT:
|
||||||
|
aktuellerState = WARTE;
|
||||||
|
break;
|
||||||
|
|
||||||
// Other methods
|
case WARTE:
|
||||||
//
|
break;
|
||||||
|
|
||||||
|
case START_AUF:
|
||||||
|
setMotorAktion(1);
|
||||||
|
timer = 5000;
|
||||||
|
aktuellerState = FAEHRT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case START_ZU:
|
||||||
|
setMotorAktion(-1);
|
||||||
|
timer = 5000;
|
||||||
|
aktuellerState = FAEHRT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FAEHRT:
|
||||||
|
timer -= getDeltamsec();
|
||||||
|
if(timer <= 0){
|
||||||
|
setMotorAktion(0);
|
||||||
|
aktuellerState = FERTIG;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FERTIG:
|
||||||
|
aktuellerState = WARTE;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
aktuellerState = INIT;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#ifndef KLAPPENABLAUF_H
|
#ifndef KLAPPENABLAUF_H
|
||||||
#define KLAPPENABLAUF_H
|
#define KLAPPENABLAUF_H
|
||||||
|
|
||||||
|
#include "statusKlappen.h"
|
||||||
#include "analogDigital.h"
|
#include "analogDigital.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,7 +33,17 @@ public:
|
|||||||
// Public attributes
|
// Public attributes
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param open
|
||||||
|
*/
|
||||||
|
statusKlappen setOpen(bool open);
|
||||||
|
static statusKlappen setOpen(bool open , int id);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
void memberSetup();
|
||||||
|
void memberLoop();
|
||||||
|
|
||||||
// Static Protected attributes
|
// Static Protected attributes
|
||||||
//
|
//
|
||||||
|
|
||||||
@ -41,11 +51,23 @@ protected:
|
|||||||
//
|
//
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Static Private attributes
|
|
||||||
//
|
|
||||||
|
|
||||||
// Private attributes
|
int16_t timer;
|
||||||
//
|
typedef enum fsmStatesEnum{
|
||||||
|
INIT,
|
||||||
|
WARTE,
|
||||||
|
START_AUF,
|
||||||
|
START_ZU,
|
||||||
|
FAEHRT,
|
||||||
|
FERTIG,
|
||||||
|
|
||||||
|
}fsmStates;
|
||||||
|
|
||||||
|
fsmStates aktuellerState;
|
||||||
|
|
||||||
|
void fsmInit();
|
||||||
|
void fsmStep();
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,17 +1,7 @@
|
|||||||
#include "KlappenSteuerung.h"
|
#include "KlappenSteuerung.h"
|
||||||
|
|
||||||
|
|
||||||
// Constructors/Destructors
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param pinA
|
|
||||||
* @param pinB
|
|
||||||
* @param pinPwm
|
|
||||||
* @param pinSense
|
|
||||||
* @param id
|
|
||||||
*/
|
|
||||||
KlappenSteuerung::KlappenSteuerung(int pinA, int pinB, int pinSense, int id)
|
KlappenSteuerung::KlappenSteuerung(int pinA, int pinB, int pinSense, int id)
|
||||||
{
|
{
|
||||||
setMotorPins(pinA , pinB);
|
setMotorPins(pinA , pinB);
|
||||||
@ -21,25 +11,6 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
KlappenSteuerung::~KlappenSteuerung()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void KlappenSteuerung::setupStatic(){
|
|
||||||
AnalogDigital::setupStatic();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Methods
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
// Accessor methods
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
// Other methods
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -49,13 +20,3 @@ void KlappenSteuerung::setupStatic(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param open
|
|
||||||
*/
|
|
||||||
void KlappenSteuerung::setOpen(bool open)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,67 +5,25 @@
|
|||||||
#include "statusKlappen.h"
|
#include "statusKlappen.h"
|
||||||
#include "KlappenAblauf.h"
|
#include "KlappenAblauf.h"
|
||||||
|
|
||||||
/**
|
|
||||||
* class KlappenSteuerung
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
class KlappenSteuerung : public KlappenAblauf
|
class KlappenSteuerung : public KlappenAblauf
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
// Constructors/Destructors
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Empty Constructor
|
|
||||||
*/
|
|
||||||
//KlappenSteuerung();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Empty Destructor
|
|
||||||
*/
|
|
||||||
virtual ~KlappenSteuerung();
|
|
||||||
|
|
||||||
// Static Public attributes
|
|
||||||
//
|
|
||||||
|
|
||||||
// Public attributes
|
|
||||||
//
|
|
||||||
|
|
||||||
static void setupStatic();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param pinA
|
|
||||||
* @param pinB
|
|
||||||
* @param pinSense
|
|
||||||
* @param id
|
|
||||||
*/
|
|
||||||
KlappenSteuerung(int pinA, int pinB, int pinSense, int id);
|
KlappenSteuerung(int pinA, int pinB, int pinSense, int id);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
//static void setup();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*/
|
|
||||||
//static void loop();
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param open
|
|
||||||
*/
|
|
||||||
void setOpen(bool open);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
int pinSense;
|
int pinSense;
|
||||||
statusKlappen status;
|
|
||||||
|
|
||||||
//void memberSetup();
|
|
||||||
//void memberLoop();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
#include"arduinoAnpassung.h"
|
#include"arduinoAnpassung.h"
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long ArduinoAnpassung::alteZeit;
|
||||||
|
unsigned int ArduinoAnpassung::deltaZeit;
|
||||||
|
|
||||||
ArduinoAnpassung::~ArduinoAnpassung(){
|
ArduinoAnpassung::~ArduinoAnpassung(){
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ArduinoAnpassung::setup(){
|
void ArduinoAnpassung::setup(){
|
||||||
|
zeit();
|
||||||
|
zeit();
|
||||||
|
|
||||||
MyList *zeiger;
|
MyList *zeiger;
|
||||||
zeiger = ArduinoAnpassung::getErstesElement();
|
zeiger = ArduinoAnpassung::getErstesElement();
|
||||||
while(zeiger){
|
while(zeiger){
|
||||||
@ -15,6 +25,7 @@ void ArduinoAnpassung::setup(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ArduinoAnpassung::loop(){
|
void ArduinoAnpassung::loop(){
|
||||||
|
zeit();
|
||||||
MyList *zeiger;
|
MyList *zeiger;
|
||||||
zeiger = ArduinoAnpassung::getErstesElement();
|
zeiger = ArduinoAnpassung::getErstesElement();
|
||||||
while(zeiger){
|
while(zeiger){
|
||||||
@ -23,5 +34,30 @@ void ArduinoAnpassung::loop(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ArduinoAnpassung::memberSetup(){
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ArduinoAnpassung::memberLoop(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void ArduinoAnpassung::zeit(){
|
||||||
|
unsigned long neueZeit;
|
||||||
|
|
||||||
|
|
||||||
|
neueZeit = millis();
|
||||||
|
deltaZeit = (unsigned int) (neueZeit - alteZeit);
|
||||||
|
alteZeit = neueZeit;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned int ArduinoAnpassung::getDeltamsec(){
|
||||||
|
return deltaZeit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,15 +6,20 @@
|
|||||||
class ArduinoAnpassung : public MyList{
|
class ArduinoAnpassung : public MyList{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
~ArduinoAnpassung();
|
~ArduinoAnpassung();
|
||||||
|
|
||||||
|
|
||||||
static void setup();
|
static void setup();
|
||||||
static void loop();
|
static void loop();
|
||||||
|
|
||||||
|
void memberSetup();
|
||||||
|
void memberLoop();
|
||||||
|
|
||||||
virtual void memberLoop();
|
|
||||||
virtual void memberSetup();
|
static unsigned int getDeltamsec();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -24,5 +29,11 @@ private:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void zeit();
|
||||||
|
|
||||||
|
static unsigned long alteZeit;
|
||||||
|
static unsigned int deltaZeit;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
@ -34,17 +34,9 @@ void loop() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Ablauf(){
|
void Ablauf(){
|
||||||
static unsigned long alteZeit;
|
|
||||||
static unsigned int summeZeit;
|
static unsigned int summeZeit;
|
||||||
unsigned long neueZeit;
|
|
||||||
unsigned int deltaZeit;
|
|
||||||
|
|
||||||
|
|
||||||
neueZeit = millis();
|
|
||||||
deltaZeit = (unsigned int) (neueZeit - alteZeit);
|
|
||||||
alteZeit = neueZeit;
|
|
||||||
summeZeit += deltaZeit;
|
|
||||||
|
|
||||||
|
summeZeit += KlappenSteuerung::getDeltamsec();
|
||||||
if(summeZeit >= 1000){ // eine Sekunde
|
if(summeZeit >= 1000){ // eine Sekunde
|
||||||
summeZeit -= 1000;
|
summeZeit -= 1000;
|
||||||
AblaufSekunde();
|
AblaufSekunde();
|
||||||
@ -59,11 +51,11 @@ void AblaufSekunde(){
|
|||||||
//digitalWrite(LED_BUILTIN , !(sekunden & 3));
|
//digitalWrite(LED_BUILTIN , !(sekunden & 3));
|
||||||
switch(sekunden){
|
switch(sekunden){
|
||||||
case 1:
|
case 1:
|
||||||
klappe1.setOpen(true);
|
KlappenSteuerung::setOpen(true , 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 11:
|
case 11:
|
||||||
klappe1.setOpen(false);
|
KlappenSteuerung::setOpen(false , 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 20:
|
case 20:
|
||||||
|
@ -19,10 +19,8 @@ void Motor::setMotorPwmPin(uint8_t pinPwm){
|
|||||||
|
|
||||||
void Motor::setup(){
|
void Motor::setup(){
|
||||||
ArduinoAnpassung::setup();
|
ArduinoAnpassung::setup();
|
||||||
Timer1.initialize(1000); // 10kHz
|
pinMode(pinPwm , OUTPUT);
|
||||||
//Timer1.attachInterrupt(Motor::interruptEinsprung);
|
digitalWrite(pinPwm , 1);
|
||||||
Timer1.pwm(Motor::pinPwm, (0)); // 1023
|
|
||||||
//digitalWrite(LED_BUILTIN , 0 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -36,56 +34,28 @@ void Motor::memberSetup(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Motor::setMotorAktion(int8_t richtung){
|
||||||
void Motor::memberLoop(){
|
if(richtung > 0){
|
||||||
if(richtung){
|
digitalWrite( pinA , 1);
|
||||||
if(test == 32767)
|
digitalWrite( pinB , 0);
|
||||||
richtung = !richtung;
|
}else if(richtung < 0){
|
||||||
else
|
digitalWrite( pinA , 0);
|
||||||
test ++;
|
digitalWrite( pinB , 1);
|
||||||
}else{
|
}else{
|
||||||
if(test == -32767)
|
digitalWrite( pinA , 1);
|
||||||
richtung = !richtung;
|
digitalWrite( pinB , 0);
|
||||||
else
|
|
||||||
test --;
|
|
||||||
}
|
}
|
||||||
setSollSpeed( test / 128);
|
|
||||||
//setSollSpeed(100);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Motor::setSollSpeed(int16_t speed){
|
void Motor::setMotorAktion(int8_t richtung , int id ){
|
||||||
uint16_t pwm;
|
Motor *zeiger;
|
||||||
|
zeiger = (Motor*) searchIdElement(id);
|
||||||
if(speed >255)
|
if(zeiger)
|
||||||
speed = 255;
|
zeiger->setMotorAktion(richtung);
|
||||||
if(speed < -255)
|
}
|
||||||
speed = -255;
|
|
||||||
|
|
||||||
|
|
||||||
if(speed > 0)
|
|
||||||
{
|
|
||||||
pwm = 512 + speed * 2;
|
|
||||||
digitalWrite(pinA , 0);
|
|
||||||
digitalWrite(pinB , 1);
|
|
||||||
|
|
||||||
}else if (speed < 0){
|
|
||||||
pwm = 512 - speed * 2;
|
|
||||||
digitalWrite(pinA , 1);
|
|
||||||
digitalWrite(pinB , 0);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
pwm = 1023;
|
|
||||||
digitalWrite(pinA , 0);
|
|
||||||
digitalWrite(pinB , 0);
|
|
||||||
|
|
||||||
}
|
|
||||||
Timer1.pwm(Motor::pinPwm, pwm);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,8 +16,10 @@ public:
|
|||||||
|
|
||||||
void setMotorPins(uint8_t pinA , uint8_t pinB);
|
void setMotorPins(uint8_t pinA , uint8_t pinB);
|
||||||
static void setMotorPwmPin(uint8_t pinPwm);
|
static void setMotorPwmPin(uint8_t pinPwm);
|
||||||
|
void setMotorAktion(int8_t richtung);
|
||||||
|
static void setMotorAktion(int8_t richtung , int id);
|
||||||
|
|
||||||
void setSollSpeed(int16_t speed);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
@ -26,7 +28,7 @@ protected:
|
|||||||
|
|
||||||
|
|
||||||
void memberSetup();
|
void memberSetup();
|
||||||
void memberLoop();
|
|
||||||
|
|
||||||
//static void interruptEinsprung();
|
//static void interruptEinsprung();
|
||||||
//void memberInterruptEinsprung();
|
//void memberInterruptEinsprung();
|
||||||
|
@ -25,3 +25,17 @@ void MyList::SetId(int id){
|
|||||||
this->id = id;
|
this->id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MyList *MyList::searchIdElement(int id){
|
||||||
|
MyList *zeiger;
|
||||||
|
zeiger = getErstesElement();
|
||||||
|
while(zeiger){
|
||||||
|
if (zeiger->id == id)
|
||||||
|
return zeiger;
|
||||||
|
zeiger = zeiger->getNachfolgerElement();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -6,9 +6,10 @@ public:
|
|||||||
MyList();
|
MyList();
|
||||||
virtual ~MyList();
|
virtual ~MyList();
|
||||||
static MyList* getErstesElement();
|
static MyList* getErstesElement();
|
||||||
static MyList* getIdElement();
|
//static MyList* getIdElement();
|
||||||
MyList* getNachfolgerElement();
|
MyList* getNachfolgerElement();
|
||||||
void SetId(int id);
|
void SetId(int id);
|
||||||
|
static MyList* searchIdElement(int id);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,6 +3,13 @@
|
|||||||
|
|
||||||
typedef enum statusKlappenenum{
|
typedef enum statusKlappenenum{
|
||||||
NICHTS,
|
NICHTS,
|
||||||
|
OK,
|
||||||
|
OFFEN,
|
||||||
|
GESCHLOSSEN,
|
||||||
|
|
||||||
|
ERROR,
|
||||||
|
ERROR_BUSY,
|
||||||
|
ERROR_ID
|
||||||
|
|
||||||
}statusKlappen;
|
}statusKlappen;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user