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
  Display OLED SSD1306 und Senosr MLX90614 hd458 37 684 10.11.2019 19:03
Letzter Beitrag: hotsystems
  u8g Display spiegeln Stagneth.Alexander 3 199 19.10.2019 18:45
Letzter Beitrag: hotsystems
  LCD 16*2 display zeigt sinnlose Zeichen Schneggl 15 704 04.10.2019 18:58
Letzter Beitrag: Tommy56
  Display in void neu zeichnen Mr_Martin 6 424 23.09.2019 15:32
Letzter Beitrag: Tommy56
  Beschreibung ePaper-Display Herby007 16 1.267 26.07.2019 22:19
Letzter Beitrag: Tommy56
Lightbulb Neues Library für 2.0" TFT-Display ILI9225 mit Arduino Due MartinZ 0 635 20.06.2019 09:59
Letzter Beitrag: MartinZ
  Display ST 7789 Joergi-1911 17 2.858 17.05.2019 16:57
Letzter Beitrag: Tommy56
  Arduino Nano und 1,3 Zoll IC2 OLED Display ParadoxDev 3 1.333 27.07.2018 09:57
Letzter Beitrag: hotsystems
  ECU und Display Kommunikation mitlesen Marc2014 4 1.244 11.07.2018 18:10
Letzter Beitrag: hotsystems
Sad Hilfe bei 2.4 TFT Display Harry Hirsch 68 13.647 10.07.2018 18:17
Letzter Beitrag: Tommy56

Gehe zu:


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