Skocz do zawartości

Monitory HMI w użytku domowym.


Pomocna odpowiedź

Nic w loop nie dajesz kurde @SOYER ogarnij się ile ci tłumaczę ze event jest funkcją którą wywołuje biblioteka lvgl a ty piszesz ciało tej f. Deklaracje masz w pliku action.h jako extern

(edytowany)
53 minuty temu, _LM_ napisał:

Nic w loop nie dajesz kurde @SOYER ogarnij się ile ci tłumaczę ze event jest funkcją którą wywołuje biblioteka lvgl a ty piszesz ciało tej f. Deklaracje masz w pliku action.h jako extern

Wybacz, dla mnie libsy to do niedawna były czarne skrzynki. Dopiero od jakiegoś czasu mam ochotę tam zaglądać i podpatrywać. Jakieś pliki nagłówkowe i inne pierdo....

Czyli ostateczna wersja:

actions.h:

#ifndef EEZ_LVGL_UI_EVENTS_H
#define EEZ_LVGL_UI_EVENTS_H

#include <lvgl.h>

#ifdef __cplusplus
extern "C" {
#endif
//extern lv_event_t akcja;
extern void action_przycisk(lv_event_t * e);


#ifdef __cplusplus
}
#endif

#endif /*EEZ_LVGL_UI_EVENTS_H*/

actions.c:

//#include <stdbool.h>
#include "actions.h"
#include <lvgl.h>
  
void action_przycisk(lv_event_t * e){
lv_obj_t *obj = (lv_obj_t *)lv_event_get_target(e);
    //Serial.printf("Received event from obj: %u\n", obj);

    if (obj == objects.btn1)
    {
      lv_scr_load(objects.main1);
      
    }
    else if (obj == objects.btn2)
    {
      lv_scr_load(objects.main);
      
    }
    else if (obj == objects.rly1)
    {
      //otwórzbramę1
    }
    else if (obj == objects.rly2)
    {
      //otwórzbramę2
    }
    
}

main:

#include <lvgl.h> //https://github.com/lvgl/lvgl
#include "ui.h"
#include <LovyanGFX.hpp> //https://github.com/lovyan03/LovyanGFX/tree/master
//#if LV_USE_TFT_ESPI
//#include <TFT_eSPI.h>
//#endif


//float temperature = 0;
static uint32_t my_tick(void)
{
    return millis();
}
void setup() {
  String LVGL_Arduino = "Hello Soyer ";
  LVGL_Arduino += String('V') + lv_version_major() + "." + lv_version_minor() + "." + lv_version_patch();

  Serial.begin(9600);
  Serial.println(LVGL_Arduino);

  lv_init();
  lv_tick_set_cb(my_tick);
  ui_init();
}

void loop() {
  lv_task_handler(); /* Let LVGL do its work. */
  ui_tick();
}

EDIT: trochę namieszałem, ale już szkic powyżej poprawiony

Edytowano przez SOYER

 

Niestety:

#include "actions.h"
#include <lvgl.h>

void action_przycisk(lv_event_t * e){
  lv_obj_t *obj = (lv_obj_t *)lv_event_get_target(e);
   // Serial.print("Received event from obj: ");
   // Serial.println(obj);

    if (obj == objects.btn1)
    {
      lv_scr_load(objects.main1);
      
    }
    else if (obj == objects.btn2)
    {
      lv_scr_load(objects.main);
      
    }
    else if (obj == objects.rly1)
    {
      //otwórzbramę1
    }
    else if (obj == objects.rly2)
    {
      //otwórzbramę2
    }
    
}


C:\Users\katon\AppData\Local\Temp\arduino_modified_sketch_766108\actions.c: In function 'action_przycisk':
actions.c:10:16: error: 'objects' undeclared (first use in this function)
   10 |     if (obj == objects.btn1)
      |                ^~~~~~~
