Arduino Differenz zweier Variaben berechnen

Guten Tag,
Ich bin auf der Suche nach hilfreichem Rat bezüglich Variablen in der Arduino-Software.

Ich benötige mehrere Messungen.

Zu meinem Projekt:
Ein Lidar-Sensor misst immer wieder die Entfernung zu einem bestimmten Gegenstand.

Ist die Entfernung kleiner als beispielsweise 10 m soll ein angeschlossenes Display +1 zählen.

Hierfür dachte ich, ich könnte es folgendermaßen machen: Ich erstelle zwei Variablen - Die erste Messung und die Messung direkt danach.
Ist die Differenz dieser beiden Distanzen kleiner als 0, soll +1 gezählt werden.

Nun zu meiner Frage: Wie teile ich dem Arduino mit, dass ich diese beiden Variablen suche und wie kann ich mir eine heraufzählende Zahl auf meinem Display anzeigen lassen?

Was willst Du suchen?
Was für ein Display?

Ansonsten recht einfach:
lcd.print(Zahl),

Naja, ich brache ja die beiden Variablen und ich bracuhe einen Weg, um die Differenz dieser beiden Variablen berechnen zu können

Da kann ich dir helfen...
Für die Berechnung von Differenzen ist üblicher Weise das Minuszeichen zuständig.

Das ist schwieriger!
Denn woher soll ich wissen, in welchen Variablen die Daten stecken, welche du sucht.
Du bis viel näher dran.
Du hast alles vor dir, ich nix davon.

Ich habe bis jetzt die Variable distance1

Wie kann ich dem Programm sagen, dass ich den Messwert genau nach distance1 brauche? Einfach zu schreiben distance2 bringt wahrscheinlich eher nichts...



void setup()
{
  Serial.begin(115200);
  Serial.println(F("Start..."));
  for (byte a = 0; a < 100; a++)
    for (byte b = 0; b < 100; b++)
    {
      Serial.print(F("a: "));
      Serial.print(a);
      Serial.print(F(" b: "));
      Serial.print(b);
      Serial.print(F(" Unterschied: "));
      Serial.println(max(a, b) - min(a, b));
      delay(100);
    }
}
void loop()
{
}

Ich bin relativ neu beim Programmieren, könntest Du den Code bitte kurz erklären

Der erklärt sich wirklich von selbst.
Einfach rauskopieren und einfügen in die IDE - dann hochladen.

Du brauchst etwas Zeit, bis der Code komplett durchgelaufen ist - aber Du kannst auch a<100 / b<100 auf jeweils 20 setzen :wink:
Achte auf den seriellen Monitor und die dazugehörige Einstellung.

Das verstehe ich jetzt nicht.
Willst Du jetzt bestimme wie oft die gemessene Distanz kleiner als ein gewisser Wert ist.
Oder willst Du die Änderung der Distanz messen?

Grüße Uwe

Genau, ich will wissen, wie oft die gemessene Distanz kleiner als ein gewisser Wert ist

Zeitabhängig?
Mit Rückstellmöglichkeit? Wenn ja wie?

nein, einfach nur die Zahl, zurückstellen muss ich das erstmal nicht

Es ist nur ein Vergleich - letzter Wert, aktueller Wert.
Wie es geht diesen zu berechnen habe ich gezeigt. Und eigenlich brauchst die Berechnung nicht, es reicht schon ein einfacher vergleich auf != und damit weitermachen.
Wenn das nicht hilft, weil Du a und b nicht einbauen kannst, dann zeig was Du hast - damit ich auf irgendwas aufbauen kann. Sonst macht das keinen Sinn.

Hier nochmal in formatiert

void loop()
{
  static unsigned long zaehler = 0;
  static int lastDistance = 0;
  int distance = 0;
  int strength = 0;
  getTFminiData(&distance, &strength);
  if (lastDistance != distance)
  {
    zaehler++;
    Serial.println(zaehler);
    lastDistance = distance;
    getTFminiData(&distance, &strength);
    if (distance)
    {
      Serial.print(distance);
      Serial.print("cm\t");
      Serial.print("strength: ");
      Serial.println(strength);
      lcd.setCursor(0, 0);
      lcd.print("Dis: ");
      lcd.print(distance);
      lcd.print(" cm");
      lcd.setCursor(0, 1);
      lcd.print("Str: ");
      lcd.print(strength);
    }
  }
  delay(250);
  lcd.clear();
}

ungetestet - ohne jeglichen Anspruch

mein arduino macht jetzt noch so ziemlich genau das selbe wie davor

Was gibt der Serielle Monitor aus?

er zählt, ich habe jedoch noch nicht herausgefunden in welcher regelmäßigkeit

Mit jeder Änderung.
Aufgabe erfüllt.

:slight_smile:

Woow,
Vielen Dank für den wertvollen Input
kann ich noch hinzufügen, dass es ab einer bestimmten Distanz +1 zählt?