Forum: Mikrocontroller und Digitale Elektronik LVGL libraries


von Lex P. (lex_p)


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]

: Verschoben durch Moderator
von J. S. (jojos)


Lesenswert?

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.

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


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.

von Lex P. (lex_p)


Angehängte Dateien:

Lesenswert?

Danke
habe als zip da es aus PlatformIO so ist alles dabei

von Lex P. (lex_p)


Lesenswert?

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

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Ob S. schrieb:
> Und vor allem nicht in diesem Unterforum. Das hat hier schlicht nix zu
> suchen.

Ich habs verschoben.

von Lex P. (lex_p)


Lesenswert?

Frank M. schrieb:
> Ob S. schrieb:
>> Und vor allem nicht in diesem Unterforum. Das hat hier schlicht nix zu
>> suchen.
>
> Ich habs verschoben.

danke jetzt weiß ich was gemeint war

von J. S. (jojos)


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.

von Lex P. (lex_p)


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

von Lex P. (lex_p)


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)

...
....
...


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

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

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

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.