P5 smd 64x32 и arduino mega 2560

Тема в разделе "Arduino & Shields", создана пользователем StSergey, 28 апр 2021.

  1. StSergey

    StSergey Нуб

    Добрый день.
    Залил в Mega 2560 пример для матрицы 64х32, но изображение выводиться в двух половинах 32х32 одинаковое наложенное друг на друга.
    p5_smd.jpg
     
  2. b707

    b707 Гуру

    неправильно подключили или матрица с другой разводкой
     
  3. StSergey

    StSergey Нуб

    Я предполагал, что неправильно подключил. Перепроверил ещё раз. Не помогло.
    Матрица с интерфейсом HUB75. Думал биты адресации залипли, но нет.
     
  4. b707

    b707 Гуру

    покажите фото обратной стороны матрицы в хорошем качестве, схему подключения и код
     
  5. StSergey

    StSergey Нуб

    На выходе А3 уровень сигнала (по осциллографу) сильно просаживается при подключении к матрице p5_o.jpg
     
  6. StSergey

    StSergey Нуб

    upload_2021-4-28_15-49-2.png Схема подключения
     
  7. StSergey

    StSergey Нуб

    ну неужели это трудно?

    [​IMG]
    Код (Text):
    #include <RGBmatrixPanel.h>


    #define CLK 11 // USE THIS ON ARDUINO MEGA
    #define OE   9
    #define LAT 10
    #define A   A0
    #define B   A1
    #define C   A2
    #define D   A3

    RGBmatrixPanel matrix(A, B, C, D, CLK, LAT, OE, false, 64);

    void setup() {

      matrix.begin();

      // draw a pixel in solid white
      matrix.drawPixel(0, 0, matrix.Color333(7, 7, 7));
      delay(500);

      // fix the screen with green
      matrix.fillRect(0, 0, matrix.width(), matrix.height(), matrix.Color333(0, 7, 0));
      delay(500);

      // draw a box in yellow
      matrix.drawRect(0, 0, matrix.width(), matrix.height(), matrix.Color333(7, 7, 0));
      delay(500);

      // draw an 'X' in red
      matrix.drawLine(0, 0, matrix.width()-1, matrix.height()-1, matrix.Color333(7, 0, 0));
      matrix.drawLine(matrix.width()-1, 0, 0, matrix.height()-1, matrix.Color333(7, 0, 0));
      delay(500);

      // draw a blue circle
      matrix.drawCircle(10, 10, 10, matrix.Color333(0, 0, 7));
      delay(500);

      // fill a violet circle
      matrix.fillCircle(40, 21, 10, matrix.Color333(7, 0, 7));
      delay(500);

      // fill the screen with 'black'
      matrix.fillScreen(matrix.Color333(0, 0, 0));

      // draw some text!
      matrix.setTextSize(1);     // size 1 == 8 pixels high
      matrix.setTextWrap(false); // Don't wrap at end of line - will do ourselves

      matrix.setCursor(8, 0);    // start at top left, with 8 pixel of spacing
      uint8_t w = 0;
      char *str = "AdafruitIndustries";
      for (w=0; w<8; w++) {
        matrix.setTextColor(Wheel(w));
        matrix.print(str[w]);
      }
      matrix.setCursor(2, 8);    // next line
      for (w=8; w<18; w++) {
        matrix.setTextColor(Wheel(w));
        matrix.print(str[w]);
      }
      matrix.println();
      //matrix.setTextColor(matrix.Color333(4,4,4));
      //matrix.println("Industries");
      matrix.setTextColor(matrix.Color333(7,7,7));
      matrix.println("LED MATRIX!");

      // print each letter with a rainbow color
      matrix.setTextColor(matrix.Color333(7,0,0));
      matrix.print('3');
      matrix.setTextColor(matrix.Color333(7,4,0));
      matrix.print('2');
      matrix.setTextColor(matrix.Color333(7,7,0));
      matrix.print('x');
      matrix.setTextColor(matrix.Color333(4,7,0));
      matrix.print('6');
      matrix.setTextColor(matrix.Color333(0,7,0));
      matrix.print('4');
      matrix.setCursor(34, 24);
      matrix.setTextColor(matrix.Color333(0,7,7));
      matrix.print('*');
      matrix.setTextColor(matrix.Color333(0,4,7));
      matrix.print('R');
      matrix.setTextColor(matrix.Color333(0,0,7));
      matrix.print('G');
      matrix.setTextColor(matrix.Color333(4,0,7));
      matrix.print('B');
      matrix.setTextColor(matrix.Color333(7,0,4));
      matrix.print('*');

      // whew!
    }

    void loop() {
      // Do nothing -- image doesn't change
    }


    // Input a value 0 to 24 to get a color value.
    // The colours are a transition r - g - b - back to r.
    uint16_t Wheel(byte WheelPos) {
      if(WheelPos < 8) {
       return matrix.Color333(7 - WheelPos, WheelPos, 0);
      } else if(WheelPos < 16) {
       WheelPos -= 8;
       return matrix.Color333(0, 7-WheelPos, WheelPos);
      } else {
       WheelPos -= 16;
       return matrix.Color333(WheelPos, 0, 7 - WheelPos);
      }
    }
     
    Последнее редактирование модератором: 29 апр 2021
  8. StSergey

    StSergey Нуб

    Проверил две матрицы у обеих пин "D" (А3) закорочен на землю.
     
  9. b707

    b707 Гуру

    похоже на то.
    Судя по этому факту (закороченности D на землю) и по надписям на матрице - она на 8 сканов.
    Тогда эта библиотека и этот код не подойдут
    Хотя я прежде не встречал матриц высотой в 32 пикселя. чтобы они были не 16 сканов...
     
  10. StSergey

    StSergey Нуб

    Вот и я удивлён
     
  11. b707

    b707 Гуру

    а продавец что говорит? В описании матрицы не указан режим сканирования?
     
  12. StSergey

    StSergey Нуб

    продавец пропал.
     
  13. b707

    b707 Гуру

    если у вас таких матриц много - можно попробовать подправить библиотеку.
    Но если одна-две - то проще купить стандартные
     
  14. parovoZZ

    parovoZZ Гуру

    Алихотрон?
     
  15. StSergey

    StSergey Нуб

    таких матриц много, целая видеопанель. Некоторые матрицы на панели выходят из строя. Хотел просто протестировать их.
     
  16. StSergey

    StSergey Нуб

    может кто подскажет как поправить библиотеку для режима сканирования 1/8?
     
  17. Ariadna-on-Line

    Ariadna-on-Line Гуру

  18. b707

    b707 Гуру

    Во-первых, какую именно библиотеку - их много. Какой контроллер вы используете?
    И во-вторых - я вряд ли смогу обьяснить на пальцах. Переделывать там нужно довольно много, причем самое сложное - что иногда приходится менять чуть ли не весь код вывода, а иногда - всего несколько строк. То есть заранее сказать нельзя. Делать это, не имея матрицы в руках - дохлый номер.
    Если Вы в Москве - могу взять у вас одну матрицу и попробовать запустить. Но это будет стоить где-то 7-10 тыс, в зависимости от сложности
     
  19. b707

    b707 Гуру

    пусть попробует. Может повезет, а может нет.
    Я занимаюсь этой темой два года - как оказалось, внешне похожих матриц просто дофига видов, несовместимых одна с другой.
    Похоже китаезы специально меняют разводку матриц, чтобы они были совместимы только с одним конкретным контроллером(в смысле не микроконтроллером, типа ардуино - а специальным контроллером для ЛЕД-матриц, которые в изобилии выпускаются китайцами)
     
    Ariadna-on-Line нравится это.