LVGL libraries

OP #7532639
Lesenswert?

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]

(Firma: 1984now) #7532649
Lesenswert?

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.

#7532871
Lesenswert?

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 #7532888
Lesenswert?

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 #7532889
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren