Добрый день, уважаемые форумчане. Имеется в наличии Arduino MEGA и 8*8 матрица на контроллере MAX7219ENG, такая: Столкнулся с такой проблемой, что при попытке вывести что-либо на матрицу, это всё выводится вверх ногами. Как и положено, вернулся к самому простому, запустил пример из библиотеки, но и тут всё вверх ногами... PHP: //We always have to include the library #include "LedControl.h" /* Now we need a LedControl to work with. ***** These pin numbers will probably not work with your hardware ***** pin 12 is connected to the DataIn pin 11 is connected to the CLK pin 10 is connected to LOAD We have only a single MAX72XX. */ LedControl lc=LedControl(12,11,10,1); /* we always wait a bit between updates of the display */ unsigned long delaytime=1000; void setup() { /* The MAX72XX is in power-saving mode on startup, we have to do a wakeup call */ lc.shutdown(0,false); /* Set the brightness to a medium values */ lc.setIntensity(0,8); /* and clear the display */ lc.clearDisplay(0); } /* This method will display the characters for the word "Arduino" one after the other on the matrix. (you need at least 5x7 leds to see the whole chars) */ void writeArduinoOnMatrix() { /* here is the data for the characters */ byte a[5]={B01111110,B10001000,B10001000,B10001000,B01111110}; byte r[5]={B00111110,B00010000,B00100000,B00100000,B00010000}; byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110}; byte u[5]={B00111100,B00000010,B00000010,B00000100,B00111110}; byte i[5]={B00000000,B00100010,B10111110,B00000010,B00000000}; byte n[5]={B00111110,B00010000,B00100000,B00100000,B00011110}; byte o[5]={B00011100,B00100010,B00100010,B00100010,B00011100}; /* now display them one by one with a small delay */ lc.setRow(0,0,a[0]); lc.setRow(0,1,a[1]); lc.setRow(0,2,a[2]); lc.setRow(0,3,a[3]); lc.setRow(0,4,a[4]); delay(delaytime); lc.setRow(0,0,r[0]); lc.setRow(0,1,r[1]); lc.setRow(0,2,r[2]); lc.setRow(0,3,r[3]); lc.setRow(0,4,r[4]); delay(delaytime); lc.setRow(0,0,d[0]); lc.setRow(0,1,d[1]); lc.setRow(0,2,d[2]); lc.setRow(0,3,d[3]); lc.setRow(0,4,d[4]); delay(delaytime); lc.setRow(0,0,u[0]); lc.setRow(0,1,u[1]); lc.setRow(0,2,u[2]); lc.setRow(0,3,u[3]); lc.setRow(0,4,u[4]); delay(delaytime); lc.setRow(0,0,i[0]); lc.setRow(0,1,i[1]); lc.setRow(0,2,i[2]); lc.setRow(0,3,i[3]); lc.setRow(0,4,i[4]); delay(delaytime); lc.setRow(0,0,n[0]); lc.setRow(0,1,n[1]); lc.setRow(0,2,n[2]); lc.setRow(0,3,n[3]); lc.setRow(0,4,n[4]); delay(delaytime); lc.setRow(0,0,o[0]); lc.setRow(0,1,o[1]); lc.setRow(0,2,o[2]); lc.setRow(0,3,o[3]); lc.setRow(0,4,o[4]); delay(delaytime); lc.setRow(0,0,0); lc.setRow(0,1,0); lc.setRow(0,2,0); lc.setRow(0,3,0); lc.setRow(0,4,0); delay(delaytime); } void loop() { writeArduinoOnMatrix(); } Подключение проверял, все провода подключены на свои места. В чём может быть проблема?
Я не совсем верно выразился, всё отображается зеркалированно по вертикали, грубо говоря "R" отображается как "Я" вверх ногами, "d" как "b", и т.д.,(если принять низ за ту часть, где расположен контроллер.
Для d вы записываете вот что Код (Text): byte d[5]={B00011100,B00100010,B00100010,B00010010,B11111110}; Код (Text): 00011100 00100010 00100010 00010010 11111110 Код (Text): @@@ @ @ @ @ @ @ @@@@@@@ Это либо буква b, которую повернули на 90 градусов влево Либо буква d, повёрнутая влево на 90 градусов, и отражённая горизонтально Нужно обратиться к библиотеке, чтобы понять, почему она в таком формате рисует
Получается, чтобы это заработало, нужно вместо Код (Text): lc.setRow(0,0,d[0]); lc.setRow(0,1,d[1]); lc.setRow(0,2,d[2]); lc.setRow(0,3,d[3]); lc.setRow(0,4,d[4]); написать Код (Text): lc.setRow(0,0,d[4]); lc.setRow(0,1,d[3]); lc.setRow(0,2,d[2]); lc.setRow(0,3,d[1]); lc.setRow(0,4,d[0]); А библиотека решает порядок рядов в lcd матрице - где нулевой, где первый и так далее В программе они перепутаны