Make some sacrifices in the DriveMotor class to make it non-generalizable. Working towards porting timing functions from encoder proof of concept sketch.
This commit is contained in:
parent
1aca2dd5c0
commit
db1f8c4100
|
@ -119,6 +119,9 @@ bool ContactPrinter::IsRunning () {
|
||||||
|
|
||||||
void ContactPrinter::Loop () {
|
void ContactPrinter::Loop () {
|
||||||
timer = millis();
|
timer = millis();
|
||||||
|
/*ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
|
||||||
|
pos = posi;
|
||||||
|
}*/
|
||||||
if (initialized) {
|
if (initialized) {
|
||||||
ButtonLoop();
|
ButtonLoop();
|
||||||
if (running) {
|
if (running) {
|
||||||
|
@ -128,4 +131,3 @@ void ContactPrinter::Loop () {
|
||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ class ContactPrinter {
|
||||||
volatile bool initialized = false;
|
volatile bool initialized = false;
|
||||||
volatile bool running = false;
|
volatile bool running = false;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ContactPrinter();
|
ContactPrinter();
|
||||||
|
@ -80,6 +81,9 @@ class ContactPrinter {
|
||||||
void ButtonLoop();
|
void ButtonLoop();
|
||||||
|
|
||||||
bool IsRunning ();
|
bool IsRunning ();
|
||||||
|
|
||||||
|
float CalculateFPS (long timeLength, uint32_t frames);
|
||||||
|
float CalculateRPM (long rotationLength);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -4,14 +4,6 @@ DriveMotor::DriveMotor () {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
DriveMotor::DriveMotor (uint8_t e_pin, uint8_t f_pin, uint8_t b_pin, uint8_t ea_pin, uint8_t eb_pin) {
|
|
||||||
enable_pin = e_pin;
|
|
||||||
forward_pin = f_pin;
|
|
||||||
backward_pin = b_pin;
|
|
||||||
encoder_a_pin = ea_pin;
|
|
||||||
encoder_b_pin = eb_pin;
|
|
||||||
};
|
|
||||||
|
|
||||||
void DriveMotor::Setup () {
|
void DriveMotor::Setup () {
|
||||||
pinMode(enable_pin, OUTPUT);
|
pinMode(enable_pin, OUTPUT);
|
||||||
pinMode(forward_pin, OUTPUT);
|
pinMode(forward_pin, OUTPUT);
|
||||||
|
@ -31,6 +23,8 @@ void DriveMotor::Setup () {
|
||||||
|
|
||||||
digitalWrite(forward_pin, LOW);
|
digitalWrite(forward_pin, LOW);
|
||||||
digitalWrite(backward_pin, LOW);
|
digitalWrite(backward_pin, LOW);
|
||||||
|
|
||||||
|
//attachInterrupt(digitalPinToInterrupt(encoder_b_pin), ReadEncoder, RISING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DriveMotor::Start() {
|
void DriveMotor::Start() {
|
||||||
|
@ -51,6 +45,30 @@ void DriveMotor::SetSpeed(float speed) {
|
||||||
Serial.println(pwm_duty_cycle);
|
Serial.println(pwm_duty_cycle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DriveMotor::Loop () {
|
|
||||||
//monitor speed
|
int64_t DriveMotor::posi = 0;
|
||||||
|
/*
|
||||||
|
void DriveMotor::ReadEncoder () {
|
||||||
|
int b = digitalRead(DriveMotor::encoder_b_pin);
|
||||||
|
if (b > 0) {
|
||||||
|
posi++;
|
||||||
|
} else {
|
||||||
|
posi--;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
void DriveMotor::Loop () {
|
||||||
|
int64_t pos;
|
||||||
|
//monitor speed
|
||||||
|
/*ATOMIC_BLOCK(ATOMIC_RESTORESTATE) {
|
||||||
|
pos = posi;
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
float DriveMotor::CalculateFPS (long timeLength, uint32_t frames) {
|
||||||
|
return 1000.0 / ((float) timeLength / (float) frames);
|
||||||
|
}
|
||||||
|
|
||||||
|
float DriveMotor::CalculateRPM (long rotationLength) {
|
||||||
|
return 60000.0 / (float) (rotationLength);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,13 +8,11 @@ class DriveMotor {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
//defaults are for EPS32 dev board
|
//defaults are for EPS32 dev board
|
||||||
volatile uint8_t enable_pin = 26;
|
const uint8_t enable_pin = 26;
|
||||||
volatile uint8_t forward_pin = 27; //Clockwise
|
const uint8_t forward_pin = 27; //Clockwise
|
||||||
volatile uint8_t backward_pin = 14; //Counter-clockwise
|
const uint8_t backward_pin = 14; //Counter-clockwise
|
||||||
volatile uint8_t encoder_a_pin = 33;
|
const uint8_t encoder_a_pin = 33;
|
||||||
volatile uint8_t encoder_b_pin = 25;
|
const uint8_t encoder_b_pin = 25;
|
||||||
|
|
||||||
volatile uint8_t pwm_duty_cycle = 0;
|
|
||||||
|
|
||||||
const uint32_t pwm_frequency = 5000;
|
const uint32_t pwm_frequency = 5000;
|
||||||
const uint8_t pwm_channel = 0;
|
const uint8_t pwm_channel = 0;
|
||||||
|
@ -26,19 +24,32 @@ class DriveMotor {
|
||||||
const uint32_t maxPulses = (int) round((float) ppr * ratio);
|
const uint32_t maxPulses = (int) round((float) ppr * ratio);
|
||||||
const uint8_t framesPerRotation = 18;
|
const uint8_t framesPerRotation = 18;
|
||||||
|
|
||||||
|
volatile uint8_t pwm_duty_cycle = 0;
|
||||||
|
|
||||||
|
static int64_t posi;
|
||||||
|
|
||||||
|
//measured
|
||||||
|
volatile float rpm = 0.0;
|
||||||
|
volatile float fps = 0.0;
|
||||||
|
|
||||||
|
//target
|
||||||
volatile float target_fps = 0.0;
|
volatile float target_fps = 0.0;
|
||||||
volatile float target_rpm = 0.0;
|
volatile float target_rpm = 0.0;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DriveMotor();
|
DriveMotor();
|
||||||
DriveMotor(uint8_t e_pin, uint8_t f_pin, uint8_t b_pin, uint8_t ea_pin, uint8_t eb_pin);
|
|
||||||
void Setup();
|
void Setup();
|
||||||
void Loop();
|
void Loop();
|
||||||
void Start();
|
void Start();
|
||||||
void Stop();
|
void Stop();
|
||||||
void SetSpeed(float speed);
|
void SetSpeed(float speed);
|
||||||
|
|
||||||
|
float CalculateFPS (long timeLength, uint32_t frames);
|
||||||
|
float CalculateRPM (long rotationLength);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
static void ReadEncoder();
|
static void ReadEncoder();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue