domenica 9 novembre 2025

Compilare libreria M5Unified in progetti IDF

Volevo unire un progetto degli esempi dell'SDK IDF con la libreria M5Unified e mi sono accorto che non e' cosi' banale in quanto gli esempi sono scritti in C mentre M5Unified e' in C++


 

Si puo' ovviare creando un wrapper 

 idf.py create-project m5stick_test

 idf.py add-dependency "m5stack/m5unified"

 nel folder main si creano i file m5_wrapper.c e m5_wrapper.h

 m5_wrapper.c

#include <M5Unified.h>
#include "m5_wrapper.h"

extern "C" {
// Initialize M5Unified (C++ side)
void m5_init(void) {
auto cfg = M5.config();
M5.begin(cfg);
}

// Print a C string
void m5_print(const char *text) {
M5.Display.println(text);
}

// Print an integer
void m5_print_int(int value) {
M5.Display.println(value);
}

void m5_set_text_size(int size) {
M5.Display.setTextSize(size);
}

void m5_set_cursor(int x, int y) {
M5.Display.setCursor(x, y);
}

void m5_clear(void) {
M5.Display.clear();
}
}

 m5_wrapper.c

#pragma once

#ifdef __cplusplus
extern "C" {
#endif

void m5_init(void);
void m5_print(const char *text);
void m5_print_int(int value);
void m5_set_text_size(int size);
void m5_set_cursor(int x, int y);
void m5_clear(void);

#ifdef __cplusplus
}
#endif

a questo punto si modifica il file CMakeLists.txt aggiungendo il file m5_wrapper.cpp

CMakeLists.txt 

idf_component_register(SRCS "hid_host_example.c" "m5_wrapper.cpp"
INCLUDE_DIRS "."
PRIV_REQUIRES usb esp_driver_gpio
)


 

nel programma main.c si include l'header

#include "m5_wrapper.h"


 e poi si inizializza

m5_init();


 

idf.py -p /dev/ttyUSB0 -b 115200 flash monitor 

 

 

Nessun commento:

Posta un commento

Microfoni Kinect1

Ho trovato quasi per caso su Internet che il Kinect 1 ha un array di 4 microfoni che permettono di determinare la direzione del suono (ed es...