// DisplayLVGL900.h
#ifndef _DISPLAYLVGL900_h
#define _DISPLAYLVGL900_h
//#if defined(ARDUINO) && ARDUINO >= 100
// #include "arduino.h"
//#else
// #include "WProgram.h"
//#endif
//#include <FS.h>
//#include <LITTLEFS.h>
#include <lvgl.h>
#include <TFT_eSPI.h>
lv_style_t style_Scr;
lv_style_t style_Scr_Bed;
lv_style_t styleBtn_VorwRueckw;
lv_style_t styleBtn_VorwRueckw_pr;
lv_style_t styleBtnLbl_VorwRueckw;
lv_style_t styleBtn_Bedienung;
lv_style_t styleBtn_Bedienung_pr;
lv_style_t styleBtn_Bedienung_ch;
lv_style_t styleBtnLbl_Bedienubg;
lv_style_t style_Ueberschrift;
lv_style_t style_LblSchrift;
lv_style_t style_LblSchrift_16black;
//lv_style_t style_BedienungBtn;
lv_style_t style_btn_red;
lv_style_t style_btn_red_pr;
lv_obj_t* scr_Bedienung;
lv_obj_t* Bed_Ueberschrift;
lv_obj_t* btn_RueckwBed;
lv_obj_t* btn_VorwBed;
lv_obj_t* btnLbl_Rueckw;
lv_obj_t* btnLbl_Vorw;
lv_obj_t* btn_WP;
lv_obj_t* btnLbl_WP;
lv_obj_t* btn_VM;
lv_obj_t* btnLbl_VM;
lv_obj_t* btn_FB;
lv_obj_t* btnLbl_FB;
lv_obj_t* btn_Rad;
lv_obj_t* btnLbl_Rad;
lv_obj_t* Sli_MischerFB;
lv_obj_t* Lbl_SlidPos;
//void event_btn_Bed_cb(lv_event_t* event)
//{
// lv_obj_t* btn_ObjR;
// btn_ObjR = lv_event_get_target(event);
// lv_event_code_t code = lv_event_get_code(event);
//
// Serial.printf("Slider_State: %u\n", lv_obj_get_state(Sli_MischerFB));
//
// //falls nur Display gestellt wird --> keine events wenn Änderungen!
// if (KeineDisplayEvents) return;
//
// if (code == LV_EVENT_PRESSED)
// {
// String xx = "LV_EVENT_PRESSED";
// if (btn_ObjR == btn_RueckwBed) {
// Serial.printf("%s -- btn_RueckwBed -- %u\n", xx.c_str());
// lv_scr_load(scr_Verbrauch2);
// /* int xx = LV_STATE_PRESSED;
// xx = LV_STATE_CHECKED;
// xx = LV_BTN_STATE_CHECKED_RELEASED;
// xx = LV_BTN_STATE_PRESSED;
// xx = LV_BTN_STATE_RELEASED;
// */
// }
// else if (btn_ObjR == btn_VorwBed) {
// Serial.printf("%s -- btn_VorwBed\n", xx.c_str());
// lv_scr_load(scr_MomentanerVerbrauch);
// }
//
// else if (btn_ObjR == btn_WP) {
// Serial.printf("%s -- btn_WP\n", xx.c_str());
// if (lv_obj_get_state(btn_WP) == LV_STATE_CHECKED) {
// Waermepumpe("Off", true);
// }
// else { Waermepumpe("On", true); }
// }
//
// else if (btn_ObjR == btn_VM) {
// Serial.printf("%s -- btn_VM\n", xx.c_str());
// if (lv_obj_get_state(btn_VM) == LV_STATE_CHECKED) {
// Vissmann("Off", true);
// }
// else { Vissmann("On", true); }
//
// }
//
// else if (btn_ObjR == btn_FB) {
// Serial.printf("%s -- btn_FB\n", xx.c_str());
// if (lv_obj_get_state(btn_FB) == LV_STATE_CHECKED) {
// FussbodenPumpe("Off", true);
// }
// else { FussbodenPumpe("On", true); }
// }
//
// else if (btn_ObjR == btn_Rad) {
// Serial.printf("%s -- btn_Rad\n", xx.c_str());
// if (lv_obj_get_state(btn_Rad) == LV_STATE_CHECKED) {
// RadiatorenPumpe("Off", true);
// }
// else { RadiatorenPumpe("On", true); }
// }
// }
//
// if (btn_ObjR == Sli_MischerFB && code == LV_EVENT_VALUE_CHANGED) {
// char buf[25];
// int ValSl = lv_slider_get_value(Sli_MischerFB); /* max 3 bytes for number plus 1 null terminating byte */
// sprintf(buf, "Mischer FB auf Pos: %u", ValSl);
// Serial.printf("%s\n", buf);
// lv_label_set_text(Lbl_SlidPos, buf); /*Refresh the text*/
// // String Proz(ValSl);
// MischerGesamt(ValSl, true);
// }
//}
static void event_btn_Bed_cb(lv_event_t* e)
{
lv_event_code_t code = lv_event_get_code(e);
lv_obj_t* btn_ObjR;
btn_ObjR = lv_event_get_target(e);
if (btn_ObjR == btn_RueckwBed) { Serial.print("Button Zurueck: "); }
else if (btn_ObjR == btn_VorwBed) { Serial.print("Button Vorwaerts: "); }
if (code == LV_EVENT_CLICKED) {
Serial.println("Clicked");
}
else if (code == LV_EVENT_VALUE_CHANGED) {
Serial.println("Toggled");
}
}
void lv_example_btn_1(void)
{
lv_obj_t* label;
lv_obj_t* btn1 = lv_btn_create(lv_scr_act());
lv_obj_add_event_cb(btn1, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
lv_obj_align(btn1, LV_ALIGN_CENTER, 0, -40);
label = lv_label_create(btn1);
lv_label_set_text(label, "Button");
lv_obj_center(label);
lv_obj_t* btn2 = lv_btn_create(lv_scr_act());
lv_obj_add_event_cb(btn2, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
lv_obj_align(btn2, LV_ALIGN_CENTER, 0, 40);
lv_obj_add_flag(btn2, LV_OBJ_FLAG_CHECKABLE);
lv_obj_set_height(btn2, LV_SIZE_CONTENT);
label = lv_label_create(btn2);
lv_label_set_text(label, "Toggle");
lv_obj_center(label);
}
void ButtonStyleCreate(void)
{
/*Init the style for the default state*/
lv_style_init(&style_Scr);
lv_style_set_bg_color(&style_Scr, lv_color_hex(0x4A5352));
////style für Button Vorw und Rückwärts
lv_style_init(&styleBtn_VorwRueckw);
lv_style_set_radius(&styleBtn_VorwRueckw, 5);
lv_style_set_bg_opa(&styleBtn_VorwRueckw, LV_OPA_COVER);
lv_style_set_bg_color(&styleBtn_VorwRueckw, lv_color_hex(0xffb31a));
lv_style_set_bg_grad_color(&styleBtn_VorwRueckw, lv_color_hex(0xc2b8a3));
lv_style_set_bg_grad_dir(&styleBtn_VorwRueckw, LV_GRAD_DIR_VER);
///*Swap the colors in pressed state*/
static lv_style_t styleBtn_VorwRueckw_pr;
lv_style_init(&styleBtn_VorwRueckw_pr);
lv_style_set_bg_color(&styleBtn_VorwRueckw_pr, lv_color_hex(0xe68a00));
lv_style_set_bg_grad_color(&styleBtn_VorwRueckw_pr, lv_color_hex(0x804d00));
//**************************
lv_style_init(&style_Ueberschrift);
lv_style_set_text_font(&style_Ueberschrift, &lv_font_montserrat_24);
lv_style_set_text_color(&style_Ueberschrift, lv_color_hex(0xFFFFFF));
//**************************************************
/*Create a simple button style*/
lv_style_init(&styleBtn_Bedienung);
lv_style_set_radius(&styleBtn_Bedienung, 10);
lv_style_set_bg_opa(&styleBtn_Bedienung, LV_OPA_COVER);
lv_style_set_bg_color(&styleBtn_Bedienung, lv_color_hex(0x00ff00));
lv_style_set_bg_grad_color(&styleBtn_Bedienung, lv_color_hex(0x008000));
lv_style_set_bg_grad_dir(&styleBtn_Bedienung, LV_GRAD_DIR_VER);
/*Add a border*/
lv_style_set_border_color(&styleBtn_Bedienung, lv_color_white());
lv_style_set_border_opa(&styleBtn_Bedienung, LV_OPA_70);
lv_style_set_border_width(&styleBtn_Bedienung, 2);
lv_style_set_transform_height(&styleBtn_Bedienung, 4);
lv_style_set_transform_width(&styleBtn_Bedienung, 4);
/* lv_style_set_transition_time(&styleBtn_Bedienung, LV_STATE_DEFAULT, 300);
lv_style_set_transition_path(&styleBtn_Bedienung, LV_STATE_DEFAULT, &path);
lv_style_set_transition(&styleBtn_Bedienung,300)*/
/*Swap the colors in pressed state*/
lv_style_init(&styleBtn_Bedienung_pr);
lv_style_set_bg_color(&styleBtn_Bedienung_pr, lv_color_hex(0x33ff33));
lv_style_set_bg_grad_color(&styleBtn_Bedienung_pr, lv_color_hex(0x003300));
/*Make the button smaller when pressed*/
lv_style_set_transform_height(&styleBtn_Bedienung_pr, -5);
lv_style_set_transform_width(&styleBtn_Bedienung_pr, -10);
lv_style_init(&styleBtn_Bedienung_ch);
lv_style_set_bg_color(&styleBtn_Bedienung, lv_color_hex(0xff704d));
lv_style_set_bg_grad_color(&styleBtn_Bedienung, lv_color_hex(0x991f00));
lv_style_set_bg_grad_dir(&styleBtn_Bedienung, LV_GRAD_DIR_VER);
/*Set the text style*/
lv_style_set_text_color(&styleBtn_Bedienung, lv_color_white());
/*Create a red style. Change only some colors.*/
lv_style_init(&style_btn_red);
lv_style_set_bg_color(&style_btn_red, lv_palette_darken(LV_PALETTE_RED, 2));
lv_style_set_bg_grad_color(&style_btn_red, lv_color_hex(0x660000));
lv_style_init(&style_btn_red_pr);
lv_style_set_bg_color(&style_btn_red_pr, lv_color_hex(0x660000));
lv_style_set_bg_grad_color(&style_btn_red_pr, lv_palette_darken(LV_PALETTE_RED, 2));
lv_style_set_text_color(&style_btn_red, lv_color_white());
}
void Bedienung(void)
{ // Bedienung der Heizung
scr_Bedienung = lv_obj_create(NULL);
lv_obj_add_style(scr_Bedienung, &style_Scr, 0);
btn_RueckwBed = lv_btn_create(scr_Bedienung);
lv_obj_remove_style_all(btn_RueckwBed);
lv_obj_add_style(btn_RueckwBed, &styleBtn_VorwRueckw, 0);
lv_obj_add_style(btn_RueckwBed, &styleBtn_VorwRueckw_pr, LV_STATE_PRESSED);
lv_obj_set_size(btn_RueckwBed, 50, 30);
btnLbl_Rueckw = lv_label_create(btn_RueckwBed);
lv_obj_add_style(btnLbl_Rueckw, &style_LblSchrift_16black, 0);
lv_label_set_text(btnLbl_Rueckw, "<");
lv_obj_center(btnLbl_Rueckw);
delay(1);
lv_obj_align(btn_RueckwBed, LV_ALIGN_TOP_LEFT, 10, 10);
lv_obj_add_event_cb(btn_RueckwBed, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
//*******************************************
btn_VorwBed = lv_btn_create(scr_Bedienung);
lv_obj_remove_style_all(btn_VorwBed);
lv_obj_add_style(btn_VorwBed, &styleBtn_VorwRueckw, 0);
lv_obj_add_style(btn_VorwBed, &styleBtn_VorwRueckw_pr, LV_STATE_PRESSED);
lv_obj_set_size(btn_VorwBed, 50, 30);
btnLbl_Vorw = lv_label_create(btn_VorwBed);
lv_obj_add_style(btnLbl_Vorw, &style_LblSchrift_16black, 0);
lv_label_set_text(btnLbl_Vorw, ">");
lv_obj_center(btnLbl_Vorw);
delay(1);
lv_obj_align(btn_VorwBed, LV_ALIGN_TOP_RIGHT, -10, 10);
lv_obj_add_event_cb(btn_VorwBed, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
Bed_Ueberschrift = lv_label_create(scr_Bedienung);
lv_style_set_text_color(&style_Ueberschrift, lv_color_white());
lv_label_set_text(Bed_Ueberschrift, "Bedienung");
lv_obj_add_style(Bed_Ueberschrift, &style_Ueberschrift, 0);
delay(1);
lv_obj_align(Bed_Ueberschrift, LV_ALIGN_TOP_MID, 0, 15);
//******************************* WP *********************************
btn_WP = lv_btn_create(scr_Bedienung);
lv_obj_remove_style_all(btn_WP); /*Remove the styles coming from the theme*/
/*Set its size*/
lv_obj_add_style(btn_WP, &styleBtn_Bedienung, LV_STATE_DEFAULT);
lv_obj_add_style(btn_WP, &styleBtn_Bedienung_pr, LV_STATE_CHECKED);
lv_obj_set_size(btn_WP, 140, 40);
lv_obj_add_flag(btn_WP, LV_OBJ_FLAG_CHECKABLE);
// lv_obj_add_state(btn_WP, styleBtn_Bedienung, LV_STATE_DEFAULT); //--> toggle colour between green and red
// lv_obj_add_state(btn_WP, LV_STATE_DEFAULT); //--> toggle colour between green and red
// holen des aktuellen Status --> lv_btn_get_state(btn)
// setzen des Status mit ---> lv_btn_set_state(btn, LV_BTN_STATE_...)
btnLbl_WP = lv_label_create(btn_WP);
lv_label_set_text(btnLbl_WP, "WP");
lv_obj_center(btnLbl_WP);
delay(2);
lv_obj_align(btn_WP, LV_ALIGN_TOP_LEFT, 10, 50);
lv_obj_add_event_cb(btn_WP, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
//******************************* VM *********************************
btn_VM = lv_btn_create(scr_Bedienung);
lv_obj_remove_style_all(btn_VM); /*Remove the styles coming from the theme*/
/*Set its size*/
lv_obj_add_style(btn_VM, &styleBtn_Bedienung, LV_STATE_DEFAULT);
lv_obj_add_style(btn_VM, &styleBtn_Bedienung_pr, LV_STATE_CHECKED);
lv_obj_set_size(btn_VM, 140, 40);
lv_obj_add_flag(btn_VM, LV_OBJ_FLAG_CHECKABLE);
// lv_obj_add_state(btn_VM, styleBtn_Bedienung, LV_STATE_DEFAULT); //--> toggle colour between green and red
// lv_obj_add_state(btn_VM, LV_STATE_DEFAULT); //--> toggle colour between green and red
// holen des aktuellen Status --> lv_btn_get_state(btn)
// setzen des Status mit ---> lv_btn_set_state(btn, LV_BTN_STATE_...)
btnLbl_WP = lv_label_create(btn_VM);
lv_label_set_text(btnLbl_WP, "VM");
lv_obj_center(btnLbl_WP);
delay(2);
lv_obj_align(btn_VM, LV_ALIGN_TOP_RIGHT, -10, 50);
lv_obj_add_event_cb(btn_VM, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
//******************************* FB *********************************
btn_FB = lv_btn_create(scr_Bedienung);
lv_obj_remove_style_all(btn_FB); /*Remove the styles coming from the theme*/
/*Set its size*/
lv_obj_add_style(btn_FB, &styleBtn_Bedienung, LV_STATE_DEFAULT);
lv_obj_add_style(btn_FB, &styleBtn_Bedienung_pr, LV_STATE_CHECKED);
lv_obj_set_size(btn_FB, 140, 40);
lv_obj_add_flag(btn_FB, LV_OBJ_FLAG_CHECKABLE);
// lv_obj_add_state(btn_FB, styleBtn_Bedienung, LV_STATE_DEFAULT); //--> toggle colour between green and red
// lv_obj_add_state(btn_FB, LV_STATE_DEFAULT); //--> toggle colour between green and red
// holen des aktuellen Status --> lv_btn_get_state(btn)
// setzen des Status mit ---> lv_btn_set_state(btn, LV_BTN_STATE_...)
btnLbl_FB = lv_label_create(btn_FB);
lv_label_set_text(btnLbl_FB, "FB");
lv_obj_center(btnLbl_FB);
delay(2);
lv_obj_align(btn_FB, LV_ALIGN_TOP_RIGHT, -10, 100);
lv_obj_add_event_cb(btn_FB, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
//******************************* Rad *********************************
btn_Rad = lv_btn_create(scr_Bedienung);
lv_obj_remove_style_all(btn_Rad); /*Remove the styles coming from the theme*/
/*Set its size*/
lv_obj_add_style(btn_Rad, &styleBtn_Bedienung, LV_STATE_DEFAULT);
lv_obj_add_style(btn_Rad, &styleBtn_Bedienung_pr, LV_STATE_CHECKED);
lv_obj_set_size(btn_Rad, 140, 40);
lv_obj_add_flag(btn_Rad, LV_OBJ_FLAG_CHECKABLE);
// lv_obj_add_state(btn_Rad, styleBtn_Bedienung, LV_STATE_DEFAULT); //--> toggle colour between green and red
// lv_obj_add_state(btn_Rad, LV_STATE_DEFAULT); //--> toggle colour between green and red
// holen des aktuellen Status --> lv_btn_get_state(btn)
// setzen des Status mit ---> lv_btn_set_state(btn, LV_BTN_STATE_...)
btnLbl_Rad = lv_label_create(btn_Rad);
lv_label_set_text(btnLbl_Rad, "Rad");
lv_obj_center(btnLbl_Rad);
delay(2);
lv_obj_align(btn_Rad, LV_ALIGN_TOP_LEFT, 10, 100);
lv_obj_add_event_cb(btn_Rad, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
//*****************************************************************
/* Create a slider in the center of the display */
Sli_MischerFB = lv_slider_create(scr_Bedienung);
lv_obj_set_width(Sli_MischerFB, 320 - 45); /*Set the width*/
lv_obj_set_height(Sli_MischerFB, 30);
lv_obj_align(Sli_MischerFB, LV_ALIGN_BOTTOM_MID, 0, -50);
lv_obj_add_event_cb(Sli_MischerFB, event_btn_Bed_cb, LV_EVENT_ALL, NULL);
/* Create a label below the slider */
Lbl_SlidPos = lv_label_create(scr_Bedienung);
lv_label_set_text(Lbl_SlidPos, "Mischer FB auf Pos: 0");
lv_obj_add_style(Lbl_SlidPos, &style_LblSchrift, 0);
delay(2);
lv_obj_align(Lbl_SlidPos, LV_ALIGN_BOTTOM_MID, 0, 10);
}
#endif
Loading
ili9341-cap-touch
ili9341-cap-touch