JasKo Спасибо огромное! взял вашу библиотеку, ваш пример, все заняло 2 минуты и сразу же заработало! а вчера бился целый час и не работало, в чем была причина непонятно. но главное результат есть!
а не подскажите как можно сделать привязку к кнопкам? или даже к коду. есть у меня такие кнопки, пример Б
хочу сделать, чтобы при наборе определенного кода на дисплее высвечивался определенный текст. дающий задание детям на следующую игру, и таких заданий чтоб было порядка 6-10.
SLOM почитай вот здесь о подключении такой клавы через pcf8574 там все подробно описано какие библиотеки взять что исправить и как использовать. Я сейчас не возле своего компа и скинуть коды и библиотеки сейчас не смогу.
Заменил содержимое adafruit_GFX полностью на приложенное в вашем посте (а не только 2 файла (.h .cpp) как в первый раз), и все заработало!
Нашел Excel-шаблон для содания точечных шрифтов.
Я правильно понимаю что его можно использовать для создания своих символов, добавив сгенерированные строки в glcdfont.c? Или 255 символов - предел, и нельзя добавить ничего, не удалив что-то? В таком случае как отобразить все символы и их коды/номер из текущего glcdfont.c? это ведь он?
Здравствуйте. Я совсем новичек. Попытался на Arduino Uno и двух блоках по 4 матрицы 8х8 с MAX7219 сделать бегущую строку. Перепробовал многое, но или вообще просто все диоды горят- не горят, либо текст движется поперек. После долгих поисков нашел наконец скетч, в котором и текст бежит как надо, и даже русификация есть. Но вот беда, скетч работает корректно только с одним блоком из 4 матриц. При включении второго блока не получается единой бегущей строки, на каждом блоке текст бежит отдельно. Изменение значения const int numDevices = 4 на 8 ничего не дает. Не владея языками программирования, не могу понять, что нужно изменить в скетче, чтобы все 8 матриц заработали, как одна строка. Подскажите, пожалуйста.
После долгих поисков нашел наконец скетч, в котором и текст бежит как надо, и даже русификация есть. Но вот беда, скетч работает корректно только с одним блоком из 4 матриц.
У вас тут нет русификации, просто знакогенератор перепахан. " GjmjUbnT... " - это не русский текст. Я сейчас тем же озадачился:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
int pinCS = 10; // Attach CS to this pin, DIN to MOSI and CLK to SCK (cf http://arduino.cc/en/Reference/SPI )
int numberOfHorizontalDisplays = 1;
int numberOfVerticalDisplays = 4;
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
String tape = "Arduino";
int wait = 50; // In milliseconds
int spacer = 1;
int width = 5 + spacer; // The font width is 5 pixels
void setup() {
matrix.setIntensity(0); // Use a value between 0 and 15 for brightness
matrix.setRotation(3); // The same hold for the last display
}
void loop() {
for ( int i = 0 ; i < width * tape.length() + matrix.width() - 1 - spacer; i++ ) {
matrix.fillScreen(LOW);
int letter = i / width;
int x = (matrix.width() - 1) - i % width;
int y = (matrix.height() - 8) / 2; // center the text vertically
while ( x + width - spacer >= 0 && letter >= 0 ) {
if ( letter < tape.length() ) {
matrix.drawChar(x, y, tape[letter], HIGH, LOW, 1);
}
letter--;
x -= width;
}
matrix.write(); // Send bitmap to display
delay(wait);
}
}
приветсвую! проблема. Перечитал все посты, заменил все библиотеки и файлы. В итоге буквы сдвинуты на 1 символ как в посте № 53. Дальше сдинуться в этом вопросе ни как не получается. В чем загвоздка не догоняю. Нужен совет
приветсвую! проблема. Перечитал все посты, заменил все библиотеки и файлы. В итоге буквы сдвинуты на 1 символ как в посте № 53. Дальше сдинуться в этом вопросе ни как не получается. В чем загвоздка не догоняю. Нужен совет
В данном скетче можно просто остановить текст, когда он забежит на дисплей (только он работает с 4-я матрицами, на 10 его надо переделывать), а в начале моего поста на котах есть ссылки и код рисования сердечек - таким образом что угодно можно нарисовать, если оно должно быть постоянным.
Друзья помогите (, я как начинающий (, у меня мультиплексор на 8 входов , помогите каждый пин отабразить по 5 светодиодов , чтобы один вольт соответствовал одному светодиоду на матрице , 8 портов на 8сми строчках , или подскажите последовательность действий, шашлык вино и жаркое солнце анапы с меня )
Я тоже помучался с данной матрицей и ардуино. То криво, то косо. То русского нет, то еще какая халера :)
Случилось мне прикупить на али модули ESP-01. Я думаю все знают, что это такое. На одном модуле собрал термометр с выводом на Народмон. А намучавшись с матрицей набрел на просторах тырнета на сайт wifi-iot dot com (не реклама). Там есть конструктор прошивок для ESP-шек. Кому интересно просто пройдите на сайт и вам будет все понятно.
с этим я тоже разобрался спасибо полезная информация , до меняне не доходит как переменную val выташить на матрицу чтобы каждый столбик соответствовал выводу мульти плексора , я так понимаю val как то надо складывать в массив а потом его вываливать в матрицу ? Вот это до моего понимания ни как не доходит
Ребят я constrain использовал для того что бы в порту было видно , что значения меняються и потом решил что так и вывести можно будет и в место 5 планировалось поставить 8 так как в матрице столбик и из 8 светиков , смысл должен получиться таков , 8 портов мультиплексора должны соответствовать 8и столбикам матрици и в зависимости изменения напряжения , столбики должны были увеличиваться или уменьшаться
Ребят я constrain использовал для того что бы в порту было видно , что значения меняються и потом решил что так и вывести можно будет и в место 5 планировалось поставить 8 так как в матрице столбик и из 8 светиков , смысл должен получиться таков , 8 портов мультиплексора должны соответствовать 8и столбикам матрици и в зависимости изменения напряжения , столбики должны были увеличиваться или уменьшаться
у вас после val = constrain(val,0,5); будет val = 1 или val = 0 т.к. constrain логический оператор
JasKo Спасибо огромное! взял вашу библиотеку, ваш пример, все заняло 2 минуты и сразу же заработало! а вчера бился целый час и не работало, в чем была причина непонятно. но главное результат есть!
а не подскажите как можно сделать привязку к кнопкам? или даже к коду. есть у меня такие кнопки, пример Б
хочу сделать, чтобы при наборе определенного кода на дисплее высвечивался определенный текст. дающий задание детям на следующую игру, и таких заданий чтоб было порядка 6-10.
SLOM почитай вот здесь о подключении такой клавы через pcf8574 там все подробно описано какие библиотеки взять что исправить и как использовать. Я сейчас не возле своего компа и скинуть коды и библиотеки сейчас не смогу.
в 47 строке
m[0] = n; target = target + String(m);
исправил на
m[0] = n+1; target = target + String(m);
в итоге буквы правильные, но и вместо пробелов - !, вместо ? - @
я уже не знаю что сделать...
вот видео
https://www.dropbox.com/s/6nou2thpwi1kzmh/2016-04-22%2023.53.12.mov?dl=0
Заменил содержимое adafruit_GFX полностью на приложенное в вашем посте (а не только 2 файла (.h .cpp) как в первый раз), и все заработало!
Нашел Excel-шаблон для содания точечных шрифтов.
Я правильно понимаю что его можно использовать для создания своих символов, добавив сгенерированные строки в glcdfont.c? Или 255 символов - предел, и нельзя добавить ничего, не удалив что-то? В таком случае как отобразить все символы и их коды/номер из текущего glcdfont.c? это ведь он?
для библиотеки
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
заменяем строку 36 на эту
for ( int i = width * tape.length() + matrix.width() - spacer ; i > 1; i-- ) {
буквы будут выводится слева направо.
Здравствуйте. Я совсем новичек. Попытался на Arduino Uno и двух блоках по 4 матрицы 8х8 с MAX7219 сделать бегущую строку. Перепробовал многое, но или вообще просто все диоды горят- не горят, либо текст движется поперек. После долгих поисков нашел наконец скетч, в котором и текст бежит как надо, и даже русификация есть. Но вот беда, скетч работает корректно только с одним блоком из 4 матриц. При включении второго блока не получается единой бегущей строки, на каждом блоке текст бежит отдельно. Изменение значения const int numDevices = 4 на 8 ничего не дает. Не владея языками программирования, не могу понять, что нужно изменить в скетче, чтобы все 8 матриц заработали, как одна строка. Подскажите, пожалуйста.
Все доброго здравия!
подскажите, как сделать статичный вывод на матричный индикатор? max7219, 4 матрицы 8x8 в ряд.
С уважением
После долгих поисков нашел наконец скетч, в котором и текст бежит как надо, и даже русификация есть. Но вот беда, скетч работает корректно только с одним блоком из 4 матриц.
У вас тут нет русификации, просто знакогенератор перепахан.
" GjmjUbnT... "
- это не русский текст. Я сейчас тем же озадачился:http://arduino.ru/forum/programmirovanie/i-snova-pro-begushchuyu-stroku-na-svetodiodnykh-matritsakh-dlya-novichkov
Поменяйте тут 4 на 8 (если там нет каких-то других ограничений)
const int numDevices = 4; // number of MAX7219s used
Все доброго здравия!
подскажите, как сделать статичный вывод на матричный индикатор? max7219, 4 матрицы 8x8 в ряд.
С уважением
http://2150692.ru/product/view/15/290
Здесь было по кадрам и для 1 индикатора, я добавил по строкам и для 4-х:
Всем добрый!
Прошу не пинать ногами - с Arduino первый день:)
У меня с вышеуказанными библиотеками вот такая штука получилась: https://youtu.be/3-ZLO2NLIbY
Вот код:
Может кто сталкивался и подскажет?
попробуйте matrix.setRotation(3) поменять на 0 или 1 или 2
попробуйте matrix.setRotation(3) поменять на 0 или 1 или 2
1 переворачивает на 180 градусов но смысл не меняется - строка проходит не по всем индикаторами сразу, а по каждому отдельно со сдвигом
По русификации светодиодной матрицы 4х8х8 ссылку уже давал:
http://arduino.ru/forum/programmirovanie/i-snova-pro-begushchuyu-stroku-...
(пост 42)
а тут окончательный вариант:
http://radiokot.ru/forum/viewtopic.php?f=57&t=136296
(пост от 9 октября)
У кого-то сразу возникает желание подцепить 2 таких матрицы, но у меня она только одна и такими проектами я не озадачивался.
0
приветсвую! проблема. Перечитал все посты, заменил все библиотеки и файлы. В итоге буквы сдвинуты на 1 символ как в посте № 53. Дальше сдинуться в этом вопросе ни как не получается. В чем загвоздка не догоняю. Нужен совет
приветсвую! проблема. Перечитал все посты, заменил все библиотеки и файлы. В итоге буквы сдвинуты на 1 символ как в посте № 53. Дальше сдинуться в этом вопросе ни как не получается. В чем загвоздка не догоняю. Нужен совет
Пример подключения матриц к драйверу MAX7219 http://radiolaba.ru/microcotrollers/podklyuchenie-svetodiodnyih-matrits-na-max7219.html
Вот тут достаточно подробно о работе с матрицами http://zlitos.com/publ/ehlektronika/arduino_i_t_p/arduino_i_svetodiodnye_matricy_8kh8_max7219/12-1-0-35
там и русификация есть
а вот как шрифт на две строки величиной сделать?
Все эти повороты делает скетч по ссылке в моём последнем посте. И русский шрифт я туда (в сам скетч) тоже добавил.
Это бегущий текст, а если нужны эффекты, тогда да, нужна библиотека помощнее, типа Паролы.
а как вывести статичную строку, допустим на 10 матриц.
т.е. бегущая строка не нужна. просто в зависимости от события выводится та или иная надпись?
В данном скетче можно просто остановить текст, когда он забежит на дисплей (только он работает с 4-я матрицами, на 10 его надо переделывать), а в начале моего поста на котах есть ссылки и код рисования сердечек - таким образом что угодно можно нарисовать, если оно должно быть постоянным.
из записи #50
скачал библиотеки скопировал скетч
вместо слова "привет" пишет "рсйгжу"
Diglator ты решил проблемму с 2-мя матрицами? У меня такая же...?!
Если решил проблемму подскажи как...
Если честно, я просто забросил эту проблему.
Жаль а то код такой же а проблемма не решилась...
Вопрос с 2-мя матрицами на русском языке решен Все ссылки из этого видео https://www.youtube.com/watch?v=Mo1SbWxoeWg
Проверено работает! Только на платформе arduino 1.5.2 не пошло выдавал ошибки поставил на 1.8.5 и все пошло прекрасно!? Может кому пригодится....
Соврал не ту ссылку на видео дал ...Вообщем вот ссылка но уже на архив со скетчем и библиотеками http://klenyaw.ucoz.ru/files/begushhaja_stroka_russkij_jazyk.rar
добрый всем вечер данный скетч с этой ветки работает хорошо но есть несколько вопросов
1 сколько вообще матриц можно подключить по горизонтали и по вертикалм какие ограничения
2 как в этот код дописать датчик ds18b20 и вывести значения на дисплей
3 вывести текущее время
нормальные сердечки-вертикально
Спасибо, всё работает нормально
Друзья помогите (, я как начинающий (, у меня мультиплексор на 8 входов , помогите каждый пин отабразить по 5 светодиодов , чтобы один вольт соответствовал одному светодиоду на матрице , 8 портов на 8сми строчках , или подскажите последовательность действий, шашлык вино и жаркое солнце анапы с меня )
Я бы сделал это точками, что бы не лезть в нюансы кодирования символов.
скачать и библиотеку, подключить её, и посмотреть в файле .h что-нибудь вроде setDot(x,y,...)
Нет ардуины под рукой, увы - не могу конкретно написать, как должно быть.
Я бы сделал это точками, что бы не лезть в нюансы кодирования символов.
скачать и библиотеку, подключить её, и посмотреть в файле .h что-нибудь вроде setDot(x,y,...)
Нет ардуины под рукой, увы - не могу конкретно написать, как должно быть.
Всем привет
Я тоже помучался с данной матрицей и ардуино. То криво, то косо. То русского нет, то еще какая халера :)
Случилось мне прикупить на али модули ESP-01. Я думаю все знают, что это такое. На одном модуле собрал термометр с выводом на Народмон. А намучавшись с матрицей набрел на просторах тырнета на сайт wifi-iot dot com (не реклама). Там есть конструктор прошивок для ESP-шек. Кому интересно просто пройдите на сайт и вам будет все понятно.
А вот видос того, что у меня получилось : https://youtu.be/pGIOAEGxwn0 Звук не очень, микрофон не настроен.
С уважением, Александр
ЗЫ Забыл опубликовать :). теперь можно смотреть
Привет я тут всю голову сломал уже , мне точками и и надо , не могу понять как проиходит вывод в матрицу , помоги пожалуйста )
Привет я тут всю голову сломал уже , мне точками и и надо , не могу понять как проиходит вывод в матрицу , помоги пожалуйста )
Глянь по этой ссылке. там вроде все понятно - https://geektimes.ru/post/255686/
с этим я тоже разобрался спасибо полезная информация , до меняне не доходит как переменную val выташить на матрицу чтобы каждый столбик соответствовал выводу мульти плексора , я так понимаю val как то надо складывать в массив а потом его вываливать в матрицу ? Вот это до моего понимания ни как не доходит
я на 72** делал с 7 сигментными индикаторами - но сить не меняет - вам надо отправлять по 1 байту для каждого символа - у вас на матрице - строки
соответственно 1 и 0 указывают какой диод вкл/выкл
8 строк - 8 байт
отправляйте из циклом 0-8 из заранее собранного массива например.
можете взять мою небольшую переделку библиотеки
https://cloud.mail.ru/public/6sDD/PGQw5yChd
в ней добавлена работа с байтами
setByte(№_дисплей, символ/строка, байт_данных);
как пример
я в массив собираю что отправлять
databute[0]|=B00000101;
databute[1]|=B00000101;
databute[2]|=B01001111;
//для 7с индикатора это "Err" для матрицы будет 3 строки - вам надо будет сделать 8
//и да у меня 2 дисплей - собираю 16 байт (databute[0-7] первый и databute[8-16] второй)
и отправка на дисплей
ну и чтобы вам на матрицу выводить что хотите - можно сделать базу символов (по 8 байт для каждого)
а из кода просто вызывать нужный массив и его отправлять на матрицу
я это понимаю как с вот тут переменную val перевести в биты и отправить в матрицу , я сам механизм понять не могу
01
#define ANALOG_PIN A0
02
#define OUT_A 2
03
#define OUT_B 3
04
#define OUT_C 4
05
#include "LedControl.h"
06
LedControl LC = LedControl(12, 11, 10, 4);
07
int
val;
08
09
void
setup
() {
10
11
12
LC.shutdown(0,
false
);
//Активируем 0ю матрицу
13
LC.setIntensity(0, 8);
14
LC.clearDisplay(0);
15
16
pinMode(OUT_A, OUTPUT);
17
pinMode(OUT_B, OUTPUT);
18
pinMode(OUT_C, OUTPUT);
19
Serial
.begin(9600);
20
}
21
22
void
loop
() {
23
24
25
26
LC.setColumn(0, 0, B11111111);
27
LC.setColumn(0, 1, B11111111);
28
29
for
(
int
i = 0b000; i <= 0b111; i++) {
30
digitalWrite(OUT_A, bitRead(i, 0));
31
digitalWrite(OUT_B, bitRead(i, 1));
32
digitalWrite(OUT_C, bitRead(i, 2));
33
34
val = analogRead(ANALOG_PIN);
35
val = map(val,0,700,0,5);
36
val = constrain(val,0,5);
37
38
Serial
.print(val);
39
Serial
.print(
" | "
);
40
}
41
Serial
.println();
42
delay(1000);
43
44
}
Val это данные приходять с мультиплексора
чтобы не мерцало - не надо делать
m.clear()
а надо заменять вкл диоды на выклт.к.
m.clear()
по сути отправляет 8 байт 0х00000000 - тоесть гасит все диоды и на это надо времяа потом вы заново из зажигаете - опять время - вот и мерцание сильное
А так попробуем через столбцы:
- открываем библиотеку (заранее скачанную и установленную на компе или https://github.com/riyas-org/max7219/blob/master/MaxMatrix/MaxMatrix.cpp)
- находим void MaxMatrix::setColumn(byte col, byte value)
- подготавливаем данные для него
Проверить не могу, поэтому возможны мелкие косячки. Сорри.
по
val = analogRead(ANALOG_PIN);
//вы считали значение от 0 до 1023
val = map(val,0,700,0,5)
вы перенести val в диапазон 0-5
val = constrain(val,0,5);
//а тут проверяете входит val в диапазон или нет и у вас будет или true или false!!! тоесть val = 1 или 0
Советовал constrain не я, но акцентировать внимание новичка на этом не стал.
http://arduino.ru/Reference/Constrain
Насколько я вижу из описания, функция всё равно вернёт val, поэтому нет смысла перепроверять после map
Что бы не мерцало - я в библиотеке не увидел, как погасить точку.
Ребят я constrain использовал для того что бы в порту было видно , что значения меняються и потом решил что так и вывести можно будет и в место 5 планировалось поставить 8 так как в матрице столбик и из 8 светиков , смысл должен получиться таков , 8 портов мультиплексора должны соответствовать 8и столбикам матрици и в зависимости изменения напряжения , столбики должны были увеличиваться или уменьшаться
Советовал constrain не я, но акцентировать внимание новичка на этом не стал.
http://arduino.ru/Reference/Constrain
Насколько я вижу из описания, функция всё равно вернёт val, поэтому нет смысла перепроверять после map
Что бы не мерцало - я в библиотеке не увидел, как погасить точку.
допустим у вас строка матрицы горит 4 левых диода = это будет В00001111
вам надо покасить левый крайний
тогда вы отправляете экрану В00001110 только и всего
тоесть при каждой отправке данных вы отправляете все строки полностью, а не только нужную
а еще более верно - перед отправкой сравнивать - что было и что будет - и отправлять только если есть отличия данных - это ускорит вывод
Ребят я constrain использовал для того что бы в порту было видно , что значения меняються и потом решил что так и вывести можно будет и в место 5 планировалось поставить 8 так как в матрице столбик и из 8 светиков , смысл должен получиться таков , 8 портов мультиплексора должны соответствовать 8и столбикам матрици и в зависимости изменения напряжения , столбики должны были увеличиваться или уменьшаться
у вас после val = constrain(val,0,5); будет val = 1 или val = 0 т.к. constrain логический оператор