Часы на светодиодных матрицах с драйверами MAX7219

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Kuzma511
Открыл глаза
Сообщения: 58
Зарегистрирован: Ср апр 16, 2014 07:13:00

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение Kuzma511 »

часы.jpg
(227.69 КБ) 1132 скачивания

вот так смотрится получше
Аватара пользователя
dt_andrew
Мявтор!
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение dt_andrew »

ув. WiseLord как убрать вертикальный скроллинг в часах и мин но оставить в сек
идея вот в чем
моргающие точки сек убрать совсем - оставить двоеточие постоянно в 1 пиксел
мин сместить влево
секунды соответственно тоже
индикацию будильника при 4 матрицах вывести на последнюю колонку
все вроде получилось
но при скроллинге мин артефакты возникают
игра с масками в display.h не помогает
хотя для сек и смещение и скроллинг с измененной маской очень даже работает
а вот с мин никак
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение WiseLord »

Артефакты в режиме часов или при переключении на будильник? Там ведь те же маски используются.

И я что-то не понял: в режиме обычных цифр - ладно, возможно, экстра - тоже, а вот куда что смещать на больших цифрах - непонятно.
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

опять вопросик.. как в винде gcc 4.8 установить? комп поменял и теперь опять ищу и не могу найти где его скачать
Аватара пользователя
dt_andrew
Мявтор!
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение dt_andrew »

ksa69
http://heanet.dl.sourceforge.net/project/mobilechessboar/avr-gcc%20snapshots%20%28Win32%29/avr-gcc-4.8_2013-03-06_mingw32.zip
установить WINAVR-20100110
распоковать архив, затем скопировать с заменой в папку с WINAVR

WiseLord это относится только к режиму NUM_NORMALи 4 матрицам
что я сделал

Код: Выделить всё

static void updateColon(uint8_t bufType)

оставил

Код: Выделить всё

    matrixPlaceBuf(bufType, 10, 0x24); // стабильные двоеточие
    matrixPlaceBuf(bufType, 31, alarmRawWeekday() | (hourSignal ? 0x80 : 0x00)); // будильник в последней колонке

в процедуре

Код: Выделить всё

void showTime(uint32_t mask)

изменил

Код: Выделить всё

//      matrixSetX(13);
      matrixSetX(12);

   if (bigNum != NUM_EXTRA) {
//      matrixSetX(25);
      matrixSetX(23);
      matrixLoadNumString(mkNumberString(rtc.sec, 2, 0, '0'), NUM_SMALL);
   }

в файле display.h
поменял маски

Код: Выделить всё

//#define MASK_MIN_TENS         0x0007C000UL
//#define MASK_MIN_UNITS      0x00003E00UL
#define MASK_MIN_TENS         0x006F0000UL
#define MASK_MIN_UNITS         0x0007C000UL
//#define MASK_SEC_TENS         0x000000F0UL
//#define MASK_SEC_UNITS      0x0000000FUL
#define MASK_SEC_TENS         0x000003C0UL
#define MASK_SEC_UNITS         0x0000003CUL


в результате все выводится как надо, скроллинг вертикальный в секундах как положено идет
а вот в единицах мин не скролируется левый столбец от символа
игрался в разную сторону маской
#define MASK_MIN_TENS 0x006F0000UL
#define MASK_MIN_UNITS 0x0007C000UL
так путного ничего не вышло
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение WiseLord »

dt_andrew писал(а):распоковать архив, затем скопировать с заменой в папку с WINAVR
Не самое лучшее решение. Не факт, что список файлов компилятора одинаковый - может получиться мешанина версий. Лучше отдельно скачанный avr-gcc распаковать отдельно, и прописать его первым в PATH.
dt_andrew писал(а):#define MASK_MIN_TENS 0x006F0000UL
#define MASK_MIN_UNITS 0x0007C000UL
эти маски для минут неправильные

С этим патчем работает вроде бы. Если касаться только 4 матриц и обычного шрифта:
Спойлер

Код: Выделить всё

