SSD1306UiDemo.ino 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * HelTec Automation(TM) ESP32 Series Dev boards OLED draw UI test code
  3. *
  4. * - Some OLED draw UI function test;
  5. *
  6. * by Aaron.Lee from HelTec AutoMation, ChengDu, China
  7. * 成都惠利特自动化科技有限公司
  8. * www.heltec.cn
  9. *
  10. * this project also realess in GitHub:
  11. * https://github.com/HelTecAutomation/Heltec_ESP32
  12. */
  13. #include "Arduino.h"
  14. #include "heltec.h"
  15. #include "oled/OLEDDisplayUi.h"
  16. #include "images.h"
  17. #define DEMO_DURATION 3000
  18. typedef void (*Demo)(void);
  19. extern Heltec_ESP32 Heltec;
  20. OLEDDisplayUi ui( Heltec.display );
  21. void msOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {
  22. display->setTextAlignment(TEXT_ALIGN_RIGHT);
  23. display->setFont(ArialMT_Plain_10);
  24. display->drawString(128, 0, String(millis()));
  25. }
  26. void drawFrame1(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  27. display->drawXbm(x, y, BT_width, BT_height, BT_bits);
  28. display->drawXbm(x + 12 + 1, y, WIFI_width, WIFI_height, WIFI_bits);
  29. display->drawXbm(x + 108, y, BAT_width, BAT_height, BAT_bits);
  30. display->drawXbm(x + 34, y + 14, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits);
  31. }
  32. void drawFrame2(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  33. display->drawXbm(x, y, BT_width, BT_height, BT_bits);
  34. display->drawXbm(x + 12 + 1, y, WIFI_width, WIFI_height, WIFI_bits);
  35. display->drawXbm(x + 108, y, BAT_width, BAT_height, BAT_bits);
  36. display->drawXbm(x + 34, y + 12, LoRa_Logo_width, LoRa_Logo_height, LoRa_Logo_bits);
  37. }
  38. void drawFrame3(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  39. display->drawXbm(x, y + 5, HelTec_LOGO_width, HelTec_LOGO_height, HelTec_LOGO_bits);
  40. }
  41. void drawFrame4(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {
  42. display->setTextAlignment(TEXT_ALIGN_LEFT);
  43. display->setFont(ArialMT_Plain_16);
  44. display->drawString(x, y, "HelTec");
  45. display->setFont(ArialMT_Plain_10);
  46. display->drawString(x, y + 25, "HelTec AutoMation");
  47. display->drawString(x, y + 35, "www.heltec.cn");
  48. }
  49. FrameCallback frames[] = { drawFrame1, drawFrame2, drawFrame3, drawFrame4 };
  50. int frameCount = 4;
  51. void setup() {
  52. Heltec.begin(true /*DisplayEnable Enable*/, false /*LoRa Disable*/, true /*Serial Enable*/);
  53. ui.setTargetFPS(30);
  54. // Customize the active and inactive symbol
  55. ui.setActiveSymbol(activeSymbol);
  56. ui.setInactiveSymbol(inactiveSymbol);
  57. // You can change this to
  58. // TOP, LEFT, BOTTOM, RIGHT
  59. ui.setIndicatorPosition(BOTTOM);
  60. // Defines where the first frame is located in the bar.
  61. ui.setIndicatorDirection(LEFT_RIGHT);
  62. // You can change the transition that is used
  63. // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_UP, SLIDE_DOWN
  64. ui.setFrameAnimation(SLIDE_LEFT);
  65. // Add frames
  66. ui.setFrames(frames, frameCount);
  67. // Initialising the UI will init the display too.
  68. ui.init();
  69. Heltec.display->flipScreenVertically();
  70. }
  71. void loop() {
  72. int remainingTimeBudget = ui.update();
  73. if (remainingTimeBudget > 0) {
  74. // You can do some work here
  75. // Don't do stuff if you are below your
  76. // time budget.
  77. delay(remainingTimeBudget);
  78. }
  79. }