We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hi,
carrying on from: #290.
I have managed to implement code that works but crashes within 24 hours. Did anybody find a fix for this issue?
I am using lgvl but I am sure the issue is related to SPI.
Here is the code that works for while and then crashes:
#include <lvgl.h> #include <TFT_eSPI.h> #include <SPI.h> #include <LoRa.h> // #include "NotoSansBold15.h" //define the pins used by the transceiver module #define ss 33 #define rst 12 #define dio0 27 #define MY_CS 33 #define MY_SCLK 25 #define MY_MISO 27 #define MY_MOSI 26 #define CE_PIN 12 #define CSN_PIN 33 TFT_eSPI tft = TFT_eSPI(); /* TFT instance */ static lv_disp_buf_t disp_buf; static lv_color_t buf[LV_HOR_RES_MAX * 10]; int counter = 0; // TFT_eSPI tft = TFT_eSPI(135, 240); // Invoke custom library SPIClass spiLoRA(HSPI); LoRaClass LoRa2; #if USE_LV_LOG != 0 /* Serial debugging */ void my_print(lv_log_level_t level, const char * file, uint32_t line, const char * dsc) { Serial.printf("%s@%d->%s\r\n", file, line, dsc); Serial.flush(); } #endif void lv_ex_led_1(void) { /*Create a LED and switch it OFF*/ lv_obj_t * led1 = lv_led_create(lv_scr_act(), NULL); lv_obj_align(led1, NULL, LV_ALIGN_CENTER, -80, 0); lv_led_off(led1); /*Copy the previous LED and set a brightness*/ lv_obj_t * led2 = lv_led_create(lv_scr_act(), led1); lv_obj_align(led2, NULL, LV_ALIGN_CENTER, 0, 0); lv_led_set_bright(led2, 190); /*Copy the previous LED and switch it ON*/ lv_obj_t * led3 = lv_led_create(lv_scr_act(), led1); lv_obj_align(led3, NULL, LV_ALIGN_CENTER, 80, 0); lv_led_on(led3); } /* Display flushing */ void my_disp_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p) { uint32_t w = (area->x2 - area->x1 + 1); uint32_t h = (area->y2 - area->y1 + 1); tft.startWrite(); tft.setAddrWindow(area->x1, area->y1, w, h); tft.pushColors(&color_p->full, w * h, true); tft.endWrite(); lv_disp_flush_ready(disp); } /* Reading input device (simulated encoder here) */ bool read_encoder(lv_indev_drv_t * indev, lv_indev_data_t * data) { static int32_t last_diff = 0; int32_t diff = 0; /* Dummy - no movement */ int btn_state = LV_INDEV_STATE_REL; /* Dummy - no press */ data->enc_diff = diff - last_diff;; data->state = btn_state; last_diff = diff; return false; } void setup() { pinMode(13, OUTPUT); digitalWrite(13, HIGH); Serial.begin(115200); /* prepare for possible serial debug */ while (!Serial); Serial.println("LoRa Receiver"); lv_init(); #if USE_LV_LOG != 0 lv_log_register_print_cb(my_print); /* register print function for debugging */ #endif tft.begin(); /* TFT init */ tft.setRotation(1); /* Landscape orientation */ lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); /*Initialize the display*/ lv_disp_drv_t disp_drv; lv_disp_drv_init(&disp_drv); disp_drv.hor_res = 480; disp_drv.ver_res = 320; disp_drv.flush_cb = my_disp_flush; disp_drv.buffer = &disp_buf; lv_disp_drv_register(&disp_drv); /*Initialize the (dummy) input device driver*/ lv_indev_drv_t indev_drv; lv_indev_drv_init(&indev_drv); indev_drv.type = LV_INDEV_TYPE_ENCODER; indev_drv.read_cb = read_encoder; lv_indev_drv_register(&indev_drv); // /* Create simple label */ // lv_obj_t *label = lv_label_create(lv_scr_act(), NULL); // lv_label_set_text(label, "Hello Arduino! (V7.0.X)"); // lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); spiLoRA.begin(MY_SCLK, MY_MISO, MY_MOSI); LoRa2.setSPI(spiLoRA); LoRa2.setPins(CSN_PIN, rst, dio0); while (!LoRa2.begin(433E6)) { Serial.println("[LoRa 2] Starting LoRa failed!"); // LORA2_Status="FAILED"; delay(1000); } LoRa2.setSyncWord(0xF3); Serial.println("LoRa Initializing OK!"); tft.println("LoRa Initializing OK!"); // CREATE INITIAL screen // // Background Image | Image de fond // lv_obj_t * img1 = lv_img_create(lvglpage, NULL); // lv_img_set_src(img1, &WALLPAPER_1_IMG); // lv_obj_align(img1, NULL, LV_ALIGN_CENTER, 0, 0); // Button in center of the screen | Bouton au centre de l'écran lv_obj_t * btn1 = lv_btn_create(lv_scr_act(), NULL); lv_obj_set_event_cb(btn1, event_handler); lv_obj_align(btn1, NULL, LV_ALIGN_CENTER, 0, 0); // Display a circuar scrolling welcome message // Affiche un message défilant de bienvenue lv_obj_t * welcomemessage; welcomemessage = lv_label_create(lv_scr_act(), NULL); lv_label_set_long_mode(welcomemessage, LV_LABEL_LONG_SROLL_CIRC); /*Circular scroll*/ lv_obj_set_width(welcomemessage, lv_disp_get_hor_res( NULL )); lv_label_set_text(welcomemessage, "GARAGE DOOR STATE"); lv_obj_align(welcomemessage, btn1, LV_ALIGN_CENTER, 0, -60); // lv_demo_printer(); } void loop() { lv_task_handler(); /* let the GUI do its work */ int packetSize = LoRa2.parsePacket(); if (packetSize) { // received a packet Serial.print("Received packet '"); // tft.print("Received packet '"); // read packet while (LoRa2.available()) { String LoRaData = LoRa2.readString(); Serial.println(LoRaData); const char* conv_my_str = LoRaData.c_str(); if(LoRaData == "L02I"){ lv_obj_t * led1 = lv_led_create(lv_scr_act(), NULL); lv_obj_align(led1, NULL, LV_ALIGN_CENTER, -80, 0); lv_led_off(led1); /*Copy the previous LED and set a brightness*/ lv_obj_t * led2 = lv_led_create(lv_scr_act(), led1); lv_obj_align(led2, NULL, LV_ALIGN_CENTER, 0, 0); lv_led_set_bright(led2, 190); /*Copy the previous LED and switch it ON*/ lv_obj_t * led3 = lv_led_create(lv_scr_act(), led1); lv_obj_align(led3, NULL, LV_ALIGN_CENTER, 80, 0); lv_led_on(led3); } else if(LoRaData == "O02I"){ lv_obj_t * led1 = lv_led_create(lv_scr_act(), NULL); lv_obj_align(led1, NULL, LV_ALIGN_CENTER, -80, 0); lv_led_on(led1); /*Copy the previous LED and set a brightness*/ lv_obj_t * led2 = lv_led_create(lv_scr_act(), led1); lv_obj_align(led2, NULL, LV_ALIGN_CENTER, 0, 0); lv_led_set_bright(led2, 190); /*Copy the previous LED and switch it ON*/ lv_obj_t * led3 = lv_led_create(lv_scr_act(), led1); lv_obj_align(led3, NULL, LV_ALIGN_CENTER, 80, 0); lv_led_off(led3); } /* Create simple label */ lv_obj_t *label = lv_label_create(lv_scr_act(), NULL); lv_label_set_text(label, conv_my_str); lv_obj_align(label, NULL, LV_ALIGN_CENTER, 0, 0); // tft.println(LoRaData); // counter = counter+10; } } yield(); }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Hi,
carrying on from: #290.
I have managed to implement code that works but crashes within 24 hours. Did anybody find a fix for this issue?
I am using lgvl but I am sure the issue is related to SPI.
Here is the code that works for while and then crashes:
The text was updated successfully, but these errors were encountered: