Не могу никак разобраться с подключением светодиодной матрицы SureElectronics LED 16x32. На матрице 16 пиновый вход: 1 cs 2 clk 3 nc 4nc 5 wr 6 nc 7 Data 8 Gnd 9 nc 10 nc Оставшиеся 6 5 вольт и gnd В драйвере : ht1632c.h следующее описание подключения: #define HT1632_DATA_PIN 10 /* Arduino digital pin connected to display DATA pin */ #define HT1632_WRCLK_PIN 11 /* Arduino digital pin connected to display WRCLK pin */ #define HT1632_CS_PIN 4 /* Arduino digital pin connected to display CS1 pin */ wrclk на матрице нет, подключил так: pin 10 - data pin 11 - wr pin 4 - cs В драйвере ht1632c.h по умалчанию стоит матрица 16x24 изменил: #define HT1632_GEOMETRY_X 24 /* display width */ #define HT1632_GEOMETRY_Y 16 /* display height */ на #define HT1632_GEOMETRY_X 32 /* display width */ #define HT1632_GEOMETRY_Y 16 /* display height */ byte _shadowram[384]; // our copy of the display's RAM на byte _shadowram[512]; // our copy of the display's RAM static const byte _fadedelay = 40; на static const byte _fadedelay = 48; вот программа: Код (Text): #include "ht1632c.h" #include <digitalWriteFast.h> // sure electronics 24x16 panel connected to pins // DATA - pin 10 // WRCLK - pin 11 // CS1 - pin 4 ht1632c panel; void setup() { byte x1 = 0; byte y1 = 4; panel.fill(x1, y1, 1); } void loop() { } Я так понимаю, что должна зажигать точку. На деле происходит хаотичное неконтролируемое зажигание всех точек и всех цветов по всей матрице:
Судя по имеющимся сигналам, не глядя в документацию, можно предположить, что (1) CS - chip select - разрешает общение с дисплеем; (2) CLK - clock - тактирует отдельные биты на последовательной шине; (5) WR - read/write - определяет направление передачи данных; (7) DATA - шина данных, гоняет биты в дисплей и обратно; Вам нужно WRCLK повесить на CLK, а WR подключить отдельно еще одним пином и контроллировать его независимо.
Судя по этому примеру http://www.arduino.cc/playground/Main/HT1632C вы правы. Плюс выяснилось, что я использовал библиотеку ht1632c.h переписанную специально под 16x24, сейчас пытаюсь использовать вот эту http://code.google.com/p/ht1632c/source/browse/ht1632c.h, но не могу найти схему подключения пинов arduino к матрице, какие куда. Получается, что должно идти 4 пина - CS, CLK, WR, DATA. Как можно из библиотеки узнать какие определены по умолчанию или как то переопределить?
Нашел в коде самой программы-примера определение портов: ht1632c ledMatrix = ht1632c(&PORTD, 7, 6, 4, 5, GEOM_32x16, 2); Перепробывал все комбинации, ни одна не сработала.
In you project include the library header, and instantiate HT1632C class with correct port and pin numbers. Arduino 1.0: #include<ht1632c.h> ht1632c ledMatrix = ht1632c(&PORTD,7,6,4,5, GEOM_32x16,2); Leaflab Maple, Chipkit Uno32, etc.: #include<ht1632c.h> ht1632c ledMatrix = ht1632c(7,6,4,5, GEOM_32x16,2); Note: pin numbers could be relative (0~7) to port or absolute Arduino style pin numer (0~14, A0-A5) with the last version of the library. Вот так написано в документации. //PORT, data, wr, clk, cs ht1632c dotmatrix = ht1632c(&PORTD, 7, 6, 4, 5, GEOM_32x16, 2); Вот такой пример расшифровки я нашел. Может быть это распиновка не Arduino, а самой матрицы? Потому что у меня на матрице распиновка: data - 7 wr - 5 clk - 2 cs - 1
LEDmatrix7219_Counter_Demo_16Wide.ino: In function 'void setup()': LEDmatrix7219_Counter_Demo_16Wide:28: error: no matching function for call to 'LEDmatrix7219:rint(char)' LEDmatrix7219_Counter_Demo_16Wide.ino:28:24: note: candidates are: In file included from LEDmatrix7219_Counter_Demo_16Wide.ino:17:0: C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:103:8: note: void LEDmatrix7219:rint(char*, int, int) void print(char *st, int x, int y = 0); ^ C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:103:8: note: candidate expects 3 arguments, 1 provided C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:104:8: note: void LEDmatrix7219:rint(String, int, int) void print(String st, int x, int y = 0); ^ C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:104:8: note: candidate expects 3 arguments, 1 provided C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:105:8: note: void LEDmatrix7219:rint(long int, int, int, int, char) void print(long num, int x, int y = 0, int length = 0, char filler = ' '); ^ C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:105:8: note: candidate expects 5 arguments, 1 provided LEDmatrix7219_Counter_Demo_16Wide.ino: In function 'void loop()': LEDmatrix7219_Counter_Demo_16Wide:34: error: no matching function for call to 'LEDmatrix7219:rint(char)' LEDmatrix7219_Counter_Demo_16Wide.ino:34:24: note: candidates are: In file included from LEDmatrix7219_Counter_Demo_16Wide.ino:17:0: C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:103:8: note: void LEDmatrix7219:rint(char*, int, int) void print(char *st, int x, int y = 0); ^ C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:103:8: note: candidate expects 3 arguments, 1 provided C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:104:8: note: void LEDmatrix7219:rint(String, int, int) void print(String st, int x, int y = 0); ^ C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:104:8: note: candidate expects 3 arguments, 1 provided C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:105:8: note: void LEDmatrix7219:rint(long int, int, int, int, char) void print(long num, int x, int y = 0, int length = 0, char filler = ' '); ^ C:\Program Files (x86)\Arduino\libraries\LEDmatrix7219/LEDmatrix7219.h:105:8: note: candidate expects 5 arguments, 1 provided no matching function for call to 'LEDmatrix7219:rint(char)' чё ему не нравится вот код // LEDmatrix7219_Counter_Demo_16Wide // Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved // web: http://www.RinkyDinkElectronics.com/ // // A quick demo on displaying numbers // // This demo is designed for a 16x8 matrix (2 pcs 8x8 matrices) // // It is assumed that the first MAX7219 is connected to // the following pins using a levelshifter to get the // correct voltage to the module. // Data - Pin 5 // Clock - Pin 6 // Load - Pin 7 // #include <LEDmatrix7219.h> LEDmatrix7219 myMatrix(5, 6, 7); extern uint8_t TextFont[]; void setup() { myMatrix.begin(2); myMatrix.disableSleep(); myMatrix.setFont(TextFont); myMatrix.print('5'); // If you want leading spaces instead of leading zeros you can replace '0' with ';'. delay(1000); } void loop() { myMatrix.print('5'); // If you want leading spaces instead of leading zeros you can replace '0' with ';'. delay(100); }
Это не баг, это фича. И еще много таких фокусов. например Код (Text): [I]что-то[/I] что-то будет наклонным шрифтом А для кода используйте обрамление Код (Text): [CODE] код [/ CODE] Только без пробела между слэшем и CODE Или пользуйте соответствующую кнопку