Buongiorno a tutti ,
ho sviluppato un'applicazione funzionante su ArduinoGiga con GigaDisplay,
per questioni di tempo ciclo avrei la necessità di utilizzare i 2 core di Arduino Giga in maniera separata.
Ho sviluppato lo sketch M4 in cui vorrei far girare tutta la gestione del Display e lo sketch M7 in cui faccio girare il resto del programma .
per la comunicazione tra M4 e M7 utilizzo le librerie RPC
Dunque non riesco a capire perchè lo sketch M4 non funziona .
il codice si blocca nel momento in cui inizializzo il display
non eseguo il l'inizializzazione del display il codice viene eseguito tutto entro nel loop ed eseguo il codice.
perchè non mi funziona il display ?
di seguito allego il codice che ho utilizzato.
#include "Arduino.h"
#include <RPC.h>
#include "Arduino_H7_Video.h"
#include "lvgl.h"
#include "Arduino_GigaDisplayTouch.h"
//#include <SPI.h>
//#include <DigitalOut.h>
//Arduino Giga R1 Access Point UDP
//librerie Gestione USB
Arduino_H7_Video Display(800, 480, GigaDisplayShield);
Arduino_GigaDisplayTouch TouchDetector;
//Dimensoni Pulsanti 50 in meno rispetto alle dimensioni della griglia
int X_Pulsanti = 196;
int Y_Pulsanti = 170;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
RPC.begin(); // boot M4
RPC.println("M4 Avviato");
Display.begin();
TouchDetector.begin();
setupDisplay();
InizializzaVariabili();
}
void setupDisplay(){
RPC.println("SetupDisplayIN");
//Display & Grid Setup
lv_obj_t* screen = lv_obj_create(lv_scr_act());
lv_obj_set_size(screen, Display.width(), Display.height());
//Dimensoni Pulsanti
//int X_Pulsanti = 320;
//int Y_Pulsanti = 170;
static lv_coord_t col_dsc[] = {246 , 246,246, LV_GRID_TEMPLATE_LAST };
static lv_coord_t row_dsc[] = { 215, 215, 215, 215,215,215, LV_GRID_TEMPLATE_LAST };
lv_obj_t* grid = lv_obj_create(lv_scr_act());
lv_obj_set_grid_dsc_array(grid, col_dsc, row_dsc);
lv_obj_set_size(grid, Display.width(), Display.height());
//top left
lv_obj_t* obj;
obj = lv_obj_create(grid);
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 0, 1, //column
LV_GRID_ALIGN_STRETCH, 0, 1); //row
lv_obj_t * label; //label
lv_obj_t * btn1 = lv_btn_create(obj);
lv_obj_set_size(btn1, X_Pulsanti,Y_Pulsanti);
lv_obj_center(btn1);
lv_obj_add_event_cb(btn1, btn1_event_cb, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn1);
lv_label_set_text(label, "Configurazione Pista");
lv_obj_center(label);
//bottom left
obj = lv_obj_create(grid);
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 0, 1, //column
LV_GRID_ALIGN_STRETCH, 1, 1); //row
lv_obj_t * btn2 = lv_btn_create(obj);
lv_obj_set_size(btn2, X_Pulsanti,Y_Pulsanti);
lv_obj_center(btn2);
lv_obj_add_event_cb(btn2, btn2_event_cb, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn2);
lv_label_set_text(label, "Sel DX/SX");
lv_obj_center(label);
//top right
obj = lv_obj_create(grid);
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 1, 1, //column
LV_GRID_ALIGN_STRETCH, 0, 1); //row
lv_obj_t * btn3 = lv_btn_create(obj);
lv_obj_set_size(btn3, X_Pulsanti,Y_Pulsanti);
lv_obj_center(btn3);
lv_obj_add_event_cb(btn3, btn3_event_cb, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn3);
lv_label_set_text(label, "Dispositivi Connessi");
lv_obj_center(label);
//bottom right
obj = lv_obj_create(grid);
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 1, 1, //column
LV_GRID_ALIGN_STRETCH, 1, 1); //row
lv_obj_t * btn4 = lv_btn_create(obj);
lv_obj_set_size(btn4, X_Pulsanti,Y_Pulsanti);
lv_obj_center(btn4);
lv_obj_add_event_cb(btn4, btn4_event_cb, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn4);
lv_label_set_text(label, "Misura");
lv_obj_center(label);
//Pulsante usb
obj = lv_obj_create(grid);
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 2,1, //column
LV_GRID_ALIGN_STRETCH, 0, 1); //row
lv_obj_t * btn5 = lv_btn_create(obj);
lv_obj_set_size(btn5, X_Pulsanti,Y_Pulsanti);
lv_obj_center(btn5);
lv_obj_add_event_cb(btn5, btn5_event_cb, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn5);
lv_label_set_text(label, "USB");
lv_obj_center(label);
//Pulsante Vuoto
obj = lv_obj_create(grid);
lv_obj_set_grid_cell(obj, LV_GRID_ALIGN_STRETCH, 2,1, //column
LV_GRID_ALIGN_STRETCH, 1, 1); //row
lv_obj_t * btn6 = lv_btn_create(obj);
lv_obj_set_size(btn6, X_Pulsanti,Y_Pulsanti);
lv_obj_center(btn6);
lv_obj_add_event_cb(btn6, btn6_event_cb, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn6);
lv_label_set_text(label, "Vuoto");
lv_obj_center(label);
paginaAttiva = paginaHome;
RPC.println("SetupDisplayOUT");
}
void loop() {
// put your main code here, to run repeatedly:
lv_timer_handler();
RPC.println(millis());
delay(1000);
}