Часы на светодиодных матрицах с драйверами MAX7219
Re: Часы на светодиодных матрицах с драйверами MAX7219
вот так смотрится получше
Re: Часы на светодиодных матрицах с драйверами MAX7219
ув. WiseLord как убрать вертикальный скроллинг в часах и мин но оставить в сек
идея вот в чем
моргающие точки сек убрать совсем - оставить двоеточие постоянно в 1 пиксел
мин сместить влево
секунды соответственно тоже
индикацию будильника при 4 матрицах вывести на последнюю колонку
все вроде получилось
но при скроллинге мин артефакты возникают
игра с масками в display.h не помогает
хотя для сек и смещение и скроллинг с измененной маской очень даже работает
а вот с мин никак
идея вот в чем
моргающие точки сек убрать совсем - оставить двоеточие постоянно в 1 пиксел
мин сместить влево
секунды соответственно тоже
индикацию будильника при 4 матрицах вывести на последнюю колонку
все вроде получилось
но при скроллинге мин артефакты возникают
игра с масками в display.h не помогает
хотя для сек и смещение и скроллинг с измененной маской очень даже работает
а вот с мин никак
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Часы на светодиодных матрицах с драйверами MAX7219
Артефакты в режиме часов или при переключении на будильник? Там ведь те же маски используются.
И я что-то не понял: в режиме обычных цифр - ладно, возможно, экстра - тоже, а вот куда что смещать на больших цифрах - непонятно.
И я что-то не понял: в режиме обычных цифр - ладно, возможно, экстра - тоже, а вот куда что смещать на больших цифрах - непонятно.
Re: Часы на светодиодных матрицах с драйверами MAX7219
опять вопросик.. как в винде gcc 4.8 установить? комп поменял и теперь опять ищу и не могу найти где его скачать
Re: Часы на светодиодных матрицах с драйверами MAX7219
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 матрицам
что я сделал
оставил
в процедуре
изменил
в файле display.h
поменял маски
в результате все выводится как надо, скроллинг вертикальный в секундах как положено идет
а вот в единицах мин не скролируется левый столбец от символа
игрался в разную сторону маской
#define MASK_MIN_TENS 0x006F0000UL
#define MASK_MIN_UNITS 0x0007C000UL
так путного ничего не вышло
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
Не самое лучшее решение. Не факт, что список файлов компилятора одинаковый - может получиться мешанина версий. Лучше отдельно скачанный avr-gcc распаковать отдельно, и прописать его первым в PATH.dt_andrew писал(а):распоковать архив, затем скопировать с заменой в папку с WINAVR
эти маски для минут неправильные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 раз.
Re: Часы на светодиодных матрицах с драйверами MAX7219
может и так
но у меня чистый WINAVR компелил кекс который не лез в мегу8, после замены файлов все нормально
вот с такими масками стало работать как надо
но у меня чистый 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
Правильная маска для минут решила проблему?
Re: Часы на светодиодных матрицах с драйверами MAX7219
да! огромное спасибо за помощь
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Часы на светодиодных матрицах с драйверами MAX7219
Продолжая тему погодных станций...
Вчера забрал на почте пару WiFi-модулей. Подключил к модулю DHT22 и BMP180, залил (по UART) прошивку (описание проекта) - и вот результат на narodmon.ru. Пока всё это в виде макета, вывел "в народ" только давление, комнатные температура и влажность доступны только мне.
Проект поражает своей масштабностью (поддерживается куча железок). Прямо так и захотелось разобраться с этим модулем (там внутри неплохой ARM процессор, а в других вариантах модулей доступно больше выводов) и сообразить на нём что-то своё.
Вчера забрал на почте пару WiFi-модулей. Подключил к модулю DHT22 и BMP180, залил (по UART) прошивку (описание проекта) - и вот результат на narodmon.ru. Пока всё это в виде макета, вывел "в народ" только давление, комнатные температура и влажность доступны только мне.
Проект поражает своей масштабностью (поддерживается куча железок). Прямо так и захотелось разобраться с этим модулем (там внутри неплохой ARM процессор, а в других вариантах модулей доступно больше выводов) и сообразить на нём что-то своё.
Re: Часы на светодиодных матрицах с драйверами MAX7219
WiseLord писал(а):Продолжая тему погодных станций...
Вчера забрал на почте пару....
я уже на такой esp8266 собрал метеостанцию с матрицей китайской, ds3231, DHT22, ds18b20 и bmp180. все выводится тоже на народмон и на матрицу бегущей строкой. ну и время по NTP само синхронизируется с ds3231.
ну еще умеет вся эта штука управляться через mqtt с помощью андроид-устройства. вобщем функций куча там.
p.s. поддержку матриц на HT1632c, Макс, разработчик прошивки сделал по моей просьбе))
Re: Часы на светодиодных матрицах с драйверами MAX7219
хм... тыкаю кнопки хаотично и данные даты и времени сбиваются на 45ч 85мин и 45 сентября 2125 года.. что это может быть?
upd: нет. не тыкаю кнопки но примерно через минуту такая картина сама появляется..
upd: нет. не тыкаю кнопки но примерно через минуту такая картина сама появляется..
Последний раз редактировалось ksa69 Пт сен 18, 2015 09:53:23, всего редактировалось 1 раз.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Часы на светодиодных матрицах с драйверами MAX7219
А куда всё это подключено?
У того модуля, на который я сослался, всего 2 GPIO доступно, плюс RX/TX тоже в режиме GPIO. Два их - на SDA/SCL, один на термодатчик, один на измерение влажности. А куда HT1632-то подключается?
Или модуль у Вас другой, с большим числом GPIO?
А вообще хочется самому разобраться во всём этом. Конечно, там разработчик проделал огромную работу, но ведь проект это у него коммерческий, и исходников нет - своего особо не добавишь.
У того модуля, на который я сослался, всего 2 GPIO доступно, плюс RX/TX тоже в режиме GPIO. Два их - на SDA/SCL, один на термодатчик, один на измерение влажности. А куда HT1632-то подключается?
Или модуль у Вас другой, с большим числом GPIO?
А вообще хочется самому разобраться во всём этом. Конечно, там разработчик проделал огромную работу, но ведь проект это у него коммерческий, и исходников нет - своего особо не добавишь.
Re: Часы на светодиодных матрицах с драйверами MAX7219
WiseLord писал(а):А куда всё это подключено?
Или модуль у Вас другой, с большим числом GPIO?
я просто не посмотрел вашу ссылку. у меня ESP-12E модуль. там максимальное количество гпио выведено. даже еще остались свободные несколько..
- shura2000
- Вымогатель припоя
- Сообщения: 613
- Зарегистрирован: Пн фев 23, 2015 21:17:29
- Откуда: г. Протвино, МО
Re: Часы на светодиодных матрицах с драйверами MAX7219
Так на homes-smart.ru и не рекомендуют 01 версию.
Сам не глядя заказал такую. Теперь буду 12-ю заказывать.
Мои датчики http://narodmon.ru/9163
ПС. как то в сторону ушли. Может нужно отдельную ветку сделать?
Сам не глядя заказал такую. Теперь буду 12-ю заказывать.
Мои датчики http://narodmon.ru/9163
ПС. как то в сторону ушли. Может нужно отдельную ветку сделать?
Re: Часы на светодиодных матрицах с драйверами MAX7219
у меня вот еще и графики рисовать может на флаймоне))
http://narodmon.ru/8415
http://esp8266.flymon.net/?macs=18FE34F8AFBB#!/index
http://narodmon.ru/8415
http://esp8266.flymon.net/?macs=18FE34F8AFBB#!/index
Re: Часы на светодиодных матрицах с драйверами MAX7219
ksa69 писал(а):WiseLord писал(а):Продолжая тему погодных станций...
Вчера забрал на почте пару....
я уже на такой esp8266 собрал метеостанцию с матрицей китайской, ds3231, DHT22, ds18b20 и bmp180. все выводится тоже на народмон и на матрицу бегущей строкой. ну и время по NTP само синхронизируется с ds3231.![]()
ну еще умеет вся эта штука управляться через mqtt с помощью андроид-устройства. вобщем функций куча там.
p.s. поддержку матриц на HT1632c, Макс, разработчик прошивки сделал по моей просьбе))
а прошивкой esp8266 (12E) и схемкой подключения можете поделиться? у меня такой-же набор железок, включая китайскую матрицу на MAX7219 32x8 (повернутую на 90 в каждом модуле).
Re: Часы на светодиодных матрицах с драйверами MAX7219
kloker писал(а):
а прошивкой esp8266 (12E) и схемкой подключения можете поделиться?
вот тут есть прошивки и описание подключения http://homes-smart.ru/index.php/oborudo ... arodmon-ru
Re: Часы на светодиодных матрицах с драйверами MAX7219
это только датчики, а подключение матрицы и прочего?
поддержка, да есть в описании, конкретных примеров там нет, а именно это интиресно
поддержка, да есть в описании, конкретных примеров там нет, а именно это интиресно
Re: Часы на светодиодных матрицах с драйверами MAX7219
dt_andrew писал(а):это только датчики, а подключение матрицы и прочего?
поддержка, да есть в описании, конкретных примеров там нет, а именно это интиресно
всё есть.
собирате прошивку с установленными модулями матрицы и потом в веб-интерфейсе модуля, на вкладке "matrix" прописываете любые GPIO для подключения HT1632 или MAX7219.
для вывода на матрицу нужных параметров существует модуль "конструктор кода", его тоже включаете в прошивку перед ее сборкой и пишете там нужный код. примеры есть на сайте.
вот мой код часов к примеру
Спойлер
void ICACHE_FLASH_ATTRstartfunc(){
// 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) {
}