Hx1230(ste2007) u8glib или u8g2

Тема в разделе "Микроконтроллеры AVR", создана пользователем Funny59, 1 дек 2021.

  1. Funny59

    Funny59 Нерд

    Писал свою библиотеку для управления дисплеем, но не хватает толку грамотно ее реализовать. Решил использовать u8g2.
    Вот такая инициализация должна быть судя по https://github.com/olikraus/u8g2/wiki/u8g2setupc
    Код (C++):
    u8g2_Setup_hx1230_96x68_2(u8g2, rotation, u8x8_byte_4wire_sw_spi, uC specific) [page buffer, size = 192 bytes]
    Но не совсем понимаю, что надо в uC specific передать?
     
  2. parovoZZ

    parovoZZ Гуру

    Так в мануале все описано. Структура там видимо какая то. Проще всего в редакторе кода перейти на описание функции и там посмотреть.
     
  3. Funny59

    Funny59 Нерд

    Перешел я на arduino, дисплей заработал, но с оговоркой. Работает только часть дисплея.
    [​IMG]

    Код (C++):
    #include <Arduino.h>
    #include <U8g2lib.h>
    #include <LIS302DL.H>

    const uint8_t LIGHT = 12;
    U8G2_HX1230_96X68_1_3W_SW_SPI  u8g2(U8G2_R0, 13, 11, 10, 9);
    LIS302DL sens(0x1c,40000);

    void setup() {
      u8g2.begin();
      pinMode(LIGHT, OUTPUT);
      digitalWrite(LIGHT, LOW);
      sens.turnOn();
      sens.xOn();
      sens.yOn();
      sens.zOn();
      sens.highSpeed();
    }

    void loop() {
      u8g2.clearBuffer();
      u8g2.setFont(u8g2_font_haxrcorp4089_t_cyrillic );
      // u8g2.drawStr(0, 7, "Hello World123!");
      // u8g2.drawStr(0, 15, "Привет мир789!");

      u8g2.setCursor(0, 10);
      u8g2.print(sens.readX() * 180.0, 1);

      u8g2.setCursor(32, 10);
      u8g2.print(sens.readY() * 180.0, 1);

      u8g2.setCursor(64, 10);
      u8g2.print(sens.readZ() * 180.0, 1);

      u8g2.sendBuffer();
      delay(250);
    }
    Если использовать U8G2_HX1230_96X68_1_3W_SW_SPI работают первые 8 строк, если U8G2_HX1230_96X68_2_3W_SW_SPI то первые 16, U8G2_HX1230_96X68_F_3W_SW_SPI не работает из-за нехватки оперативной памяти