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.
The Arduino programming language Reference, organized into Functions, Variable and Constant, and Structure keywords.
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.
agmue
August 2, 2023, 5:55pm
4
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
agmue
August 3, 2023, 9:47am
6
meisterlu:
den Profi.
Nee, nur Hobby zum Spaß.
Danke für die Rückmeldung
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
system
Closed
January 31, 2024, 10:29am
9
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.