diff --git a/display.c b/display.c
index 5df92b0..cdcec3c 100644
--- a/display.c
+++ b/display.c
@@ -209,10 +209,8 @@ static void updateColon(uint8_t bufType)
       matrixPlaceBuf(bufType, 15, colon);
       matrixPlaceBuf(bufType, 16, colon);
    } else if (bigNum == NUM_NORMAL) {
-      colon = pgm_read_byte(&colonCode[digit]);
-      matrixPlaceBuf(bufType, 10, colon);
-      matrixPlaceBuf(bufType, 11, colon);
-      matrixPlaceBuf(bufType, 23, alarmRawWeekday() | (hourSignal ? 0x80 : 0x00));
+      matrixPlaceBuf(bufType, 10, 0x22);
+      matrixPlaceBuf(bufType, 31, alarmRawWeekday() | (hourSignal ? 0x80 : 0x00));
    } else {
       matrixPlaceBuf(bufType, 11, (!digit) << 7);
       matrixPlaceBuf(bufType, 12, digit << 7);
@@ -343,11 +341,11 @@ void showTime(uint32_t mask)
    if (bigNum == NUM_EXTRA)
       matrixSetX(19);
    else
-      matrixSetX(13);
+      matrixSetX(12);
    matrixLoadNumString(mkNumberString(rtc.min, 2, 0, '0'), bigNum);
 
    if (bigNum != NUM_EXTRA) {
-      matrixSetX(25);
+      matrixSetX(23);
       matrixLoadNumString(mkNumberString(rtc.sec, 2, 0, '0'), NUM_SMALL);
    }
 
diff --git a/display.h b/display.h
index 5f57e3f..2ec9296 100644
--- a/display.h
+++ b/display.h
@@ -16,8 +16,8 @@ enum {
 
 #define MASK_HOUR_TENS         0xF8000000UL
 #define MASK_HOUR_UNITS         0x07C00000UL
-#define MASK_MIN_TENS         0x0007C000UL
-#define MASK_MIN_UNITS         0x00003E00UL
+#define MASK_MIN_TENS         0x000F8000UL
+#define MASK_MIN_UNITS         0x00007C00UL
 
 #define MASK_BIGHOUR_TENS      0xF8000000UL
 #define MASK_BIGHOUR_UNITS      0x03E00000UL
@@ -29,8 +29,8 @@ enum {
 #define MASK_EXTRAMIN_TENS      0x00001F80UL
 #define MASK_EXTRAMIN_UNITS      0x0000003FUL
 
-#define MASK_SEC_TENS         0x000000F0UL
-#define MASK_SEC_UNITS         0x0000000FUL
+#define MASK_SEC_TENS         0x000003C0UL
+#define MASK_SEC_UNITS         0x0000003CUL
 
 #define MASK_BR_TENS         0xF0000000UL
 #define MASK_BR_UNITS         0x07800000UL
Последний раз редактировалось WiseLord Пт сен 18, 2015 04:24:34, всего редактировалось 1 раз.
Аватара пользователя
dt_andrew
Мявтор!
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение dt_andrew »

может и так
но у меня чистый WINAVR компелил кекс который не лез в мегу8, после замены файлов все нормально

вот с такими масками стало работать как надо

Код: Выделить всё

#define MASK_HOUR_TENS         0xF8000000UL
#define MASK_HOUR_UNITS      0x07C00000UL

#define MASK_MIN_TENS         0x000F8000UL
#define MASK_MIN_UNITS         0x00007C00UL

#define MASK_SEC_TENS         0x000003C0UL
#define MASK_SEC_UNITS         0x0000003CUL
Последний раз редактировалось dt_andrew Пт сен 18, 2015 04:27:12, всего редактировалось 1 раз.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение WiseLord »

Правильная маска для минут решила проблему?
Аватара пользователя
dt_andrew
Мявтор!
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение dt_andrew »

да! огромное спасибо за помощь
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение WiseLord »

Продолжая тему погодных станций...

Вчера забрал на почте пару WiFi-модулей. Подключил к модулю DHT22 и BMP180, залил (по UART) прошивку (описание проекта) - и вот результат на narodmon.ru. Пока всё это в виде макета, вывел "в народ" только давление, комнатные температура и влажность доступны только мне.

Проект поражает своей масштабностью (поддерживается куча железок). Прямо так и захотелось разобраться с этим модулем (там внутри неплохой ARM процессор, а в других вариантах модулей доступно больше выводов) и сообразить на нём что-то своё.
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

WiseLord писал(а):Продолжая тему погодных станций...

Вчера забрал на почте пару....


я уже на такой esp8266 собрал метеостанцию с матрицей китайской, ds3231, DHT22, ds18b20 и bmp180. все выводится тоже на народмон и на матрицу бегущей строкой. ну и время по NTP само синхронизируется с ds3231. :))
ну еще умеет вся эта штука управляться через mqtt с помощью андроид-устройства. вобщем функций куча там.

p.s. поддержку матриц на HT1632c, Макс, разработчик прошивки сделал по моей просьбе))
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

хм... тыкаю кнопки хаотично и данные даты и времени сбиваются на 45ч 85мин и 45 сентября 2125 года.. что это может быть?
upd: нет. не тыкаю кнопки но примерно через минуту такая картина сама появляется..
Последний раз редактировалось ksa69 Пт сен 18, 2015 09:53:23, всего редактировалось 1 раз.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение WiseLord »

А куда всё это подключено?

У того модуля, на который я сослался, всего 2 GPIO доступно, плюс RX/TX тоже в режиме GPIO. Два их - на SDA/SCL, один на термодатчик, один на измерение влажности. А куда HT1632-то подключается?