C:\Users\katon\AppData\Local\Temp\arduino_modified_sketch_766108\actions.c:10:16: note: each undeclared identifier is reported only once for each function it appears in
exit status 1
'objects' undeclared (first use in this function)

 

Przed chwilą, SOYER napisał:

chyba zaczynam łapać, dodałem do actions.c,

#include "screens.h"

zadziała:))???

 

Podziałało:

image.thumb.png.d800a28a49b3a7fcfc57b4102935d2d5.png

Jest możliwość, by w eez studio można było odpalić symulację przez kliknięcie RUN i zadziałała logika ustawiona w actions.c? Nawet po dodaniu do eez folderu actions.c i skopiowaniu tam szkicu z projektu arduino, symulacja nie działa(np zmiana ekranów po kliknięciu buttona)

(edytowany)

Do symulacji używasz eez - flow było to chyba w tutorialach wcześniej? Poza tym NIC nie dodajesz do bibliotek wygenerowanych automatycznie, to by było sprzeczne z ideą wszelakich generatorów kodu. Bo zrobisz jakąś zmianę, zapomnisz a potem nadpiszesz swoje zmiany po kliknięciu RUN. 

Poza tym, co to za wynalazek actions.c? Ja tego nie widzę u siebie
EEZ_Studio_cfOA9P1NTm.thumb.png.0110c38fdc241cfa752b63b235abd14b.png

Edytowano przez _LM_
(edytowany)

Przecież cały czas tu wklejam kod z tego...

mam dodatkowy plik actions.c w folderze ze szkicem, po otwarciu wygląda to tak:

image.thumb.png.3865c55e9e9e06784b7c8c757bfd9249.png

a w środku siedzi to o czym pisaliśmy:

#include "actions.h"
#include <lvgl.h>
#include "screens.h"

void action_przycisk(lv_event_t * e){
  lv_obj_t *obj = (lv_obj_t *)lv_event_get_target(e);

    if (obj == objects.btn_0_next)
    {
      lv_scr_load(objects.scr1);
      
    }
    else if (obj == objects.btn_1_back)
    {
      lv_scr_load(objects.scr0);
      
    }
    else if (obj == objects.btn_1_next)
    {
      lv_scr_load(objects.scr2);
    }
    else if (obj == objects.btn_2_back)
    {
      lv_scr_load(objects.scr1);
    }
    else if (obj == objects.rly_1_brama_garaz)
    {
      //bramaG
    }
    else if (obj == objects.rly_1_brama_wjazd)
    {
      //bramaW
    }
    else if (obj == objects.rly_2_lampa_podjazd)
    {
      //lampaPodjazd
    }
    else if (obj == objects.rly_2_lapma_plac)
    {
      //lampaPlac
    }
    
}

To chyba zgodne ze sztuką...

Edytowano przez SOYER
  • Lubię! 1
(edytowany)

A jeśli tak to spoko xD W każdym razie eez - studio nie pozwala na takie "zwrotne" operacje, musisz użyć eez - flow (o czym się wcześniej wypowiedziałem) albo po prostu zaczekać aż przyjdzie panel i przetestować na żywo, lub ewentualnie zainstalować podobne narzędzie squareline studio - niestety jest ograniczone w licencji bezpłatnej oraz najpewniej namieszasz sobie w głowie bo tam jest nieco inna organizacja plików. Raczej zostań przy jednej wersji tak myślę

Edytowano przez _LM_

@_LM_dołączałeś pliki png do projektu? Jest coś takiego jak lodepng, ale nie wiem czy to działa z automatu, w lv.conf dałem 1, biblioteka dołączona do folderu z bibliotekami. Czy ma być w folderze z projektem? Jak to działa?

Albo inaczej, jak Ty dołączasz obrazy? 

Nie testowałem bo czekam aż pewien ktoś się obudzi w wyśle swoje logo do mnie. LVGL posiada konwerter czcionek i obrazów, poszukaj, gdzieś to w ich zasobach jest. 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...