Hallo ihr schlauen Menschen. Ich habe mir ein waveshare esp 32 7inch geholt. Ich habe das gleiche Projekt schonmal mit dem arduino umgesetzt nur ist mir da der Bildschirm zu klein deshalb jetzt den 7zoll. Ich habe allerdings hier das Problem dass der Touch irgendwie nicht funktioniert. Der gt911 ist allerdings aktiviert.
Ich habe mal hier den Sketch den ich in der arduino Ide hoch lade. Wie gesagt das klappt auch alles super, nur beim Touch hängt sich irgendwie alles auf. .
Ich hoffe auf euer Schwarmwissen. Die Suchfunktion hatte ich bereits verwendet aber ich hab nichts ähnliches gefunden. Komisch ist übrigens das im Benchmark Demo alles perfekt auf dem Board klappt. Nur nicht im selbst hochgeladen Sketch.
'''
#include <Arduino.h>
#include <Waveshare_ST7262_LVGL.h>
#include <lvgl.h>
int isOn = 1;
lv_obj_t *scr_main, *scr_settings;
lv_obj_t *btn_flaschen[6];
lv_color_t flaschen_colors[6];
void setup()
{
Serial.begin(115200);
Serial.println("Initialize display and touchscreen");
lcd_init(); // Initialisiere das Display
Serial.println("Create UI");
// Lock the mutex for thread-safety
lvgl_port_lock(-1);
// Erstelle die Startseite
create_start_page();
// Unlock the mutex
lvgl_port_unlock();
}
void loop()
{
lv_task_handler(); // Verarbeite LVGL Aufgaben
delay(5);
}
// Funktion für die Startseite
void create_start_page()
{
// Hintergrund und Layout
scr_main = lv_scr_act();
lv_obj_clean(scr_main);
// Überschrift
lv_obj_t *label_title = lv_label_create(scr_main);
lv_obj_set_style_text_font(label_title, &lv_font_montserrat_24, 0);
lv_label_set_text(label_title, "Mix-o-mat");
lv_obj_align(label_title, LV_ALIGN_TOP_MID, 0, 20);
// Knöpfe für Flasche 1 bis 6
for (int i = 0; i < 6; i++)
{
btn_flaschen[i] = lv_btn_create(scr_main);
lv_obj_set_size(btn_flaschen[i], 180, 100);
lv_obj_align(btn_flaschen[i], LV_ALIGN_CENTER, (i % 3) * 220 - 220, (i / 3) * 150 - 50);
lv_obj_t *label = lv_label_create(btn_flaschen[i]);
char btn_label[10];
sprintf(btn_label, "Flasche %d", i + 1);
lv_label_set_text(label, btn_label);
lv_obj_center(label);
flaschen_colors[i] = lv_color_hex(0x0000FF); // Standardfarbe Blau
lv_obj_set_style_bg_color(btn_flaschen[i], flaschen_colors[i], 0);
}
// Button für das Einstellungsmenü
lv_obj_t *btn_settings = lv_btn_create(scr_main);
lv_obj_set_size(btn_settings, 150, 70);
lv_obj_align(btn_settings, LV_ALIGN_TOP_RIGHT, -30, 20);
lv_obj_t *label_settings = lv_label_create(btn_settings);
lv_label_set_text(label_settings, "Einstellungen");
lv_obj_center(label_settings);
lv_obj_add_event_cb(btn_settings, settings_btn_event_cb, LV_EVENT_CLICKED, NULL);
// Fußzeile
lv_obj_t *label_footer = lv_label_create(scr_main);
lv_obj_set_style_text_font(label_footer, &lv_font_montserrat_12, 0);
lv_label_set_text(label_footer, "Design by Christian Rapp");
lv_obj_align(label_footer, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
}
// Callback-Funktion für den "Einstellungen"-Knopf
void settings_btn_event_cb(lv_event_t *e)
{
create_settings_page();
}
// Funktion für die Einstellungsseite
void create_settings_page()
{
scr_settings = lv_obj_create(NULL); // Erstelle eine neue Seite
lv_scr_load(scr_settings); // Lade die Einstellungsseite
// Überschrift
lv_obj_t *label_title = lv_label_create(scr_settings);
lv_obj_set_style_text_font(label_title, &lv_font_montserrat_24, 0);
lv_label_set_text(label_title, "Einstellungen");
lv_obj_align(label_title, LV_ALIGN_TOP_MID, 0, 20);
// Knöpfe für die Flaschen-Einstellungen
for (int i = 0; i < 6; i++)
{
btn_flaschen[i] = lv_btn_create(scr_settings);
lv_obj_set_size(btn_flaschen[i], 180, 100);
lv_obj_align(btn_flaschen[i], LV_ALIGN_CENTER, (i % 3) * 220 - 220, (i / 3) * 150 - 50);
lv_obj_t *label = lv_label_create(btn_flaschen[i]);
char btn_label[10];
sprintf(btn_label, "Flasche %d", i + 1);
lv_label_set_text(label, btn_label);
lv_obj_center(label);
lv_obj_set_style_bg_color(btn_flaschen[i], flaschen_colors[i], 0); // Die Farbe der Flaschen
lv_obj_add_event_cb(btn_flaschen[i], change_bottle_event_cb, LV_EVENT_CLICKED, (void *)i);
}
// Kalibrieren-Knopf
lv_obj_t *btn_calibrate = lv_btn_create(scr_settings);
lv_obj_set_size(btn_calibrate, 150, 50);
lv_obj_align(btn_calibrate, LV_ALIGN_BOTTOM_LEFT, 30, -70);
lv_obj_t *label_calibrate = lv_label_create(btn_calibrate);
lv_label_set_text(label_calibrate, "Kalibrieren");
lv_obj_center(label_calibrate);
lv_obj_add_event_cb(btn_calibrate, calibrate_btn_event_cb, LV_EVENT_CLICKED, NULL);
// Reinigen-Knopf
lv_obj_t *btn_clean = lv_btn_create(scr_settings);
lv_obj_set_size(btn_clean, 150, 50);
lv_obj_align(btn_clean, LV_ALIGN_BOTTOM_MID, 0, -70);
lv_obj_t *label_clean = lv_label_create(btn_clean);
lv_label_set_text(label_clean, "Reinigen");
lv_obj_center(label_clean);
lv_obj_add_event_cb(btn_clean, clean_btn_event_cb, LV_EVENT_CLICKED, NULL);
// Speichern und Ende-Knopf
lv_obj_t *btn_save = lv_btn_create(scr_settings);
lv_obj_set_size(btn_save, 150, 50);
lv_obj_align(btn_save, LV_ALIGN_BOTTOM_RIGHT, -30, -70);
lv_obj_t *label_save = lv_label_create(btn_save);
lv_label_set_text(label_save, "Speichern & Ende");
lv_obj_center(label_save);
lv_obj_add_event_cb(btn_save, save_btn_event_cb, LV_EVENT_CLICKED, NULL);
}
// Event-Callback für das Ändern der Flaschenfarbe und des Namens
void change_bottle_event_cb(lv_event_t *e)
{
int index = (int)lv_event_get_user_data(e);
// Hier den Code zum Ändern der Flaschenfarbe oder des Namens hinzufügen
Serial.printf("Ändere Flasche %d\n", index + 1);
}
// Event-Callback für den Kalibrieren-Knopf
void calibrate_btn_event_cb(lv_event_t *e)
{
Serial.println("Kalibrieren gedrückt");
// Hier den Code zum Kalibrieren hinzufügen
}
// Event-Callback für den Reinigen-Knopf
void clean_btn_event_cb(lv_event_t *e)
{
Serial.println("Reinigen gedrückt");
// Hier den Code zum Reinigen hinzufügen
}
// Event-Callback für den Speichern & Ende-Knopf
void save_btn_event_cb(lv_event_t *e)
{
Serial.println("Speichern & Ende gedrückt");
lv_scr_load(scr_main); // Zurück zur Startseite
} '''