Migrate takeup code into it's own lib

This commit is contained in:
Matt McWilliams 2026-04-23 23:53:35 -04:00
parent 3cba88d96a
commit 0d641b3f67
4 changed files with 101 additions and 3 deletions

53
ino/lib/Takeup/Takeup.cpp Normal file
View File

@ -0,0 +1,53 @@
#include "Takeup.h"
Takeup::Takeup () {}
void Takeup::setup () {
pinMode(feedPin, OUTPUT);
pinMode(takeupPin, OUTPUT);
digitalWrite(feedPin, LOW);
digitalWrite(takeupPin, LOW);
}
void Takeup::loop () {
if (takeupStop > 0 || feedStop > 0) {
timer = millis();
if (feedStop > 0) {
if (timer >= feedStop) {
_stopFeed();
}
}
if (takeupStop > 0) {
if (timer >= takeupStop) {
_stopTakeup();
}
}
}
}
void Takeup::forward () {
bool start = takeupStop < 0;
takeupStop = start ? millis() + frameTime : takeupStop + frameTime;
if (start) {
analogWrite(takeupPin, PWM);
}
}
void Takeup::backward () {
bool start = feedStop < 0;
feedStop = start ? millis() + frameTime : feedStop + frameTime;
if (start) {
analogWrite(feedPin, PWM);
}
}
void Takeup::_stopFeed () {
digitalWrite(feedPin, LOW);
feedStop = -1;
}
void Takeup::_stopTakeup () {
digitalWrite(takeupPin, LOW);
takeupStop = -1;
}

35
ino/lib/Takeup/Takeup.h Normal file
View File

@ -0,0 +1,35 @@
#ifndef TAKEUP
#define TAKEUP
#include <Arduino.h>
class Takeup {
private:
const uint8_t PWM = 200; //calculate corresponding RPM
const long frameTime = 220;
const uint8_t feedPin = 9;
const uint8_t takeupPin = 10;
volatile long timer = 0;
volatile long feedStop = -1;
volatile long takeupStop = -1;
void _stopFeed();
void _stopTakeup();
public:
Takeup();
void setup();
void loop();
void forward();
void backward();
};
#endif

View File

@ -6,6 +6,8 @@ Takeup::Takeup () {}
void Takeup::setup () {
pinMode(feedPin, OUTPUT);
pinMode(takeupPin, OUTPUT);
digitalWrite(feedPin, LOW);
digitalWrite(takeupPin, LOW);
}
void Takeup::loop () {
@ -41,11 +43,11 @@ void Takeup::backward () {
}
void Takeup::_stopFeed () {
digitalWrite(feedPin, 0);
digitalWrite(feedPin, LOW);
feedStop = -1;
}
void Takeup::_stopTakeup () {
digitalWrite(takeupPin, 0);
digitalWrite(takeupPin, LOW);
takeupStop = -1;
}

View File

@ -35,6 +35,10 @@ ENDSTOPCAMERASHIELD=(
mcopy_mitchell_camera
)
TAKEUP=(
mcopy_mitchell_camera
)
for sketch in "${MCOPYSERIAL[@]}"; do
cp ino/lib/McopySerial/McopySerial.* ino/${sketch}/
done
@ -43,6 +47,10 @@ for sketch in "${ENDSTOPCAMERASHIELD[@]}"; do
cp ino/lib/EndstopCameraShield/EndstopCameraShield.* ino/${sketch}/
done
for sketch in "${TAKEUP[@]}"; do
cp ino/lib/Takeup/Takeup.* ino/${sketch}/
done
if [ -d ../McopySerial ]; then
cp ino/lib/McopySerial/McopySerial.* ../McopySerial/
fi
fi