Странное поведение светодиодной матрицы

Тема в разделе "Arduino & Shields", создана пользователем egordorichev, 9 фев 2017.

  1. egordorichev

    egordorichev Гик

    Здравствуйте!

    Приехали мне из китая вот такие матрицы:
    [​IMG]
    Используя стастью (https://randomnerdtutorials.com/guide-for-8x8-dot-matrix-max7219-with-arduino-pong-game/) зашил в нее приведенный код:

    Код (C++):
    /*
    Created by Rui Santos
    All the resources for this project:
    http://randomnerdtutorials.com/
    */


    #include "LedControl.h"
    #include "binary.h"

    /*
    DIN connects to pin 12
    CLK connects to pin 11
    CS connects to pin 10
    */

    LedControl lc=LedControl(12,11,10,1);

    // delay time between faces
    unsigned long delaytime=1000;

    // happy face
    byte hf[8]= {B00111100,B01000010,B10100101,B10000001,B10100101,B10011001,B01000010,B00111100};
    // neutral face
    byte nf[8]={B00111100, B01000010,B10100101,B10000001,B10111101,B10000001,B01000010,B00111100};
    // sad face
    byte sf[8]= {B00111100,B01000010,B10100101,B10000001,B10011001,B10100101,B01000010,B00111100};

    void setup() {
      lc.shutdown(0,false);
      // Set brightness to a medium value
      lc.setIntensity(0,8);
      // Clear the display
      lc.clearDisplay(0);
    }

    void drawFaces(){
      // Display sad face
      lc.setRow(0,0,sf[0]);
      lc.setRow(0,1,sf[1]);
      lc.setRow(0,2,sf[2]);
      lc.setRow(0,3,sf[3]);
      lc.setRow(0,4,sf[4]);
      lc.setRow(0,5,sf[5]);
      lc.setRow(0,6,sf[6]);
      lc.setRow(0,7,sf[7]);
      delay(delaytime);

      // Display neutral face
      lc.setRow(0,0,nf[0]);
      lc.setRow(0,1,nf[1]);
      lc.setRow(0,2,nf[2]);
      lc.setRow(0,3,nf[3]);
      lc.setRow(0,4,nf[4]);
      lc.setRow(0,5,nf[5]);
      lc.setRow(0,6,nf[6]);
      lc.setRow(0,7,nf[7]);
      delay(delaytime);

      // Display happy face
      lc.setRow(0,0,hf[0]);
      lc.setRow(0,1,hf[1]);
      lc.setRow(0,2,hf[2]);
      lc.setRow(0,3,hf[3]);
      lc.setRow(0,4,hf[4]);
      lc.setRow(0,5,hf[5]);
      lc.setRow(0,6,hf[6]);
      lc.setRow(0,7,hf[7]);
      delay(delaytime);
    }

    void loop(){
      drawFaces();
    }
    [​IMG]

    Но матрица, вместо ожидаемых рожиц, показывает разнообразные каракули. Подключение перепроверял. Также проверил на нескольких модулях. Где моя ошибка? Спасибо!

    Когда очищаю матрицу, некотые светодиоды продолжают гореть.
     
    Последнее редактирование: 13 фев 2017
  2. Karabas

    Karabas Гик

    Было такое, когда в верх ногами вставил матрицу.
     
    egordorichev нравится это.
  3. egordorichev

    egordorichev Гик

    Хм, попробую перепаять. Вообще странно, ведь она в таком случае не долдна работать... хотя..
     
  4. egordorichev

    egordorichev Гик

    Я собрал еще одну наоборот.... особо ничего не поменялось.
     
  5. egordorichev

    egordorichev Гик

    Допустим, но когда я просто все светодиоды отключаю в коде (clear()) и больше ничего не делаю, часть всеравно светиться.
     
  6. REm

    REm Гик

    переделай код. Задействуй только один элемент матрицы
     
  7. egordorichev

    egordorichev Гик

    Он один только и задействован.

    LedControl lc = LedControl(12,11,10,1);

    Последний параметер - кол-во дисплеев.
     
  8. REm

    REm Гик

    кошмар. когда так запутанно, беру тестер в руки.
     
  9. egordorichev

    egordorichev Гик

    Да, я тоже взял. Выяснилось, что матрицы битые :( Ну ладно, бывает, спасибо!
     
  10. ostrov

    ostrov Гуру

    Саму матрицу без платы этой проверить можете? Найти где там общие аноды или катоды.
     
  11. egordorichev

    egordorichev Гик

    Да, да. Я уже проверил. Сама матрица сломана. Всем спасибо!
     
  12. ostrov

    ostrov Гуру

    С трудом представляю как ее можно сломать.