INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Prozentanzeige auf Display
04.11.2019, 14:19
Beitrag #1
Prozentanzeige auf Display
Hallo zusammen,

ich habe ein Problem bei der Ausgabe einer Prozentanzeige.
Bei der Berechnung bekomme ich immer eine 0 als Ausgabewert.

Hier der Code:
Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

int pin = 7;
unsigned long duration1;
unsigned long duration0;
int dauer1=0;
int dauer0=0;
int Periode=0;
int Tastver=0;

void setup() {
  lcd.begin();
  lcd.backlight();
  Serial.begin(9600);
  pinMode(pin, INPUT);
}

void loop() {
    duration1 = pulseInLong(pin, HIGH);
    dauer1=duration1;
    //Serial.println(dauer1);
    duration0 = pulseInLong(pin, LOW);
    dauer0=duration0;
    //Serial.println(dauer0);
    
lcd.clear();
lcd.print("High Signal:");
lcd.print(dauer1);
lcd.setCursor(0, 1);
lcd.print("Low Signal :");
lcd.print(dauer0);
lcd.setCursor(0, 2);
lcd.print("T-Periode  :");
Periode=dauer0+dauer1;
lcd.print(Periode);

lcd.setCursor(0, 3);
lcd.print("Tastverh   :");
Tastver=100*((dauer1)/Periode);
Serial.println(Tastver);
lcd.print(Tastver);

delay(200);
}

Die Prozentzahl wird nicht angezeigt. Nur die 0.
Erkennt der Arduino den Wert der Division also 0,XXX also 0 an ?
Also 100x0=0 ?

Vielleicht sitze ich auch schon zulange vor dem Problem und sehe die einfache Lösung nicht ...

Vielen Dank
Gruß[/php]
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.11.2019, 14:31 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2019 14:41 von MicroBahner.)
Beitrag #2
RE: Prozentanzeige auf Display
Du arbeitest mit Ganzzahlen. Dein 'dauer1' ist prinzipbedingt immer kleiner als 'Periode'.
Code:
Tastver=100*((dauer1)/Periode);
Damit ist auch die Division dauer1/Periode immer 0. Werte unter 1 kannst Du mit Ganzzahlen nunmal nicht darstellen.
Entweder Du arbeitest mit float, oder Du multipliziert erst mit 100:
Code:
Tastver=(100*dauer1)/Periode;
Ob das mit int geht, hängt aber davon ab, welchen Wertebereich dein 'dauer1' hat. Wenn das > 320 werden kann, bekommst Du da einen Überlauf. Dann musst Du mit long arbeiten:
Code:
Tastver=(100L*dauer1)/Periode;

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.11.2019, 14:52
Beitrag #3
RE: Prozentanzeige auf Display
(04.11.2019 14:19)GSA1150 schrieb:  Also 100x0=0 ?
Das gilt nicht nur im Arduiono, sondern immer.
Viel Nichts bleibt Nichts.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.11.2019, 15:10
Beitrag #4
RE: Prozentanzeige auf Display
(04.11.2019 14:31)MicroBahner schrieb:  Du arbeitest mit Ganzzahlen. Dein 'dauer1' ist prinzipbedingt immer kleiner als 'Periode'.
Code:
Tastver=100*((dauer1)/Periode);
Damit ist auch die Division dauer1/Periode immer 0. Werte unter 1 kannst Du mit Ganzzahlen nunmal nicht darstellen.
Entweder Du arbeitest mit float, oder Du multipliziert erst mit 100:
Code:
Tastver=(100*dauer1)/Periode;
Ob das mit int geht, hängt aber davon ab, welchen Wertebereich dein 'dauer1' hat. Wenn das > 320 werden kann, bekommst Du da einen Überlauf. Dann musst Du mit long arbeiten:
Code:
Tastver=(100L*dauer1)/Periode;


Perfekt, Vielen Dank
Funktioniert jetzt Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
04.11.2019, 15:20 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2019 16:37 von MicroBahner.)
Beitrag #5
RE: Prozentanzeige auf Display
Super, danke für die Rückmeldung.
Bei Ganzzahlarithmetik gelten ein paar mathematische Regeln nicht mehr so ganz. Die Reihenfolge bei Multiplikation / Division ist da eben nicht mehr egal Wink .

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  OLED Display Phänomen Sulawesi 36 504 02.06.2020 13:06
Letzter Beitrag: Sulawesi
  7 Segment Display mit Rotary Encoder SA154 2 139 26.05.2020 13:40
Letzter Beitrag: MicroBahner
  4 Zeilen im Display Modul 0.69" IIC I2C, aber wie? Christian_Moba-Arduino 7 278 17.05.2020 13:12
Letzter Beitrag: Christian_Moba-Arduino
  Problem mit Nokia 5110 Display MKnet83 17 820 12.04.2020 13:31
Letzter Beitrag: Tommy56
  Frage zu Uhrzeit auf Display (schneller laufen lassen) ThorstenP 3 329 07.04.2020 14:52
Letzter Beitrag: hotsystems
  I²C Display flackert JoTa2k 14 747 24.03.2020 16:58
Letzter Beitrag: JoTa2k
  Spannungssensor über Tm1637 Display Boreallus 5 587 10.02.2020 17:17
Letzter Beitrag: hotsystems
  Scrollpausen im Oled Display ohne Delay Alter Fritz 7 639 25.01.2020 13:22
Letzter Beitrag: Alter Fritz
  Optische Anzeige auf dem Display ? Nicole 8 975 30.12.2019 12:00
Letzter Beitrag: hotsystems
  bitmap auf OLED Display darstellen Thor Wallhall 7 875 28.11.2019 22:48
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste