LVGL libraries

OP #7532639

Hallo zusammen ich habe eine frage und wenn einer helfen kann wäre ich sehr froh.

ich will hier variable zufügen indic1 indic2 indic3 hier habe ich den Beispiel

https://docs.lvgl.io/8/widgets/extra/meter.html

1
//Main*****************
2
#include <lvgl.h>
3
#include "Arduino.h"
4
#include "display.h"
5
#include "lv_example_meter.h"
6

7
Display screen;
8

9
void setup() {
10
Serial.begin(9600);
11

12
/* Nastroiki displaja i touch */
13
screen.init();
14
screen.calibrovkatouch();
15

16
/* Test bibleoteki lvgl version */
17
String LVGL_Arduino = "Hello Arduino! ";
18
LVGL_Arduino += String('V') + lv_version_major() + "." + lv_version_minor() + "." + lv_version_patch();
19
Serial.println(LVGL_Arduino);
20
Serial.println("I am LVGL_Arduino");
21
Serial.println("Setup done");
22

23
/* Podprograma Meter */
24

25
lv_example_meter_2();
26
}
27

28
void loop() {
29
screen.routine();
30
delay(5);
31

32
}
33
//LV EXAMPEL.H********************
34
#ifndef __LV_EXAMPLE_METER_H
35
#define __LV_EXAMPLE_METER_H
36

37
void lv_example_meter_1(void);
38
void lv_example_meter_2(void);
39
void lv_example_meter_3(void);
40
void lv_example_meter_4(void);
41

42
#endif
43

44
//LV EXAMPEL.CPP***************
45
#include "lvgl.h"
46
#include "lv_example_meter.h"
47
/*************** Example 2 ****************************/
48
static void set_value_2(void * indic, int32_t v)
49
{
50
lv_meter_set_indicator_end_value(meter, (lv_meter_indicator_t*)indic, v);
51
}
52
/**
53
* A meter with multiple arcs
54
*/
55
void lv_example_meter_2(void)
56
{
57
meter = lv_meter_create(lv_scr_act());
58
lv_obj_center(meter);
59
lv_obj_set_size(meter, 200, 200);
60

61
/Remove the circle from the middle/
62
lv_obj_remove_style(meter, NULL, LV_PART_INDICATOR);
63

64
/Add a scale first/
65
lv_meter_scale_t * scale = lv_meter_add_scale(meter);
66
lv_meter_set_scale_ticks(meter, scale, 11, 2, 10, lv_palette_main(LV_PALETTE_GREY));
67
lv_meter_set_scale_major_ticks(meter, scale, 1, 2, 30, lv_color_hex3(0xeee), 15);
68
lv_meter_set_scale_range(meter, scale, 0, 50, 270, 90);
69

70
/Add a three arc indicator/
71
lv_meter_indicator_t * indic1 = lv_meter_add_arc(meter, scale, 10, lv_palette_main(LV_PALETTE_RED), 0);
72
lv_meter_indicator_t * indic2 = lv_meter_add_arc(meter, scale, 10, lv_palette_main(LV_PALETTE_GREEN), -10);
73
lv_meter_indicator_t * indic3 = lv_meter_add_arc(meter, scale, 10, lv_palette_main(LV_PALETTE_BLUE), -20);
74

75
/Create an animation to set the value/
76
lv_anim_t a;
77
lv_anim_init(&a);
78
lv_anim_set_exec_cb(&a, set_value_2);
79
lv_anim_set_values(&a, 0, 100);
80
lv_anim_set_repeat_delay(&a, 100);
81
lv_anim_set_playback_delay(&a, 100);
82
lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
83

84
lv_anim_set_time(&a, 2000);
85
lv_anim_set_playback_time(&a, 500);
86
lv_anim_set_var(&a, indic1);
87
lv_anim_start(&a);
88

89
lv_anim_set_time(&a, 1000);
90
lv_anim_set_playback_time(&a, 1000);
91
lv_anim_set_var(&a, indic2);
92
lv_anim_start(&a);
93

94
lv_anim_set_time(&a, 1000);
95
lv_anim_set_playback_time(&a, 2000);
96
lv_anim_set_var(&a, indic3);
97
lv_anim_start(&a);
98
}

[Mod: C-Tags hinzugefügt]

die Variablen indic an den Anfang des Programs schreiben damit die global sind, dann kann in loop() darauf zugegriffen werden. Und den anim Kram rauslöschen, der ist nur zur Simulation.

Den Code aber besser als Anhang als .ino oder .cpp posten.

(Firma: 1984now)

J. S. schrieb:

die Variablen indic an den Anfang des Programs schreiben damit die global sind, dann kann in loop() darauf zugegriffen werden. Und den anim Kram rauslöschen, der ist nur zur Simulation.

Den Code aber besser als Anhang als .ino oder .cpp posten.

Und vor allem nicht in diesem Unterforum. Das hat hier schlicht nix zu suchen.

OP

Ob S. schrieb:

J. S. schrieb:

die Variablen indic an den Anfang des Programs schreiben damit die global sind, dann kann in loop() darauf zugegriffen werden. Und den anim Kram rauslöschen, der ist nur zur Simulation.

Den Code aber besser als Anhang als .ino oder .cpp posten.

Und vor allem nicht in diesem Unterforum. Das hat hier schlicht nix zu suchen.

ich habe jetzt ZIP

Lex P. schrieb:

ich habe jetzt ZIP

https://www.youtube.com/watch?v=RGxhve3D03c

ich mag keinen Code in Zips.

Die Doku zu lvgl ist doch sehr ausführlich, für das Meter Widget ist alles nötige in wenigen Absätzen beschrieben.

set_value_2() ist doch schon vorhanden und das setzt den Wert eines Indikators. Es braucht einen Zeiger auf das Meter und Indikator Objekt (ein Meter kann mehrere Indikatoren haben). Weil die in dem Beispiel nur lokal in der Routine für den Bildaufbau lv_example_meter_2() liegen, kann nicht auf diese Pointer zugegriffen werden. Also muss man die vorab global deklarieren damit z.B. in loop() das set_value() aufgerufen werden kann.

OP

J. S. schrieb:

Lex P. schrieb:

ich habe jetzt ZIP

https://www.youtube.com/watch?v=RGxhve3D03c

ich mag keinen Code in Zips.

Die Doku zu lvgl ist doch sehr ausführlich, für das Meter Widget ist alles nötige in wenigen Absätzen beschrieben.

set_value_2() ist doch schon vorhanden und das setzt den Wert eines Indikators. Es braucht einen Zeiger auf das Meter und Indikator Objekt (ein Meter kann mehrere Indikatoren haben). Weil die in dem Beispiel nur lokal in der Routine für den Bildaufbau lv_example_meter_2() liegen, kann nicht auf diese Pointer zugegriffen werden. Also muss man die vorab global deklarieren damit z.B. in loop() das set_value() aufgerufen werden kann.

Danke versuche ich hab bis jetzt nur mit blynk gearbeitet und da ist alles intuitiv

OP

könntest du hier zeigen wie es aussehen sollte ohne globale variablen

so habe ich ausprobiert aber PlatformIO mein es ist nicht ok

wenn einer nachhelfen kann wäre ich dankbar

lv_meter_set_indicator_start_value(meter, inidicator1, value)

lv_meter_set_indicator_start_value(meter, inidicator2, value)

lv_meter_set_indicator_start_value(meter, inidicator3, value)

... .... ...

1
lv_meter_indicator1_t * indic3 = lv_meter_add_arc(meter, scale, 10, lv_palette_main(LV_PALETTE_BLUE), 0);
2

3
lv_meter_indicator2_t * indic2 = lv_meter_add_arc(meter, scale, 10, lv_palette_main(LV_PALETTE_GREEN), -10);
4

5
lv_meter_indicator3_t * indic3 = lv_meter_add_arc(meter, scale, 10, lv_palette_main(LV_PALETTE_BLUE), -20);

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.