7 Segment anzeige Aktualisierrate ändern Arduino?

2 Antworten

sevseg.setNumber(voltage * 1132,2);
sevseg.refreshDisplay();

Zwischen diesen beiden oberen Zeilen ein delay(); einbauen.

sevseg.setBrightness(90);

Kann das nicht besser in die void setup, damit es nur einmal ausgeführt wird und nicht wie bisher 50.000 Mal pro Sekunde die Leuchtkraft eingestellt werden muss?


Jan89808 
Fragesteller
 31.01.2022, 10:34

Hi, wenn ich ein delay von 1000 eingebe passiert das:

https://youtu.be/bKX9_bWduWQ

0
LisamagPferde04  31.01.2022, 10:41
@Jan89808

Delay ist für sowas der falsche Ansatz. Mache das

sevseg.setNumber(voltage * 1132,2);

in einen if-Block mit Intervall von einer Sekunde ähnlich wie du es unten für den Servo machst. Der refresh Befehl darf da aber nicht mit rein. Der muss mit hoher Frequenz aufgerufen werden

0
Jan89808 
Fragesteller
 31.01.2022, 11:18
@LisamagPferde04

hmm... Funktioniert trotzdem nicht, das Display aktualisiert sich wieder so schnell dass man die Messung nicht lesen kann.

Trotzdem danke für deine Antwort.

if ((millis()- startdisplay) >= displaydelay) {

sevseg.setNumber(voltage * 1132,2);

}

0
LisamagPferde04  31.01.2022, 11:21
@Jan89808

Du musst auch

startdisplay = millis();

In dem Block setzten damit es auch funktioniert. Ansonsten wird es wenn nach dem ersten überschreiten des Intervalls wieder in jeder loop-Iteration ausgeführt.

0
Jan89808 
Fragesteller
 31.01.2022, 11:26
@LisamagPferde04

So?

if (startdisplay = millis()>= displaydelay); {

sevseg.setNumber(voltage * 1132,2);

}

Weil es passiert immernoch dasselbe.

0
LisamagPferde04  31.01.2022, 11:41
@Jan89808

Nein so:

if ((millis()- startdisplay) >= displaydelay) {
startdisplay = millis();
sevseg.setNumber(voltage * 1132,2);
}

1
LisamagPferde04  31.01.2022, 10:36

delay ist bei sowas nicht wirklich geeignet. Dann wird wahrscheinlich zu selten gemessen um einen guten Durchschnitt zu bekommen.

Man könnte die Anzeige aber einfach eine den if-Block machen vergleichbar zu dem unten mit dem Servo. Den dann eben mit einen passenden Interval für jede Sekunde

0
Jan89808 
Fragesteller
 31.01.2022, 10:39

Die helligkeit habe ich nun in das setup gepackt schein auch zu funktionieren.

1

Hallo,

die Zeile:

sevseg.setBrightness(90); 

ab ins Setup .. dieses musst du nur einmal ausführen..wenn er fester wert sein soll..

die zeilen:

sevseg.setNumber(voltage * 1132,2);
sevseg.refreshDisplay();

würde ich in die millis-abfrage verschieben..würde dann nicht den loop unterbrechen und alle 1000ms das display refreshen