Complete tire inflation / deflation state machine

This commit is contained in:
2022-09-17 20:36:01 -06:00
parent ace6c671a6
commit 0755bcfe40
3 changed files with 154 additions and 29 deletions
+22 -5
View File
@@ -15,8 +15,8 @@ float offsetMultiplier = 0.0;
void initSimulation() {
simulating = true;
simulatedPressure = (float) random(10, 30);
inflatePSIPerSecond = random(8, 12) / 100.0;
deflatePSIPerSecond = random(35, 45) / 100.0;
inflatePSIPerSecond = 0.0303;
deflatePSIPerSecond = 0.0958;
deflateOffsetMultiplier = random(3, 10) / 100.0;
inflateOffsetMultiplier = 1.0 - deflateOffsetMultiplier;
offsetMultiplier = 1.0;
@@ -25,10 +25,15 @@ void initSimulation() {
void tickSimulation() {
static unsigned long lastTick = millis();
float pressureDelta = (millis() - lastTick) / 1000.0 * pressureChangeRate;
if (millis() > lastTick + 100) {
float pressureDelta = (millis() - lastTick) / 1000.0 * pressureChangeRate;
simulatedPressure += pressureDelta;
lastTick = millis();
simulatedPressure += pressureDelta;
lastTick = millis();
Serial.print("Simulated pressure: ");
Serial.println(simulatedPressure);
}
}
void measurePressure(float &pressureValue, int pin) {
@@ -43,6 +48,18 @@ void measurePressure(float &pressureValue, int pin) {
}
}
void resamplePressure(float &pressureValue, int pin) {
if (simulating) {
float adjusted = simulatedPressure + (random(-100, 100) / 100.0);
adjusted *= offsetMultiplier;
pressureValue = adjusted;
} else {
int sensorValue = analogRead(pin);
float adjusted = 0.098 * sensorValue - 16.56 + 3.58;
pressureValue = adjusted;
}
}
void setSoleniod(int solenoidState) {
if (solenoidState == SOLENOID_STOP) {
pressureChangeRate = 0.0;