Advertisement
noam76

readSensors.h

Apr 29th, 2023
913
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void readSensors() {
  2.   for (int mux = 0; mux < MUX_COUNT; mux++) {
  3.     int sensorSum = 0; // variable to store the sum of sensor values
  4.     mcpMuxChip.digitalWrite(MUX_PINS[mux], LOW);
  5.     for (int channel = 0; channel < numSensorsMux[mux]; channel++) {
  6.       digitalWrite(S0, channel & 0x01);
  7.       digitalWrite(S1, channel & 0x02);
  8.       digitalWrite(S2, channel & 0x04);
  9.       digitalWrite(S3, channel & 0x08);
  10.       digitalWrite(MUX_A, channel & 0x10);
  11.       digitalWrite(MUX_B, channel & 0x20);
  12.       sensorValuesMux[mux][channel] = analogRead(ANALOG_PIN);
  13.       // show the sensor value
  14.       //Serial.print("Mux Number: "); Serial.print(mux); Serial.print("\tChannel Number: "); Serial.print(channel);
  15.       //Serial.print("\tSensor Value: "); Serial.println(sensorValuesMux[mux][channel]);
  16.       sensorSum += sensorValuesMux[mux][channel];
  17.     }
  18.     int sensorAverage = (numSensorsMux[mux] > 0) ? (sensorSum / numSensorsMux[mux]) : 0; // calculate the average sensor value for this mux
  19.     sensorValuesTotal[mux] = sensorAverage; // store the total average sensor value for this mux
  20.     mcpMuxChip.digitalWrite(MUX_PINS[mux], HIGH);
  21.   }
  22. }
  23.  
  24. void controlSolenoids() {
  25.   boolean anySolenoidOpen = false; // Variable to keep track if any solenoid is open
  26.  
  27.   for (int mux = 0; mux < MUX_COUNT; mux++) { // Loop through all multiplexers
  28.     for (int channel = 0; channel < MAX_SENSOR_PER_MUX; channel++) {
  29.       int i = mux * MAX_SENSOR_PER_MUX + channel;
  30.       if (mux < MUX_COUNT && channel < numSensorsMux[mux]) {
  31.         if (sensorValuesMux[mux][channel] > userMax[i]) {
  32.           digitalWrite(SOLENOID_PINS[i], LOW); // Close solenoid
  33.           solenoidStatus[i] = false; // Update solenoid status
  34.         } else if (sensorValuesMux[mux][channel] < userMin[i]) {
  35.           digitalWrite(SOLENOID_PINS[i], HIGH); // Open solenoid
  36.           solenoidStatus[i] = true; // Update solenoid status
  37.           anySolenoidOpen = true; // Set variable to true
  38.         }
  39.       }
  40.     }
  41.   }
  42.  
  43.   if (anySolenoidOpen) {
  44.     digitalWrite(PUMP_PIN, HIGH); // Turn on pump
  45.     pumpStatus = true; // Update pump status
  46.   } else {
  47.     digitalWrite(PUMP_PIN, LOW); // Turn off pump
  48.     pumpStatus = false; // Update pump status
  49.   }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement