fixed led order again + migrated to uint16_t since now proper typecasting is in place.

This commit is contained in:
Andrea Baccega 2024-01-28 15:06:42 +01:00
parent c5576140b2
commit 29db45865c
2 changed files with 14 additions and 40 deletions

View File

@ -6,8 +6,8 @@
// If you didnt solder the LEDS in order, change the order here just change the pin numbers till it matches your board // If you didnt solder the LEDS in order, change the order here just change the pin numbers till it matches your board
#define LEFT_LED_PIN 20 //Should be RED #define LEFT_LED_PIN 20 //Should be RED
#define MID_LED_PIN 18 //Should be YELLOW #define MID_LED_PIN 19 //Should be YELLOW
#define RIGHT_LED_PIN 19 //Should be GREEN #define RIGHT_LED_PIN 18 //Should be GREEN
#define GREEN_LED_PIN RIGHT_LED_PIN #define GREEN_LED_PIN RIGHT_LED_PIN

View File

@ -72,7 +72,7 @@ public:
#define PROFILE_SERIALIZED_SIZE 40 #define PROFILE_SERIALIZED_SIZE 40
#define PROFILE_SERIALIZED_NAME_SIZE 20 #define PROFILE_SERIALIZED_NAME_SIZE 20
#define STEPINDEX(step) (step.state - PREHEAT) #define STEPINDEX(step) (step.state - PREHEAT)
#define TOMILLIS(x) (((uint32_t)x) * (uint32_t)1000)
class ReflowProfile class ReflowProfile
{ {
public: public:
@ -92,14 +92,14 @@ public:
} }
ReflowStep steps[5]; ReflowStep steps[5];
char name[20]; char name[20];
float endTimes[5] = {0}; uint16_t endTimes[5] = {0};
float startTimes[5] = {0}; uint16_t startTimes[5] = {0};
float endTemps[5] = {0}; uint8_t endTemps[5] = {0};
StopWatch timer; StopWatch timer;
void start() void start()
{ {
timer.setResolution(StopWatch::MILLIS); timer = StopWatch(StopWatch::MILLIS);
timer.start(); timer.start();
} }
@ -137,29 +137,17 @@ public:
{ {
for (int i = 0; i < 5; i++) for (int i = 0; i < 5; i++)
{ {
if (elapsedMS >= TOMILLIS(startTimes[i]) && elapsedMS < TOMILLIS(endTimes[i]))
float startTimeFloat = startTimes[i];
float endTimeFloat = endTimes[i];
startTimeFloat *= 1000;
endTimeFloat *= 1000;
if (elapsedMS >= startTimeFloat && elapsedMS < endTimeFloat)
{ {
// Serial.println(String(elapsedMS) + " " + String(startTimes[i] * 1000) + " " + String(endTimes[i] * 1000) + " " + String(i) + " " + String(steps[i].state));
return steps[i]; return steps[i];
} }
} }
// Serial.println("AAA");
return steps[4]; // DONE by default return steps[4]; // DONE by default
} }
float getPercentage() float getPercentage()
{ {
return timer.elapsed() / TOMILLIS(endTimes[4]);
float timerElapsed = timer.elapsed();
return timerElapsed / (float)(endTimes[4] * 1000);
} }
float getTargetTemp() float getTargetTemp()
@ -182,20 +170,11 @@ public:
// startTemp => 20 or the temp at 100% of the previous step // startTemp => 20 or the temp at 100% of the previous step
uint32_t startTimeMS = startTimes[STEPINDEX(curStep)]; uint32_t startTimeMS = TOMILLIS(startTimes[STEPINDEX(curStep)]);
startTimeMS *= 1000;
uint32_t relativeElapsedTime = elapsedMS - startTimeMS; uint32_t relativeElapsedTime = elapsedMS - startTimeMS;
float duration = curStep.duration; float stepPercentage = relativeElapsedTime / (double)TOMILLIS(curStep.duration);
duration *= 1000; return curStep.calcTempAtPercentage(startTemp, stepPercentage);
float relativeElapsedTimeF = relativeElapsedTime;
float percentage = relativeElapsedTime / duration;
// Serial.println(String(percentage)+ "%" + String(STATE_STR(curStep.state)) + " Elapsed: " + String(elapsedMS) + " ___ " + String(curStep.duration * 1000));
return curStep.calcTempAtPercentage(startTemp, percentage);
} }
/** /**
@ -205,21 +184,16 @@ public:
*/ */
float getTargetTempFromPercentage(double processPercentage) float getTargetTempFromPercentage(double processPercentage)
{ {
return getTargetTemp(endTimes[4] * (1000 * processPercentage)); return getTargetTemp(TOMILLIS(endTimes[4]) * processPercentage);
} }
uint8_t getCurrentStepRelativeTime() uint8_t getCurrentStepRelativeTime()
{ {
uint32_t elapsedMS = timer.elapsed(); uint32_t elapsedMS = timer.elapsed();
uint32_t startTimeMS = startTimes[STEPINDEX(reflowStep())] * 1000; uint32_t startTimeMS = TOMILLIS(startTimes[STEPINDEX(reflowStep())]);
return (elapsedMS - startTimeMS) / 1000; return (elapsedMS - startTimeMS) / 1000;
} }
uint32_t getCurrentTime()
{
return timer.elapsed();
}
void toBuffer(uint8_t *b) void toBuffer(uint8_t *b)
{ {
memset(b, 0, PROFILE_SERIALIZED_SIZE); memset(b, 0, PROFILE_SERIALIZED_SIZE);