diff --git a/lib/astra-ui-arduino/astra_rocket.cpp b/lib/astra-ui-arduino/astra_rocket.cpp index fcf7ead8c6873e34052104eaadaa8a13531092d2..ebcef7a8f3cf063a76170674842ad7e35fcf9d64 100644 --- a/lib/astra-ui-arduino/astra_rocket.cpp +++ b/lib/astra-ui-arduino/astra_rocket.cpp @@ -5,6 +5,7 @@ #include #include "astra_rocket.h" #include "astra_logo.h" +#include "hal_ArduCore.h" astra::Launcher* astraLauncher = new astra::Launcher(); astra::Menu* rootPage = new astra::Menu("root"); @@ -57,7 +58,7 @@ std::vector pic_3 = { astra::Menu* secondPage = new astra::Menu("secondPage", pic_3); void astraCoreInit(void) { - HAL::inject(new HALDreamCore); + HAL::inject(new HALArduCore); // HAL::delay(100); // HAL::printInfo("loading..."); @@ -100,6 +101,11 @@ void astraCoreStart(void) { } } +//for arduino standard 在主循环中使用 +void astraCoreLoop(void) { + astraLauncher->update(); +} + void astraCoreTest(void) { HAL::canvasClear(); HAL::setDrawType(1); diff --git a/lib/astra-ui-arduino/astra_rocket.h b/lib/astra-ui-arduino/astra_rocket.h index 8ef13deb83cfac462b637590b85faa7fac750371..e3a5918a12fb6927792c64e4938f10e4328b4b76 100644 --- a/lib/astra-ui-arduino/astra_rocket.h +++ b/lib/astra-ui-arduino/astra_rocket.h @@ -17,6 +17,7 @@ void astraCoreInit(void); void astraCoreStart(void); void astraCoreTest(void); void astraCoreDestroy(void); +void astraCoreLoop(void); /*---- C ----*/ @@ -25,7 +26,7 @@ void astraCoreDestroy(void); /*---- Cpp ----*/ #include "ui/launcher.h" -#include "../hal/hal_dreamCore/hal_dreamCore.h" +#include "hal_ArduCore.h" extern astra::Launcher* astraLauncher; extern astra::Menu* rootPage; diff --git a/lib/astra-ui-arduino/config/config.h b/lib/astra-ui-arduino/config/config.h index 0b4c8b20eea31f75486dd6202b2c81962e6ce175..64a93f649597d53f5e5ef7c52b4f0649afe61584 100644 --- a/lib/astra-ui-arduino/config/config.h +++ b/lib/astra-ui-arduino/config/config.h @@ -7,7 +7,7 @@ #define ASTRA_CORE_SRC_SYSTEM_H_ #include "cstdint" -#include "../../hal/hal_dreamCore/components/oled/graph_lib/u8g2/u8g2.h" +#include namespace astra { /** @@ -75,10 +75,10 @@ struct config { float logoTextHeight = 14; //logo文字高度 float logoCopyRightHeight = 8; //logo文字高度 uint8_t logoStarNum = 16; //logo星星数量 - const uint8_t *logoTitleFont = u8g2_font_Cascadia; - const uint8_t *logoCopyRightFont = u8g2_font_myfont; + const uint8_t *logoTitleFont = u8g2_font_4x6_tr; + const uint8_t *logoCopyRightFont = u8g2_font_4x6_tr; - const uint8_t *mainFont = u8g2_font_myfont; + const uint8_t *mainFont = u8g2_font_4x6_tr; }; static config &getUIConfig() { diff --git a/lib/astra-ui-arduino/hal_ArduCore.cpp b/lib/astra-ui-arduino/hal_ArduCore.cpp index 00094e87ec8833458ba89a388b24f17bcde4845d..b69f3164867830be15f9fcd0ab8fcb65c4afdf4e 100644 --- a/lib/astra-ui-arduino/hal_ArduCore.cpp +++ b/lib/astra-ui-arduino/hal_ArduCore.cpp @@ -7,7 +7,9 @@ //原生用法,尚不明确如何获取buffer //原生也足够好用了,没啥必要(爆论) //void HALArduCore::_u8g2_init(){ +// U8G2_SSD1306_128X64_NONAME_F_HW_I2C *u8g2; // u8g2 = new U8G2_SSD1306_128X64_NONAME_F_HW_I2C(U8G2_R0, DISPLAY_SCL, DISPLAY_SDA); +// u8g2.begin(); //} void HALArduCore::_u8g2_init(){ @@ -15,7 +17,11 @@ void HALArduCore::_u8g2_init(){ U8G2_R0, u8x8_byte_arduino_hw_i2c, u8x8_gpio_and_delay_arduino); // 初始化 u8g2 结构体 - /*TODO:根据几个接口多态化init函数,例如u8x8_SetPin_4Wire_SW_SPI这个接口等等*/ + u8x8_SetPin_HW_I2C(u8g2_GetU8x8(&canvasBuffer), U8X8_PIN_NONE, DISPLAY_SCL, DISPLAY_SDA); + + /*T-ODO:根据几个接口多态化init函数,例如u8x8_SetPin_4Wire_SW_SPI这个接口等等*/ + + //以下代码等于u8g2.begin() u8g2_InitDisplay(&canvasBuffer); // 根据所选的芯片进行初始化工作,初始化完成后,显示器处于关闭状态 u8g2_SetPowerSave(&canvasBuffer, 0); // 打开显示器 u8g2_ClearBuffer(&canvasBuffer); @@ -24,7 +30,7 @@ void HALArduCore::_u8g2_init(){ u8g2_SetFontMode(&canvasBuffer, 1); /*字体模式选择*/ u8g2_SetFontDirection(&canvasBuffer, 0); /*字体方向选择*/ - u8g2_SetFont(&canvasBuffer, u8g2_font_myfont); /*字库选择*/ + u8g2_SetFont(&canvasBuffer, u8g2_font_4x6_tr); /*字库选择*/ //请找一个合适的字体,随意咯 } @@ -129,8 +135,10 @@ void HALArduCore::_drawRFrame(float _x, float _y, float _w, float _h, float _r) u8g2_DrawRFrame(&canvasBuffer, (int16_t)std::round(_x), (int16_t)std::round(_y), (int16_t)std::round(_w), (int16_t)std::round(_h), (int16_t)std::round(_r)); } + bool HALArduCore::_getKey(key::KEY_INDEX _keyIndex) { - return HAL::_getKey(_keyIndex); + if (_keyIndex == key::KEY_0) return digitalRead(KEY_PIN_1); + if (_keyIndex == key::KEY_1) return !digitalRead(KEY_PIN_2);; } void HALArduCore::_updateConfig() { @@ -155,7 +163,7 @@ unsigned long HALArduCore::_getRandomSeed() { //get_tick是否和millis冲突了 unsigned long HALArduCore::_getTick() { - return HAL::_getTick(); + return _millis(); } unsigned long HALArduCore::_millis() { @@ -165,3 +173,8 @@ unsigned long HALArduCore::_millis() { void HALArduCore::_delay(unsigned long _mill) { delay(_mill); } +//有关于外设初始化在主函数,不放在astra内 +/*void HALArduCore::_key_init() { + pinMode(KEY_PIN_1,INPUT); + pinMode(KEY_PIN_2,INPUT); +}*/ diff --git a/lib/astra-ui-arduino/hal_ArduCore.h b/lib/astra-ui-arduino/hal_ArduCore.h index 34564a29de4276059a666b50b59eb5c9ea82a521..ad4523273c378da185a99e5bc4e8b64c377846c1 100644 --- a/lib/astra-ui-arduino/hal_ArduCore.h +++ b/lib/astra-ui-arduino/hal_ArduCore.h @@ -8,18 +8,17 @@ #include #include "hal.h" #include +#include "U8x8lib.h" +#include "pinmap.h" - -#define DISPLAY_SCL 8 -#define DISPLAY_SDA 9 - class HALArduCore : public HAL { private: //似乎原声astra不兼容arduino传统用法 //U8G2_SSD1306_128X64_NONAME_F_HW_I2C *u8g2; u8g2_t canvasBuffer {}; void _u8g2_init(); + //void _key_init(); public: inline void init() override { diff --git a/lib/astra-ui-arduino/pinmap.h b/lib/astra-ui-arduino/pinmap.h new file mode 100644 index 0000000000000000000000000000000000000000..7181d2c7416b1d425e7b78f328b826268f34d618 --- /dev/null +++ b/lib/astra-ui-arduino/pinmap.h @@ -0,0 +1,15 @@ +// +// Created by mastwet on 24-8-30. +// + +#ifndef ASTRA_ARDUINO_PINMAP_H +#define ASTRA_ARDUINO_PINMAP_H + + +#define DISPLAY_SCL PB6 +#define DISPLAY_SDA PB7 + +#define KEY_PIN_1 PA9 +#define KEY_PIN_2 PA8 + +#endif //ASTRA_ARDUINO_PINMAP_H diff --git a/lib/astra-ui-arduino/ui/element/page/item.cpp b/lib/astra-ui-arduino/ui/element/page/item.cpp index 836c322389ec7992a92eb40dbe3a3ecb04162e79..dc355ec00d937c43c8742070dbd5adaa79a7cd48 100644 --- a/lib/astra-ui-arduino/ui/element/page/item.cpp +++ b/lib/astra-ui-arduino/ui/element/page/item.cpp @@ -282,6 +282,7 @@ bool Selector::destroy() { delete this->menu; this->menu = nullptr; + return true; } void Selector::render(std::vector _camera) { diff --git a/lib/astra-ui-arduino/ui/element/page/item.h b/lib/astra-ui-arduino/ui/element/page/item.h index f8f66eee4b2c8216fa3116f390ccfa26fe36a632..77c53ec676352b103a5148e2fb6a86395ec32f1d 100644 --- a/lib/astra-ui-arduino/ui/element/page/item.h +++ b/lib/astra-ui-arduino/ui/element/page/item.h @@ -9,7 +9,7 @@ #include "cstdint" #include "string" #include -#include "../../../../../../../../Desktop/astra-ui-v0-0-2-alpha/hal/hal.h" +#include "../../../hal.h" #include "../../../config/config.h" #include diff --git a/src/main.cpp b/src/main.cpp index 91f20ab8c1b6195af27267f44673b6a0498a336b..fe1ffff11b7d7d439cea0abf3ac6e977104fedfd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,16 +1,29 @@ #include #include + #ifdef U8X8_HAVE_HW_SPI #include #endif #ifdef U8X8_HAVE_HW_I2C #include #endif + +#include "astra_rocket.h" +#include "pinmap.h" + +void device_init(); + void setup() { -// write your initialization code here + device_init(); + astraCoreInit(); } void loop() { -// write your code here + astraCoreLoop(); +} + +void device_init(){ + pinMode(KEY_PIN_1,INPUT); + pinMode(KEY_PIN_2,INPUT); } \ No newline at end of file