Или модуль у Вас другой, с большим числом GPIO?

А вообще хочется самому разобраться во всём этом. Конечно, там разработчик проделал огромную работу, но ведь проект это у него коммерческий, и исходников нет - своего особо не добавишь.
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

WiseLord писал(а):А куда всё это подключено?
Или модуль у Вас другой, с большим числом GPIO?

я просто не посмотрел вашу ссылку. у меня ESP-12E модуль. там максимальное количество гпио выведено. даже еще остались свободные несколько..
Аватара пользователя
shura2000
Вымогатель припоя
Сообщения: 613
Зарегистрирован: Пн фев 23, 2015 21:17:29
Откуда: г. Протвино, МО

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение shura2000 »

Так на homes-smart.ru и не рекомендуют 01 версию.
Сам не глядя заказал такую. Теперь буду 12-ю заказывать.
Мои датчики http://narodmon.ru/9163

ПС. как то в сторону ушли. Может нужно отдельную ветку сделать?
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

у меня вот еще и графики рисовать может на флаймоне))
http://narodmon.ru/8415

http://esp8266.flymon.net/?macs=18FE34F8AFBB#!/index
kloker
Вымогатель припоя
Сообщения: 558
Зарегистрирован: Ср сен 09, 2015 13:09:15

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение kloker »

ksa69 писал(а):
WiseLord писал(а):Продолжая тему погодных станций...

Вчера забрал на почте пару....


я уже на такой esp8266 собрал метеостанцию с матрицей китайской, ds3231, DHT22, ds18b20 и bmp180. все выводится тоже на народмон и на матрицу бегущей строкой. ну и время по NTP само синхронизируется с ds3231. :))
ну еще умеет вся эта штука управляться через mqtt с помощью андроид-устройства. вобщем функций куча там.

p.s. поддержку матриц на HT1632c, Макс, разработчик прошивки сделал по моей просьбе))


а прошивкой esp8266 (12E) и схемкой подключения можете поделиться? у меня такой-же набор железок, включая китайскую матрицу на MAX7219 32x8 (повернутую на 90 в каждом модуле).
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

kloker писал(а):
а прошивкой esp8266 (12E) и схемкой подключения можете поделиться?

вот тут есть прошивки и описание подключения http://homes-smart.ru/index.php/oborudo ... arodmon-ru
Аватара пользователя
dt_andrew
Мявтор!
Сообщения: 2057
Зарегистрирован: Чт ноя 30, 2006 12:27:46
Откуда: Челябинск

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение dt_andrew »

это только датчики, а подключение матрицы и прочего?
поддержка, да есть в описании, конкретных примеров там нет, а именно это интиресно
Аватара пользователя
ksa69
Нашел транзистор. Понюхал.
Сообщения: 162
Зарегистрирован: Ср фев 02, 2011 16:22:32

Re: Часы на светодиодных матрицах с драйверами MAX7219

Сообщение ksa69 »

dt_andrew писал(а):это только датчики, а подключение матрицы и прочего?
поддержка, да есть в описании, конкретных примеров там нет, а именно это интиресно

всё есть.
собирате прошивку с установленными модулями матрицы и потом в веб-интерфейсе модуля, на вкладке "matrix" прописываете любые GPIO для подключения HT1632 или MAX7219.
для вывода на матрицу нужных параметров существует модуль "конструктор кода", его тоже включаете в прошивку перед ее сборкой и пишете там нужный код. примеры есть на сайте.
вот мой код часов к примеру

Спойлерvoid ICACHE_FLASH_ATTR
startfunc(){
// start funs
}

void ICACHE_FLASH_ATTR
timerfunc(uint32_t timersrc) {


//MATRIX_Brightness(8);
char data[200];

if(time_loc.sec<29){

if ( time_loc.sec & 1 ) // time_loc.sec & 1 != 0
{
os_sprintf(data, "%02d:%02d" , time_loc.hour, time_loc.min);
}
else
{
os_sprintf(data, "%02d %02d" , time_loc.hour, time_loc.min);
}
MATRIX_print (data,1,0);
}

if(time_loc.sec==29){


os_sprintf(data, " %02d/%02d/%d ", time_loc.day ,time_loc.month, time_loc.year);

os_sprintf(data+os_strlen(data), " Температура на улице %s°C ", strtofl(dht_t1));
os_sprintf (data+os_strlen(data), "Температура дома %02d.%d°C ", abs(data1wire[0]/10),abs(data1wire[0]%10));
os_sprintf(data+os_strlen(data), "Влажность %s% ", strtofl(dht_h1));
os_sprintf(data+os_strlen(data), " Атм. давление %sмм рт.ст. ",strtofl(bmp_p));


MATRIX_print (data,1,45);





}

}

void webfunc(char *pbuf) {

}
Ответить

Вернуться в «Статьи»