Mit dem Arduino Rechnen

Hallo =),

ich bekomme es nicht hin meine Uno das rechnen bei zu bringen.

ich habe zuletzt folgendes gemacht

Serial.println((output_value + 80) / 210 * 100);

Er supkt aber immer null aus was mache ich denn falsch ? output_value ist zu 100% eine Zahl, soll er nur output_value + 80 rechen macht er das. Soll er weiter machen mit / und * hört er einfach auf und gibt mir eine 0 aus -.-'.

Er kann rechnen, macht aber das, was Du ihm (nicht) sagst.

Wenn Du nicht sagst, mit welchen Zahlen er rechnen soll, rechnet er mit int.
Probier mal

Serial.println((output_value + 80) / 210 * 100.0);

ihn in float zu bringen.

Gruß Tommy

dann rechne doch erst *100 und dann /210.
output_value ist sicherlich ein Wert kleiner als 130, stimmts?

Erklärung: er errechnet erst den Wert in der Klammer, teilt diesen dann durch 210. Ist der Wert kleiner als 210, ist das Ergebnis theoretisch 0.xxx, wir haben aber mit int ganze Zahlen, also 0. und 0*100 bleibt 0. Also erst multiplizieren, dann dividieren

DerLehmi:
dann rechne doch erst *100 und dann /210.
output_value ist sicherlich ein Wert kleiner als 130, stimmts?

Erklärung: er errechnet erst den Wert in der Klammer, teilt diesen dann durch 210. Ist der Wert kleiner als 210, ist das Ergebnis theoretisch 0.xxx, wir haben aber mit int ganze Zahlen, also 0. und 0*100 bleibt 0. Also erst multiplizieren, dann dividieren

nein output_value ist bei 0% -80 und bei 100% 130

es ist wichtig das er das in den klammern erst rechnet und dann das / 210 und dann * 100 =)

Tommy56:
Er kann rechnen, macht aber das, was Du ihm (nicht) sagst.

Wenn Du nicht sagst, mit welchen Zahlen er rechnen soll, rechnet er mit int.
Probier mal

Serial.println((output_value + 80) / 210 * 100.0);

ihn in float zu bringen.

Gruß Tommy

Jea das funktionier allerdings so

Serial.println((output_value + 80) / 210.0 * 100.0;

Jetzt noch eine Frage wie bekomme ich das Ergebnis aufgerundet?

Google + 'Arduino' + 'round' =
https://forum.arduino.cc/index.php?topic=82462.0

Markieren, Kopieren, in die URL-Zeile einfügen und Return drücken darfst Du wieder selber.

MfG

nein output_value ist bei 0% -80 und bei 100% 130

-->Wieso nein? Ist doch so, wie ich vermutet habe...

es ist wichtig das er das in den klammern erst rechnet und dann das / 210 und dann * 100 =)

-->Wieso das denn? Das mit den Klammern ist ja klar, aber wieso erst die Division und dann die Multiplikation?

Ja, eigentlich ist erst Multiplikation besser, bei float aber nicht so kritisch, wie bei int.

Gruß Tommy

Edit: Man hätte ja auch / 2.1 schreiben können.