Programmierung Arduino

Hallo
Ich habe ein Voltneter mit Arduino Uno und LCD Display gebaut.Es funktioniert auch.Nun möchte ich,dass die gemessene Voltzahl automatisch durch den Faktor 0,015 dividiert wird und das Ergebnis dann an Stelle der Voltzahl angezeigt wird.Was muss ich in den Code einfügen das das passiert ?Hintergrund ist:Ein Füllstandssensor gibt linear zum Füllstand eine Spannung von 0V-2,5V aus,d.h.jede Spannung dividiert durch 0,015 ergibt die Literzahl.
Hier der vorhandene Sketch

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
float input_voltage = 0.0;
float temp = 0.0;

void setup() {
  Serial.begin(9600);
  lcd.init();

  lcd.backlight();
  lcd.print("Frischwasser");
}
void loop() {
  int analog_value = analogRead(A0);
  input_voltage = (analog_value * 5.0) / 1024.0;

  if (input_voltage < 0.1)

    input_voltage = 0.0;
  Serial.print("v=");
  Serial.println(input_voltage);
  lcd.setCursor(0, 1);
  lcd.print("Voltage= ");
  lcd.print(input_voltage);
  delay(300);
}

Vielen Dank im Voraus.

Was gefällt dir denn an den Antworten hier nicht ?

1 Like

Hallo meisterlu

Herzlich Willkommen im Besten Arduinoforum der Welt.

Arduino bietet zum Skalieren von Messwerten die map() Funktion/Macro, was aus immer, an.

Ich wünsche einen geschmeidigen Abend und viel Spass beim Programmieren in C++.

p.s. Lass dir von "Forenwächtern" nicht den Auspuff dichtgipsen, nur wer fragt, der bekommt auch eine Antwort.

Eventuell so:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
float input_voltage = 0.0;
float volumen = 0.0;
float temp = 0.0;

void setup() 
{
  Serial.begin(9600);
  lcd.init();

  lcd.backlight();
  lcd.print("Frischwasser");
}
void loop() 
{
  int analog_value = analogRead(A0);
  input_voltage = (analog_value * 5.0) / 1024.0;

  if (input_voltage < 0.1)
  {
    input_voltage = 0.0;
  }
  volumen = input_voltage / 0.015;
  Serial.print("v=");
  Serial.println(input_voltage);
  lcd.setCursor(0, 1);
  lcd.print("Volumen= ");
  lcd.print(volumen);
  delay(300);
}

Hallo

Habe gerade den Sketch geladen.Funktioniert Super.

Vielen Dank für die Mühe.Ich hattees selbst schon über Stunden probiert,da erkennt man den Profi.

Mit freundlichen Grüßen von

Meisterlu

Gesendet von Mail für Windows

Nee, nur Hobby zum Spaß.

Danke für die Rückmeldung :slightly_smiling_face:

Wie "dividieren durch 0,015" geht, ist übrigens bei den allermeisten Programmiersprachen genauso wie bei dem hier verwendeten C++.

Erstaunlich ist eher, wie du drauf gekommen bist, das so rechnen zu wollen, statt mit 66,667 zu multiplizieren.

"Profis" hätten übrigens schon gleich den analogRead-Wert umgerechnet.
(* 0.32552)

Oder noch besser dem optimierenden Compiler erlaubt, das vorab beim Übersetzen zu machen.

Hallo

Danke für die Antwort.Ich werde gleich mal ausprobieren das in den Sketch aufzunehmen und so weitere Varianten kennenzulernen.

Grüße

Hartmut

Gesendet von Mail für Windows

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.