Adafruit character display basics are working with LcdMenu library
This commit is contained in:
parent
d9f03d0a2d
commit
9f1ce934e4
5 changed files with 142 additions and 36 deletions
74
lib/ui/TrainUi.hpp
Normal file
74
lib/ui/TrainUi.hpp
Normal file
|
@ -0,0 +1,74 @@
|
|||
/** \File TrainUi.hpp
|
||||
* \copyright (c) 2025 len0rd
|
||||
* \date 2025-02-09
|
||||
*
|
||||
* Menu and LCD UI/rotary encoder for train controller
|
||||
*/
|
||||
#ifndef __TRAINUI_H__
|
||||
#define __TRAINUI_H__
|
||||
#include <Arduino.h>
|
||||
#include <SimpleRotary.h>
|
||||
#include "AdafruitVfdDisplay.hpp"
|
||||
#include "LcdMenu.h"
|
||||
#include "Serial.h"
|
||||
#include "input/SimpleRotaryAdapter.h"
|
||||
#include "renderer/CharacterDisplayRenderer.h"
|
||||
|
||||
MENU_SCREEN(mainScreen,
|
||||
mainItems,
|
||||
ITEM_BASIC("Item Eins"),
|
||||
ITEM_BASIC("Item Zwei"),
|
||||
ITEM_BASIC("Item Drei"));
|
||||
|
||||
#define ROT_ENC_A_PIN PIN_D6
|
||||
#define ROT_ENC_B_PIN PIN_D7
|
||||
#define ROT_ENC_BUTTON_PIN PIN_D8
|
||||
|
||||
#define DISP_NUM_ROWS 2
|
||||
#define DISP_NUM_COLS 16
|
||||
|
||||
class TrainUi {
|
||||
public:
|
||||
TrainUi()
|
||||
: m_lcdUart{_UART2_},
|
||||
m_disp(m_lcdUart),
|
||||
m_renderer(&m_disp, DISP_NUM_COLS, DISP_NUM_ROWS),
|
||||
m_menu(m_renderer),
|
||||
m_rotEnc(ROT_ENC_A_PIN, ROT_ENC_B_PIN, ROT_ENC_BUTTON_PIN),
|
||||
m_rotaryInput(&m_menu, &m_rotEnc) {}
|
||||
|
||||
inline void setup() {
|
||||
m_lcdUart.begin(57600);
|
||||
while (!m_lcdUart)
|
||||
;
|
||||
|
||||
// m_disp.show();
|
||||
// m_disp.clear();
|
||||
// m_disp.drawBlinker();
|
||||
m_renderer.begin();
|
||||
m_menu.setScreen(mainScreen);
|
||||
}
|
||||
|
||||
inline void loop() {
|
||||
// m_disp.clear();
|
||||
// // uint8_t clearCmd[] = {0xfe, 0x58, 0xfe, 0x48};
|
||||
// // m_lcdUart.write_raw(clearCmd, sizeof(clearCmd));
|
||||
|
||||
// char toPrint[16] = {};
|
||||
// snprintf(toPrint, 16, "enc: %d %d", m_rotEnc.rotate(), m_rotEnc.push());
|
||||
// m_disp.draw(toPrint);
|
||||
// m_lcdUart.print("howdy do");
|
||||
m_rotaryInput.observe();
|
||||
}
|
||||
|
||||
private:
|
||||
UART& m_lcdUart;
|
||||
AdafruitVfdDisplay m_disp;
|
||||
CharacterDisplayRenderer m_renderer;
|
||||
LcdMenu m_menu;
|
||||
|
||||
SimpleRotary m_rotEnc;
|
||||
SimpleRotaryAdapter m_rotaryInput;
|
||||
};
|
||||
|
||||
#endif /* __TRAINUI_H__ */
|
Loading…
Add table
Add a link
Reference in a new issue