#define PIN_DMD_nOE 9 // D9 active low Output Enable, setting this low lights all the LEDs in the selected rows. Can pwm it at very high frequency for brightness control.
03
#define PIN_DMD_A 6 // D6
04
#define PIN_DMD_B 7 // D7
05
#define PIN_DMD_CLK 13 // D13_SCK is SPI Clock if SPI is used
06
#define PIN_DMD_SCLK 8 // D8
07
#define PIN_DMD_R_DATA 11 // D11_MOSI is SPI Master Out if SPI is used
08
//Define this chip select pin that the Ethernet W5100 IC or other SPI device uses
09
//if it is in use during a DMD scan request then scanDisplayBySPI() will exit without conflict! (and skip that scan)
10
#define PIN_OTHER_SPI_nCS 10
PIN_OTHER_SPI_nCS нужен для того чтобы scanDisplayBySPI() отрабатывала корректно при условии что на шине SPI висит допустим (Ethernet W5100 IC or other SPI) т.е. на этом пине.
А если нужно подключить параллельно несколько строк к адной ардуине, как это можно реализовать?
Можно ведь запараллелить все выходы кроме: PIN_DMD_R_DATA и PIN_DMD_CLK, а их сделать разными, и передавать разные данные на табло. Но только PIN_DMD_R_DATA всегда равен 11, а PIN_DMD_CLK = 13, не важно что я прописываю в DMD.h, она всё равно использует эти пины SPI. Можно как-то выйти из этого положения?
Имею панель RG 32x16, выглядит как ваши (не считая двух светодиодов на пиксель), на обратной стороне имеет маркировку P10(1R1G)3216-4S1. Пытаюсь управлять через arduino duemilanove. Начинал с полностью своего кода - добился вывода пикселей в нужном месте по координата. Дальше наткнулся на эту тему, и решил попробывать библиотеку DMD(чтоб не писать вывод текста самому). Подключил все как указано в DMD.h - но ни к чему не привело. Попробывал убрать следующую проверку:
... на основе своего кода который работал. Все вывелось но зеркально относительно горизонтали и инвертировано, но легко поправил. Суть не в этом.
Тесты показали( что и теоретически было ясно) что duemilanove начинает тормозить при подключение двух экранов, при трех картинка вообще замирает. Я даже не пробывал еще управлять зелеными светодиодами.
Пока едет arduino due, упражняюсь с тем что есть.
Насколько я понял библиотека использует SPI для управления панелью, и так вопрос:
- может быть такое, что панель не понимает этот протокол? или это я не понимаю что делаю?
- зачем его использовать? (меньше своего кода разрабатывать, или она быстрее, если есть собственный рабочий код отображения буфера дисплея на панель - может и нет смысла напрягаться)
Нашел библиотеку DMD2. Запустил пример Scrolling alphabet. Перед выводом очередной буквы происходит полное стирание экрана, после чего строка выводится по новым координатам плюс очередная буква. И так в цикле. Изображение выводится не плавно, а рывками. Появляется, гаснет, появляется, гаснет.
Да, скроллинг там еще не реализован, но зато все остальное! Шикарно работает. Могу предложить глянуть исходники старой либы и подглядеть как там скролл сделан и внедрить кусок кода в новую либу либо ждать пока она выйдет из стадии бэты.
Я занимаюсь производством таких бегущих строк, для управления модулями используется контроллер, его стоимость не более 2,5 тыр.
Есть специальная программа которая уже всё это делает... Количество модулей не ограничено, весь вопрос в питании этих модулей.
Я с вами не соглашусь!!! Здесь собираются люди которые склонны к изобретательству. Без этой способности человечества не было бы сейчас ни панелей ни контроллеров. Да вы предлагаете отличное решение ни кто не спорит, но оно заточено только для бегущих строк или статического отображения по программе вами заложенной. А вот вам задачка непосильная контроллеру: Есть автобусный маршрут Волгоград-Знаменск и Знаменск-Волгоград. Надо отобразить на панели город куда движеться автобус. Автобус двигается туда и обратно. Города на панели надо менять в ручную в зависимости куда едет автобус. С помощью контроллера как это сделать? А с помощью Ардуино в легкую. Плюс цена вопроса когда автобусов например 10 шт. будет высока с использованием контроллеров.
P.S. Я кстати сделал для этого маршрута такие таблички, но выбрал дешевые блоки питания с 12в на 5в и в результате погорели частично ардуйны и блоки питания. Блоки питания ставил маломощные. Совет вам ставте специализированные БП для авто(бегущих строк).
Я начинающий. Сижу уже дня 3 с матрицой этой. Не могу вывести 4 адресные линии. Работают либо 2 либо 3 линии. Программу использовал с волгоградом и счетчик
Всем привет. Помогите соеденить P10+arduino mega + DMD2 библиотеку. Примеры Волгоград и круг с квадратом работают. Менял пины, изменял номера выводов в библиотеке - всё безрезультатно!
Скорее всего проблема с пинами при подключении, потому что примеры Волгоград и круг работают, на Arduino Nano панель работает на либе DMD2, а вот на 2560 отказывается хотя пишут что DMD2 поддерживает 2560
C DMD2 проблема была в том что яркость 255, а у меня это минимальная яркость. Чтоб было вино надо ставить яркость в 0. И еще, изображение всегда инверсировано (GRAPHICS_ON и GRAPHICS_OFF).
У меня еще проблема в том что панели с двумя светодиодами на пиксель (RG), допилил для отображения 3-х цветов.
Есть панель, но у неё экран поделен на две части по горизонтале, соответственно два входа данных R1, R2. Брал пример из поста № 40, методом тыка вывел слово на экран но только на верхнюю часть через вход R1, если параллельно R1 подключить R2 сответственно слово дублируется на нижнюю часть экрана. Как отдельно писать в нижнюю часть экрана?
Здравствуйте MikSer.Принял вашу критику и установил DMD, TimerOne, Bounce2- и все заработало. Спасибо за терпение. Не могу убрать до100, еще если работает 1 секундомер то расположение было бы по середине.
почитать тут http://forum.freetronics.com/viewforum.php?f=26
У меня все работает корректно. http://vk.com/video27058323_168010129
А какая будет схема подключения для ардуино UNO?
Она отличается от подключения к мега?
http://st.lartmaster.ru/1/759/621/LED_matrix_16x32.pdf
В библиотеке DMD.h есть строка #define PIN_OTHER_SPI_nCS 10.
Что это за пин? Куда его подключать к модулю P10?
Я поменял в нем пины на те которые подключены у меня
1
#define PIN_DMD_nOE 7 // D9 active low Output Enable, setting this low lights all the LEDs in the selected rows. Can pwm it at very
2
#define PIN_DMD_A 11 // D6
3
#define PIN_DMD_B 12 // D7
4
#define PIN_DMD_CLK 9 // D13_SCK is SPI Clock if SPI is used
5
#define PIN_DMD_SCLK 8 // D8
6
#define PIN_DMD_R_DATA 10 // D11_MOSI is SPI Master Out if SPI is used
1
#define pinData1 10
2
#define pinClk 9
3
#define pinStr 8
4
#define pinEn 7
5
#define pinA 11
6
#define pinB 12
Но всё равно не работает, хотя Волгоград прекрасно работает.
Возможно дело в PIN_OTHER_SPI_nCS, но я не могу понять куда его подключать.
Я подключал так:
OE -> 9 Pin
A -> 6 Pin
B -> 7 Pin
CKL -> 13 Pin
SKL -> 8 Pin
R -> 11 Pin (в зависимости от цвета панели R - Red, G - Green, W - white)
в исходнике написано же...
01
//Arduino pins used for the display connection
02
#define PIN_DMD_nOE 9 // D9 active low Output Enable, setting this low lights all the LEDs in the selected rows. Can pwm it at very high frequency for brightness control.
03
#define PIN_DMD_A 6 // D6
04
#define PIN_DMD_B 7 // D7
05
#define PIN_DMD_CLK 13 // D13_SCK is SPI Clock if SPI is used
06
#define PIN_DMD_SCLK 8 // D8
07
#define PIN_DMD_R_DATA 11 // D11_MOSI is SPI Master Out if SPI is used
08
//Define this chip select pin that the Ethernet W5100 IC or other SPI device uses
09
//if it is in use during a DMD scan request then scanDisplayBySPI() will exit without conflict! (and skip that scan)
10
#define PIN_OTHER_SPI_nCS 10
PIN_OTHER_SPI_nCS нужен для того чтобы scanDisplayBySPI() отрабатывала корректно при условии что на шине SPI висит допустим (Ethernet W5100 IC or other SPI) т.е. на этом пине.
Спасибо :) Теперь получилось.
А не мог бы ты подсказать как работать со шрифтами? Как создать свой шрифт?
И как управлять яркостью модулей?
Со шрифтами история очень веселая, но решаемая при помощи волшебной проги GLCD Font Creator https://code.google.com/p/glcd-arduino/downloads/detail?name=GLCDFontCreator2.zip&can=2&q=
она на Java.
Создаеш свой шрифт и экспортируеш, ложищ его в папку DMD библиотеки. В зависимости как его назвал в исходнике объявляеш его.
1
#include "Small.h"
2
.................
3
dmd.selectFont(new_Font);
new_Font имя шрифта, что в мастере шрифтов указали. И все.
По поводу яркости тут есть модифицированная либа http://forum.freetronics.com/viewtopic.php?f=26&t=278&start=20#p2133
А если нужно подключить параллельно несколько строк к адной ардуине, как это можно реализовать?
Можно ведь запараллелить все выходы кроме: PIN_DMD_R_DATA и PIN_DMD_CLK, а их сделать разными, и передавать разные данные на табло. Но только PIN_DMD_R_DATA всегда равен 11, а PIN_DMD_CLK = 13, не важно что я прописываю в DMD.h, она всё равно использует эти пины SPI. Можно как-то выйти из этого положения?
Со шрифтами история очень веселая, но решаемая при помощи волшебной проги GLCD Font Creator https://code.google.com/p/glcd-arduino/downloads/detail?name=GLCDFontCreator2.zip&can=2&q=
она на Java.
Создаеш свой шрифт и экспортируеш, ложищ его в папку DMD библиотеки. В зависимости как его назвал в исходнике объявляеш его.
1
#include "Small.h"
2
.................
3
dmd.selectFont(new_Font);
new_Font имя шрифта, что в мастере шрифтов указали. И все.
По поводу яркости тут есть модифицированная либа http://forum.freetronics.com/viewtopic.php?f=26&t=278&start=20#p2133
Создаю шрифт с помощью GLCD Font Creator, все работает до ASCII 127,любые знаки после
не выводятся на панели. В шрифте все есть до 255. Помогите решить эту проблему
Может есть у кого проверенный файл с русским, пришлите в личку для сравнения с моим
Использую библиотеку DMD
Подскажите пожалуйста.
Имею панель RG 32x16, выглядит как ваши (не считая двух светодиодов на пиксель), на обратной стороне имеет маркировку P10(1R1G)3216-4S1. Пытаюсь управлять через arduino duemilanove. Начинал с полностью своего кода - добился вывода пикселей в нужном месте по координата. Дальше наткнулся на эту тему, и решил попробывать библиотеку DMD(чтоб не писать вывод текста самому). Подключил все как указано в DMD.h - но ни к чему не привело. Попробывал убрать следующую проверку:
1
if
( digitalRead( PIN_OTHER_SPI_nCS ) == HIGH )
Видно что что-то бежит и вроде даже как осмысленное, но светодиоды горят в пол накала...и буквы в строке какие-то смазанные.
Переписал полностью код функции:
1
void
DMD::scanDisplayBySPI()
... на основе своего кода который работал. Все вывелось но зеркально относительно горизонтали и инвертировано, но легко поправил. Суть не в этом.
Тесты показали( что и теоретически было ясно) что duemilanove начинает тормозить при подключение двух экранов, при трех картинка вообще замирает. Я даже не пробывал еще управлять зелеными светодиодами.
Пока едет arduino due, упражняюсь с тем что есть.
Насколько я понял библиотека использует SPI для управления панелью, и так вопрос:
- может быть такое, что панель не понимает этот протокол? или это я не понимаю что делаю?
- зачем его использовать? (меньше своего кода разрабатывать, или она быстрее, если есть собственный рабочий код отображения буфера дисплея на панель - может и нет смысла напрягаться)
Спасибо.
Посмотрите вторую версию этой библиотеки. Избавились от TimerOne, теперь корректно работаем с сериал портом.
Вот бы скрестить библиотеку AdafruitGFX и DMD2....
Посмотрите вторую версию этой библиотеки. Избавились от TimerOne, теперь корректно работаем с сериал портом.
Вот бы скрестить библиотеку AdafruitGFX и DMD2....
Пожалуйста подскажите где взять библиотеку, без использования TimerOne?
Нашел библиотеку DMD2. Запустил пример Scrolling alphabet. Перед выводом очередной буквы происходит полное стирание экрана, после чего строка выводится по новым координатам плюс очередная буква. И так в цикле. Изображение выводится не плавно, а рывками. Появляется, гаснет, появляется, гаснет.
Посоветуйте метод борьбы с этим эфектом
Да, скроллинг там еще не реализован, но зато все остальное! Шикарно работает. Могу предложить глянуть исходники старой либы и подглядеть как там скролл сделан и внедрить кусок кода в новую либу либо ждать пока она выйдет из стадии бэты.
http://forum.freetronics.com/viewtopic.php?f=26&t=5893 либо ныть и скулить на форуме разрабов. :-)
Товарищи нужна помощь.
Если прописать в коде больше 18 модулей Arduino UNO перестает работать, не отрисовывается вообще ни одно.
1
DMD dmd(18,1);
При этом 18 модулей работают нормально.
Как можно соединить больше 18 модулей P10?
Эксперементальным петём добился корректной работы 22 модулей.
Изменив в DMD.h размер массива marqueeText
1
//Marquee values
2
char
marqueeText[2];
// было char marqueeText[256]
3
byte
marqueeLength;
4
int
marqueeWidth;
5
int
marqueeHeight;
Если добиться работы 24 модулей, то было бы уже хорошо. Но в идеале 30 модулей нужно.
Господа электроники! Зачем вы мучаетесь?
Я занимаюсь производством таких бегущих строк, для управления модулями используется контроллер, его стоимость не более 2,5 тыр.
Есть специальная программа которая уже всё это делает... Количество модулей не ограничено, весь вопрос в питании этих модулей.
Это которая LedShow?
Да, и простая и бесплатная и контроллеры не только BX- поддерживает
Господа электроники! Зачем вы мучаетесь?
Я занимаюсь производством таких бегущих строк, для управления модулями используется контроллер, его стоимость не более 2,5 тыр.
Есть специальная программа которая уже всё это делает... Количество модулей не ограничено, весь вопрос в питании этих модулей.
Я с вами не соглашусь!!! Здесь собираются люди которые склонны к изобретательству. Без этой способности человечества не было бы сейчас ни панелей ни контроллеров. Да вы предлагаете отличное решение ни кто не спорит, но оно заточено только для бегущих строк или статического отображения по программе вами заложенной. А вот вам задачка непосильная контроллеру: Есть автобусный маршрут Волгоград-Знаменск и Знаменск-Волгоград. Надо отобразить на панели город куда движеться автобус. Автобус двигается туда и обратно. Города на панели надо менять в ручную в зависимости куда едет автобус. С помощью контроллера как это сделать? А с помощью Ардуино в легкую. Плюс цена вопроса когда автобусов например 10 шт. будет высока с использованием контроллеров.
P.S. Я кстати сделал для этого маршрута такие таблички, но выбрал дешевые блоки питания с 12в на 5в и в результате погорели частично ардуйны и блоки питания. Блоки питания ставил маломощные. Совет вам ставте специализированные БП для авто(бегущих строк).
Скоро заберу все панели с этого маршрута и что нибудь опять придумаю.
Приветствую! Есть пара модулей Vessem VS128T-16 http://www.ecplaza.net/eparts/link/c10003329.html
Даташит: http://www.epartshub.com/include/fileattach.jsp?filename=00001035-VS128T-16S(ver_5.00).pdf&cmpyCd=00001035&type=Doc
Я начинающий. Сижу уже дня 3 с матрицой этой. Не могу вывести 4 адресные линии. Работают либо 2 либо 3 линии. Программу использовал с волгоградом и счетчик
001
/**
002
* Программа "счетчик секунд"
003
*/
004
// inslude the SPI library:
005
#include <SPI.h>
006
#include <Wire.h>
007
#include <DS1307.h>
008
009
010
const
int
pin_OE = 7;
011
const
int
pin_LD = 6;
012
const
int
pin_A = 2;
013
const
int
pin_B = 3;
014
const
int
pin_C = 4;
015
const
int
pin_D = 5;
016
//const int load = 8;
017
018
// Буфер индикатора
019
unsigned
long
img_buf[ 16 ];
020
021
/**
022
* Массив знакогенератора для цифр: 0 - 9
023
*/
024
const
char
digits[ 11 * 8 ] =
025
{
//0
026
0b00000,
027
0b01100,
028
0b10010,
029
0b10010,
030
0b10010,
031
0b10010,
032
0b01100,
033
0b00000,
034
//1
035
0b00000,
036
0b00100,
037
0b01100,
038
0b00100,
039
0b00100,
040
0b00100,
041
0b01110,
042
0b00000,
043
//2
044
0b00000,
045
0b01100,
046
0b10010,
047
0b00100,
048
0b01000,
049
0b10000,
050
0b11110,
051
0b00000,
052
//3
053
0b00000,
054
0b11100,
055
0b00010,
056
0b01100,
057
0b00010,
058
0b00010,
059
0b11100,
060
0b00000,
061
//4
062
0b00000,
063
0b10010,
064
0b10010,
065
0b10010,
066
0b11110,
067
0b00010,
068
0b00010,
069
0b00000,
070
//5
071
0b00000,
072
0b11110,
073
0b10000,
074
0b11100,
075
0b00010,
076
0b10010,
077
0b01100,
078
0b00000,
079
//6
080
0b00000,
081
0b01110,
082
0b10000,
083
0b11100,
084
0b10010,
085
0b10010,
086
0b01100,
087
0b00000,
088
// 7
089
0b00000,
090
0b11110,
091
0b00010,
092
0b00010,
093
0b00100,
094
0b01000,
095
0b01000,
096
0b00000,
097
// 8
098
0b00000,
099
0b01100,
100
0b10010,
101
0b01100,
102
0b10010,
103
0b10010,
104
0b01100,
105
0b00000,
106
// 9
107
0b00000,
108
0b01100,
109
0b10010,
110
0b10010,
111
0b01110,
112
0b00010,
113
0b01100,
114
0b00000,
115
// a
116
0b00000,
117
0b11100,
118
0b10010,
119
0b01110,
120
0b10010,
121
0b10010,
122
0b01101,
123
0b00000,
124
};
125
126
const
char
letters[ 1 * 8 ] =
127
{
128
// a
129
0b00000,
130
0b10010,
131
0b00000,
132
0b00000,
133
0b00000,
134
0b00000,
135
0b10010,
136
0b00000,
137
};
138
139
/**
140
* Аппаратные настройки
141
*/
142
void
setup
()
143
{
144
pinMode (pin_A , OUTPUT);
145
pinMode (pin_B , OUTPUT);
146
pinMode (pin_C , OUTPUT);
147
pinMode (pin_D , OUTPUT);
148
pinMode (pin_OE, OUTPUT);
149
pinMode (pin_LD, OUTPUT);
150
//pinMode (load, OUTPUT);
151
// initialize SPI:
152
SPI.setClockDivider(SPI_CLOCK_DIV2);
153
SPI.begin();
154
//SPI.setClockDivider(SPI_CLOCK_DIV2);
155
//Serial.begin(115200);
156
157
}
158
/**
159
* Вспомогательная функция:
160
* Вычисление значения data
161
* @param row — номер строки
162
* @param buf — указатель на буфер индикатора
163
* @param regn — номер регистра индикатора
164
*/
165
int
get_img_byte(unsigned
long
* buf,
int
col ,
int
regn )
166
{
167
int
res = 0;
168
int
m = 24 - ( ( regn / 4 ) * 8 );
169
int
n = ( 15 - ( ( regn % 4 ) * 4 ) - col );
170
return
buf[n]>> m;
171
172
}
173
/**
174
* Переключение строк
175
* @param row — номер строки
176
*/
177
void
set_row(
int
row )
178
{
179
// Приводим row к нужному виду
180
row &= 0x0F;
//03
181
row = 15 - row;
182
// Отключаем индикацию
183
digitalWrite( pin_OE , LOW );
184
//digitalWrite( load , LOW );
185
// Переключаем ножк дешифратора
186
digitalWrite( pin_A , ( row & 1 ) && HIGH );
187
digitalWrite( pin_B , ( row & 2 ) && HIGH );
188
digitalWrite( pin_C , ( row & 4 ) && HIGH );
189
digitalWrite( pin_D , ( row & 8 ) && HIGH );
190
// Выводим синхроимпульс регистра с параллельной загрузкой
191
digitalWrite( pin_LD , HIGH );
192
digitalWrite( pin_LD , LOW );
193
// Включаем индикацию
194
digitalWrite( pin_OE , HIGH );
195
//digitalWrite( load , HIGH );
196
}
197
/**
198
* Обновления индикатора - улучшеная версия
199
* @param buf — указатель на буфер индикатора
200
*/
201
void
upload( unsigned
long
* buf )
202
{
203
int
regn;
204
static
int
col = 0;
205
if
( col >= 4 )
206
col = 0;
207
208
for
( regn = 0 ; regn < 16 ; regn++ )
209
SPI.transfer( ~get_img_byte( buf , col , regn ) );
210
211
set_row( col );
212
++col;
213
}
214
/**
215
* Вывод цифры
216
* @param x - координата x
217
* @param y - координата y
218
* @param dig - цифра
219
*/
220
void
put_digit(
int
x ,
int
y ,
int
dig )
221
{
222
for
(
int
i = 0 ; i < 8 ; i++ )
223
{
224
if
( ( ( i + y ) > 15 ) || ( ( x ) > 26 ) ||
225
( ( i + y ) < 0 ) || ( ( x ) < 0 ) )
226
continue
;
227
unsigned
long
tmp = ( ( unsigned
long
) digits[ dig * 8 + i ] << ( 26 - x ) );
228
img_buf[ i + y ] |= tmp;
229
}
230
}
231
//---------------------------------------------------
232
void
put_letter(
int
x ,
int
y ,
int
let )
233
{
234
for
(
int
i = 0 ; i < 8 ; i++ )
235
{
236
if
( ( ( i + y ) > 15 ) || ( ( x ) > 26 ) ||
237
( ( i + y ) < 0 ) || ( ( x ) < 0 ) )
238
continue
;
239
unsigned
long
tmp = ( ( unsigned
long
) letters[ let * 8 + i ] << ( 26 - x ) );
240
img_buf[ i + y ] |= tmp;
241
}
242
}
243
//--------------------------------------------------
244
/**
245
* Вывод двузначного числа
246
* @param x - координата x
247
* @param y - координата y
248
* @param dig - число
249
*/
250
void
put_2dig(
int
x ,
int
y ,
int
d )
251
{
252
put_digit( x + 5, y , d % 10 );
253
d /= 10;
254
put_digit( x , y , d % 10 );
255
}
256
//-------------------------------------------------
257
void
put_2let(
int
x ,
int
y ,
int
l )
258
{
259
put_letter( x + 5, y , l % 10 );
260
l /= 10;
261
put_letter( x , y , l % 10 );
262
}
263
//-------------------------------------------------
264
/**
265
* Очистка буфера индикатора
266
* @param buf — указатель на буфер индикатора
267
*/
268
void
clear_buf( unsigned
long
* buf )
269
{
270
for
(
int
i = 0 ; i < 16 ; i++ )
271
buf[i] = 0;
272
}
273
274
/******************************************************/
275
void
loop
()
276
{
277
setup
();
278
// счетчик циклов обновления
279
unsigned
int
counter = 0;
280
// Счетчик
281
int
cnty = 40;
282
283
for
( ; ; )
284
{
285
upload( img_buf );
286
if
( counter % 100 == 0 )
287
{
288
clear_buf( img_buf );
289
290
// Увеличения координаты вывода значения 10-ов мс
291
// формирование бегущей строки
292
--cnty;
293
// Если выехали за край индикатора - начнаем сначала
294
if
( cnty == 0 )
295
cnty = 40;
296
// Получаем заначение мс с момента старта системы
297
unsigned
long
time = millis() / 10;
298
// Вывод бегущей строкой 10-ов мс
299
//put_2dig( cnty - 8 , 8 , ( time % 100 ) );
300
//put_2dig( cnty - 8 , 8 , ( 7 ) );
301
//put_2let( cnty - 8 , 8 , (0) );
302
//time /= 300;
303
// Вывод десятков секунд
304
put_2dig( 20, 0 , RTC.
get
(DS1307_SEC,
true
));
305
//time /= 300;
306
// Вывод сотен секунд
307
put_2dig( 10, 0 , RTC.
get
(DS1307_MIN,
false
));
308
//time /= 300;
309
// Вывод десятков тысяч секунд
310
put_2dig( 0, 0 , RTC.
get
(DS1307_HR,
false
));
311
//delay(1000);
312
put_2dig( cnty - 20, 8 , RTC.
get
(DS1307_YR,
true
));
313
//time /= 300;
314
// Вывод сотен секунд
315
put_2dig( cnty - 10, 8 , RTC.
get
(DS1307_MTH,
false
));
316
//time /= 300;
317
// Вывод десятков тысяч секунд
318
put_2dig( cnty - 0, 8 , RTC.
get
(DS1307_DATE,
false
));
319
}
320
counter++;
321
// delay(1);
322
}
323
324
}
Всем привет. Помогите соеденить P10+arduino mega + DMD2 библиотеку. Примеры Волгоград и круг с квадратом работают. Менял пины, изменял номера выводов в библиотеке - всё безрезультатно!
Код покажи. Схему соединений опиши, что ли...
Сама либа по адресу https://github.com/freetronics/DMD2
код Волгоград и круг из этой темы, подключение к панели
6 A
7 B
8 SCLK
9 OE
51 R
52 CLK
скетч любой из примера к библиотеке не работает
Неужели никто не знает?
а ты думаешь у каждого второго такая панель?
Не факт :)
Скорее всего проблема с пинами при подключении, потому что примеры Волгоград и круг работают, на Arduino Nano панель работает на либе DMD2, а вот на 2560 отказывается хотя пишут что DMD2 поддерживает 2560
какие пины на нано испльзовал? какие на меге?
Nano - 6, 7, 8, 9, 11, 13
mega 6, 7, 8, 9, 51, 52 не работает
пример волгоград
pinData1 10
define pinClk 9
define pinStr 8
define pinEn 7
define pinA 11
define pinB 12
хз вроде все правильно
менял пины в либе для 2560, тоже не помогает
А Вы внимательно прочли весь топик?
А Вы пробовали использовать либу DMD2 где реализованна другая инициализация объекта DMD?
01
#define DISPLAYS_ACROSS 4
02
#define DISPLAYS_DOWN 1
03
#define pin_noe 4
04
#define pin_a 5
05
#define pin_b 6
06
#define pin_sck 8
07
#define pin_clk 7
08
#define pin_r_data 9
09
10
SoftDMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN, pin_noe, pin_a, pin_b, pin_sck, pin_clk, pin_r_data);
например так. Яркостью не баловались? И лучше предоставить Ваш код, дабы не плодить полемику.
Про неё (DMD2) речь и идёт. Код из примеров к этой либе.
Рабочий день закончился, завтра отпишусь!
C DMD2 проблема была в том что яркость 255, а у меня это минимальная яркость. Чтоб было вино надо ставить яркость в 0. И еще, изображение всегда инверсировано (GRAPHICS_ON и GRAPHICS_OFF).
У меня еще проблема в том что панели с двумя светодиодами на пиксель (RG), допилил для отображения 3-х цветов.
Исмпользую Arduino DUE.
Мда, на DMD текст бежал намного красивее чем на DMD2 :(
Не обратил внимание...прям заметно "хуже"?
На 6 матрицах, DMD и Nano текст бежал без рывков и подрагиваний. На Mega, DMD2 одной матрице дергается :(
rndvip, поделитесь наработками по данному вопросу
Чем именно? Поправленной DMD2 для двух цветов?
.
Можно и для двух цветов. Было бы отлично увидеть все коды что есть у Вас по DMD и DMD2. Заранее спасибо!
https://drive.google.com/file/d/0B1AvxFrBdup_QkxBLURkZmN2Rzg/view?usp=sharing
Три разноцветных кружка.
1
_dmd->drawCircle(56,8,7,GRAPHICSCOLOR_YELLOW);
2
_dmd->drawCircle(72,8,7,GRAPHICSCOLOR_GREEN);
3
_dmd->drawCircle(88,8,7,GRAPHICSCOLOR_RED);
rndvip, есть принципиальная разница как инициализировать DMD? (SPIDMD, SoftDMD)
rndvip, есть принципиальная разница как инициализировать DMD? (SPIDMD, SoftDMD)
Я, признаться, не вдавался в подробности. Я использую софт, так как мне важнее чтоб проводки красивее лежали))
ок, спасибо!
Есть панель, но у неё экран поделен на две части по горизонтале, соответственно два входа данных R1, R2. Брал пример из поста № 40, методом тыка вывел слово на экран но только на верхнюю часть через вход R1, если параллельно R1 подключить R2 сответственно слово дублируется на нижнюю часть экрана. Как отдельно писать в нижнюю часть экрана?
Большое Спасибо за помощь - и ненадеялся . Попробую подсоединить к UNO и найти управление. Просто за это БЛАГОДАРЕН.
Японимаю, что Pin2,3 на UNO это 9,10 пока и все - тяжко. Как подсоединить к UNO?
Если есть возможност направте в нужное русло. Спасибо за терпение .
Думаю-так 2-OE, 3-A, 4-B, 11-DATA, 5-LOAD, 13-CLK. по управлениюдисплеем.
Но главное пишел сразу ош-ку при залитие даже без подсоединения д-лея в чем может быть дело?
Здравствуйте MikSer - без вашей помощи просто не обойтись. я просто сборщик ваших творений-который нуждается Вас. Помогите.
Это все очень печально. Начни с установки библиотеки DMD.
https://github.com/freetronics/DMD
Далее попробуй стандартные примеры что ли.
Так подключи.
Не забудь дать 5 вольт на панель, минуса соедини с МК. Учти 2 ампера на одну панель.
Здравствуйте MikSer.Принял вашу критику и установил DMD, TimerOne, Bounce2- и все заработало. Спасибо за терпение. Не могу убрать до100, еще если работает 1 секундомер то расположение было бы по середине.
MikSer СПАСИБО