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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.