Mehrere FSR-Sensoren mit Arduino Mega

Stimmen die Werte?

Dann ist das die Kurzfassung. 80 Zeilen Code und wenn die ersten oben weg gehen und die Klammern nicht jede Zeile füllen, sinds nur noch etwa 50

/*
   Bedingung ist, das der Sensor zwischen AnalogPin und GND geschalten ist
   zwischen AnalogPin und +5V liegt ein Pullup
   Berechnung der Widerstandswerte auf Basis der Kalkulation aus:
   https://forum.arduino.cc/t/mehrere-fsr-sensoren-mit-arduino-mega/908917/86?u=my_xy_projekt
*/

const byte fsrPins[] = {A0, A1, A2, A3, A4, A5, A6, A7, A8, A9}; // the FSR and 10K pulldown are connected to a0 <- Dieser Kommentar war original drin und ist FALSCH!
const byte sensorZahl = sizeof(fsrPins) / sizeof(fsrPins[0]);
unsigned int fsrReading[sensorZahl];     // the analog reading from the FSR resistor divider

// Messwerte
// Das geht noch anders mit einem 2D-Array, aber erstmal anfangen....
const unsigned int adcWert[] = {1014, 1003, 911, 751, 652, 571, 526, 490, 464, 435, 410, 399, 367, 354, 336, 322, 297, 276, 234, 205};
const byte stuetzWerte = sizeof(adcWert) / sizeof(adcWert[0]);
const unsigned long nWert[stuetzWerte] = {100, 1000, 1500, 2000, 2500, 3000, 3500, 4000,
                                          //0.1  1   1,5   2     2,5   3     3,5   4
                                          4500, 5000, 5500, 6000, 6500, 7000, 8000, 9000,
                                          //4,5  5    5,5   6     6,5   7     8     9
                                          10000, 13636, 27580, 65600
                                          //10   13,636 27,58  65,6     Newton
                                         }; // Der Wert ist *1000 wegen ohne Nachkommastelle!!
unsigned int druck = 0;
void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
}
void loop(void)
{
  readSensors ();
  rechneSensors();
  delay(2000);
}
void readSensors()
{
  for (byte i = 0; i < sensorZahl; i++)
  {
    fsrReading[i] = analogRead(fsrPins[i]);
  }
}
void rechneSensors()
{
  static unsigned long lastdruck[sensorZahl] = {0};
  for (byte b = 0; b < sensorZahl; b++)
  {
    if (fsrReading[b] > adcWert[0])
    {
      Serial.println(F("No pressure"));
    }
    else
    {
      druck = newton(fsrReading[b]);
      if (druck != lastdruck[b])
      {
        Serial.print((float)druck / 1000, 3); Serial.println(F(" N"));
        lastdruck[b] = druck;
      }
    }
  }
}

unsigned int newton(unsigned int analogWert)
{
  unsigned int j = 0;
  for (unsigned int i = 0; i < stuetzWerte; i++) // Abfrage des gesamten arrayinhalt
  {
    if (analogWert == adcWert[i])                // Messwert passt auf analogwert
    {
      return  nWert[i];                          // gebe passenden Druckwert zurueck
    }
    else if (analogWert > adcWert[i])            // Messwert liegt zwischen dem letzten (adcWert[i])
      //                                         // und dem vorletzten (adcWert[i-1])
    {
      j = map(analogWert, adcWert[i - 1], adcWert[i], nWert[i - 1], nWert[i]);
      return j;
    }
  }
  return j;
}

Soll/muss ich erklären?