Merge branch 'dev'

This commit is contained in:
jakeg00dwin 2025-02-24 18:06:13 -08:00
commit d7049191bc
2 changed files with 18 additions and 3 deletions

View file

@ -49,9 +49,11 @@
#define SPEED_PIN PB2 // Pin 7/ADC1 #define SPEED_PIN PB2 // Pin 7/ADC1
#define BUTTON_PIN PB4 // Pin 3 - Button input #define BUTTON_PIN PB4 // Pin 3 - Button input
#define MOTOR_RAMPDOWN_DIST 16
#define MOTOR_PULSE 6 //uS motor base pulse #define MOTOR_PULSE 6 //uS motor base pulse
/*The timing of "ticks" is dependent on the AVR timer's counter register /*The timing of "ticks" is dependent on the AVR timer's counter register
* so for an 8bit register the maximum value is 256. Given we stick with * so for an 8bit register the maximum value is 256. Given we stick with
* a 1Mhz cpu frequency can use this formula to calculate the number of * a 1Mhz cpu frequency can use this formula to calculate the number of

View file

@ -142,11 +142,23 @@ void MotorMoveTo(uint8_t target) {
uint8_t on_delay = ReadSpeed(); uint8_t on_delay = ReadSpeed();
uint8_t pos = ReadFader(); uint8_t pos = ReadFader();
uint8_t delta = diff(target, pos);
uint8_t idx = 0; uint8_t idx = 0;
while (diff(target, pos) > 4) { while (delta > 0) {
on_delay = ReadSpeed();
pos = ReadFader(); pos = ReadFader();
delta = diff(target, pos);
//Impliment a ramp down when near target position.
if(delta <= MOTOR_RAMPDOWN_DIST){
//Ignore speed value and set for 50% speed.
on_delay = 127;
}
//Otherwise use the speed input.
else{
on_delay = ReadSpeed();
}
if (target > pos) { if (target > pos) {
MotorMove(1); MotorMove(1);
} else { } else {
@ -161,6 +173,7 @@ void MotorMoveTo(uint8_t target) {
for (; idx < 255; idx++) { for (; idx < 255; idx++) {
_delay_us(MOTOR_PULSE); _delay_us(MOTOR_PULSE);
} }
} }
return; return;
@ -271,7 +284,7 @@ static void UpdateButtonOutput(btn_state *b) {
if (b->is_active) { if (b->is_active) {
/*If already in saved position then go back to original pos.*/ /*If already in saved position then go back to original pos.*/
if(diff(MotorGetSavedPos((uint8_t *)POSITION1_ADR), ReadFader()) < 4){ if(diff(MotorGetSavedPos((uint8_t *)POSITION1_ADR), ReadFader()) <= 3){
MotorMoveTo(MotorGetSavedPos((uint8_t *)POSITION2_ADR)); MotorMoveTo(MotorGetSavedPos((uint8_t *)POSITION2_ADR));
} }
else{ else{