Sth 31 подключить к mege

Тема в разделе "Arduino & Shields", создана пользователем Михаил123, 7 авг 2020.

  1. akl

    akl Гуру

    переткни плату в юсб и посмотри в диспетчере устройств появляется ли она
    в ком-портах
     
  2. проводок подвылез..

    Код (C++):
    if (! sht31.begin(0x70)
    проверка прошла, подключу данные...
     
  3. akl

    akl Гуру

    если не заработает, то придется нагуглить другую библиотеку, по умолчанию под нужную модель заточенную.
     

  4. да, хрень пошла...
    Failed to read temperature
    Failed to read humidity
     
  5. akl

    akl Гуру

    а че за модуль? как выглядит и че на нем написано (можно сфоткать), и где куплен
    придется либо гуглить другую библиотеку либо покурить даташыт
     
  6. akl

    akl Гуру

    погуглил поверхностно - везде библиотеки только с адресами 0x44 0x45. фиг знает почему оно так. Если так ничего и не нейдешь, то по идее можно переточить библиотеку https://www.mouser.com/datasheet/2/682/Sensirion_04202018_HT_DS_SHTC3_Preliminiary_D2-1323493.pdf
    там скорее всего команды какие-нибудь отличаются или типа того. колупать короче надо.

    мне кстати этот же робошоп.спб.ру продал компас с такой же фигнёй - другой более редкой микросхемой. благо я сумел нагуглить к нему подходяющую библиотеку и не пришлось ломать мозг
     
  7. проще слить эти хрени
     
  8. akl

    akl Гуру

    вот так ардуино делает людей лентяями. там всего то две страницы даташита прочитать и несколько команд через i2с отправить.
     
    b707 нравится это.
  9. b707

    b707 Гуру

    akl, кому вы это пишете :) Человек не сумел сам найти на меге контакты SCL SDA - и он вам библиотеку будет переписывать?
     
  10. никогда этим не занимался, но интересно прочитать про это. а лучше посмотреть пример такой работы
     
  11. parovoZZ

    parovoZZ Гуру

    Un_ka и Михаил123 нравится это.
  12. У-ГУ.
    слабо написать?
    или опять будут отговорки про книжки?

    кстати, из всех долгих общений, еще ни разу, кроме Akl, по взрослому никто ни разу не помог. так, чисто, марафет был. Все вопросы решал сам.

    напрашиваются выводы...
     
  13. еще одну штуку пытаюсь запустить, но - нет (OLED дисплей 128х64)
    никаких признаков...

    Код (C++):
    // OLED_I2C_3D_Cube
    // Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
    // web: http://www.RinkyDinkElectronics.com/
    //
    // A quick demo of how to use my OLED_I2C library to rotate a 3D cube.
    // The average FPS (Frames Per Second) will be displayed on the screen.
    //
    // NOTE: The FPS counter will overflow if left for an extended amount of time.
    //
    // To use the hardware I2C (TWI) interface of the Arduino you must connect
    // the pins as follows:
    //
    // Arduino Uno/2009:
    // ----------------------
    // Display:  SDA pin   -> Arduino Analog 4 or the dedicated SDA pin
    //           SCL pin   -> Arduino Analog 5 or the dedicated SCL pin
    //
    // Arduino Leonardo:
    // ----------------------
    // Display:  SDA pin   -> Arduino Digital 2 or the dedicated SDA pin
    //           SCL pin   -> Arduino Digital 3 or the dedicated SCL pin
    //
    // Arduino Mega:
    // ----------------------
    // Display:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA pin
    //           SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL pin
    //
    // Arduino Due:
    // ----------------------
    // Display:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
    //           SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
    //
    // The internal pull-up resistors will be activated when using the
    // hardware I2C interfaces.
    //
    // You can connect the OLED display to any available pin but if you use
    // any other than what is described above the library will fall back to
    // a software-based, TWI-like protocol which will require exclusive access
    // to the pins used, and you will also have to use appropriate, external
    // pull-up resistors on the data and clock signals.
    //

    #include <OLED_I2C.h>

    OLED  myOLED(SDA, SCL, 8);

    extern uint8_t SmallFont[];

    double vectors[8][3] = {{20, 20, 20},{-20, 20, 20},{-20, -20, 20},{20, -20, 20},{20, 20, -20},{-20, 20, -20},{-20, -20, -20},{20, -20, -20}};

    double perspective = 100.0f;
    int deltaX, deltaY, deltaZ, iter = 0;
    long stime, fps = 0, frames = 0;

    void setup()
    {
      randomSeed(analogRead(0));

      myOLED.begin();
      myOLED.setFont(SmallFont);
    }

    void loop()
    {
      stime = micros();
      myOLED.clrScr();
      drawVectors();
      if (iter == 0)
      {
        deltaX = random(7) - 3;
        deltaY = random(7) - 3;
        deltaZ = random(7) - 3;
        iter   = random(250) + 5;
      }
      rotateX(deltaX);
      rotateY(deltaY);
      rotateZ(deltaZ);
      iter--;
      fps += 1000000 / (micros()-stime);
      frames++;
      myOLED.printNumI(fps / frames, 0, 0, 3);  // Print average FPS on screen
      myOLED.update();
    }

    int translateX(double x, double z)
    {
      return (int)((x + 64) + (z * (x / perspective)));
    }

    int translateY(double y, double z)
    {
      return (int)((y + 32) + (z * (y / perspective)));
    }

    void rotateX(int angle)
    {
      double rad, cosa, sina, Yn, Zn;
      rad = angle * PI / 180;
      cosa = cos(rad);
      sina = sin(rad);
      for (int i = 0; i < 8; i++)
      {
        Yn = (vectors[i][1] * cosa) - (vectors[i][2] * sina);
        Zn = (vectors[i][1] * sina) + (vectors[i][2] * cosa);
        vectors[i][1] = Yn;
        vectors[i][2] = Zn;
      }
    }

    void rotateY(int angle)
    {
      double rad, cosa, sina, Xn, Zn;
      rad = angle * PI / 180;
      cosa = cos(rad);
      sina = sin(rad);
      for (int i = 0; i < 8; i++)
      {
        Xn = (vectors[i][0] * cosa) - (vectors[i][2] * sina);
        Zn = (vectors[i][0] * sina) + (vectors[i][2] * cosa);
        vectors[i][0] = Xn;
        vectors[i][2] = Zn;
      }
    }

    void rotateZ(int angle)
    {
      double rad, cosa, sina, Xn, Yn;
      rad = angle * PI / 180;
      cosa = cos(rad);
      sina = sin(rad);
      for (int i = 0; i < 8; i++)
      {
        Xn = (vectors[i][0] * cosa) - (vectors[i][1] * sina);
        Yn = (vectors[i][0] * sina) + (vectors[i][1] * cosa);
        vectors[i][0] = Xn;
        vectors[i][1] = Yn;
      }
    }

    void drawVectors()
    {
      myOLED.drawLine(translateX(vectors[0][0], vectors[0][2]), translateY(vectors[0][1], vectors[0][2]), translateX(vectors[1][0], vectors[1][2]), translateY(vectors[1][1], vectors[1][2]));
      myOLED.drawLine(translateX(vectors[1][0], vectors[1][2]), translateY(vectors[1][1], vectors[1][2]), translateX(vectors[2][0], vectors[2][2]), translateY(vectors[2][1], vectors[2][2]));
      myOLED.drawLine(translateX(vectors[2][0], vectors[2][2]), translateY(vectors[2][1], vectors[2][2]), translateX(vectors[3][0], vectors[3][2]), translateY(vectors[3][1], vectors[3][2]));
      myOLED.drawLine(translateX(vectors[3][0], vectors[3][2]), translateY(vectors[3][1], vectors[3][2]), translateX(vectors[0][0], vectors[0][2]), translateY(vectors[0][1], vectors[0][2]));
      myOLED.drawLine(translateX(vectors[4][0], vectors[4][2]), translateY(vectors[4][1], vectors[4][2]), translateX(vectors[5][0], vectors[5][2]), translateY(vectors[5][1], vectors[5][2]));
      myOLED.drawLine(translateX(vectors[5][0], vectors[5][2]), translateY(vectors[5][1], vectors[5][2]), translateX(vectors[6][0], vectors[6][2]), translateY(vectors[6][1], vectors[6][2]));
      myOLED.drawLine(translateX(vectors[6][0], vectors[6][2]), translateY(vectors[6][1], vectors[6][2]), translateX(vectors[7][0], vectors[7][2]), translateY(vectors[7][1], vectors[7][2]));
      myOLED.drawLine(translateX(vectors[7][0], vectors[7][2]), translateY(vectors[7][1], vectors[7][2]), translateX(vectors[4][0], vectors[4][2]), translateY(vectors[4][1], vectors[4][2]));
      myOLED.drawLine(translateX(vectors[0][0], vectors[0][2]), translateY(vectors[0][1], vectors[0][2]), translateX(vectors[4][0], vectors[4][2]), translateY(vectors[4][1], vectors[4][2]));
      myOLED.drawLine(translateX(vectors[1][0], vectors[1][2]), translateY(vectors[1][1], vectors[1][2]), translateX(vectors[5][0], vectors[5][2]), translateY(vectors[5][1], vectors[5][2]));
      myOLED.drawLine(translateX(vectors[2][0], vectors[2][2]), translateY(vectors[2][1], vectors[2][2]), translateX(vectors[6][0], vectors[6][2]), translateY(vectors[6][1], vectors[6][2]));
      myOLED.drawLine(translateX(vectors[3][0], vectors[3][2]), translateY(vectors[3][1], vectors[3][2]), translateX(vectors[7][0], vectors[7][2]), translateY(vectors[7][1], vectors[7][2]));
    }
    дисплей не реагирует, но сканером устройств его видно. что может быть?
     
  14. так ардуино - не самоцель. Везде есть фанаты. но зачем ломать копья, если можно взять другие датчики? хотя еще ищу варианты.
    ведь, народ их берёт... значит, запускают.
     
  15. issaom

    issaom Гуру

    Контроллер у дисплея какой ? ну или ссылку где брали?
     
  16. issaom

    issaom Гуру

    Поюзайте библиотеки от ADAFRUIT правда робожоп контроллер не указал не факт, что SSD1306 будет работать....
     
  17. уже кучу всего перепробовал... (((
    помню, полгода назад подобный запускал. долго колдовал. сейчас уж ни не вспомнить как