большие часы на крышу

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Вы что-то не то искали. Матрица 32х16, как я советовал -500 рублей на али, если монохром. А вам для часов цветная и не нужна, как мне кажется
Я когда искал ее, думал они цветные по 1200-1500+, а можно мне ссылку где они по 500р? Все что я искал либо косарь только одна доставка плюс матрица рублей 400-600))
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
@superflint, да, про доставку я и забыл
Вот нашел в россии по 600
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Пришли 4 зеленых матрицы Р10, может кто-либо направить в тему или прошивку на любом доступном контроллере для отображения попеременно часов, температуры и заранее забитой надписи? Везде только часы и термометр, в программировании современном не силен, было 20 лет назад последний раз, ниче непомню.
Кстати как лучше организовать память времени, чтобы при пропадании питания ненадо было лезть на трубу и подводить часы? Если использовать модуль часов ардуино с батарейкой, то он поидее должен находиться рядом с часами т.е. в моем случае на морозе и солнце, как бы это обыграть? А то в -30 думаю литиевая батарейка-таблетка покинет чат через 5 минут) До теплого помещения от места установки часов метров 8, также питание неохота 220 вести на крышу, как вариант толстые провода 2,5 или 4 квадрата от блока питания 12 вольт на такую длину помогут в ситуации? Или может использовать синхронизацию по вайфай через модуль есп? чтобы каждую минуту проверял время на каком либо сервере или на роутере? Как лучше сделать?
 
Изменено:

viktor1703

★★★✩✩✩✩
9 Дек 2021
540
133
питание неохота 220 вести на крышу, как вариант толстые провода 2,5 или 4 квадрата от блока питания 12 вольт
Охота или не охота, а питать матрицы всё равно чем-то нужно. Не от батарейки же. Тут ответ один: каждый др..... звпитывает свои устройства как он хочет.
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Тут ответ один: каждый др..... звпитывает свои устройства как он хочет.
Я хочу не как хочу, а как безопаснее, высокое напряжение на каркасе железной трубы на высоте как мне кажется наверное будет неправильно. Но на постоянке тоже будет просадка, а вот сильная или нет, незнаю. Пока ещё не собрал в корпус и не тестировал энергопотребление. Если небудет других вариантов, то придется конечно вести 220. Итак вся труба сейчас опутана витой парой)) висит poe камера поворотная и антенна микротик точка-точка, резервный интернет если оптику порвут, район новый, копают рукобулочные люди часто не там где надо!
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
Но на постоянке тоже будет просадка, а вот сильная или нет, незнаю.
4 монохромных матрицы при полном заполнении и яркости потребляют порядка 10А
Для часов заполнение надо взять примерно 25-30% - так что рассчитывайте на 3-4А

может кто-либо направить в тему или прошивку на любом доступном контроллере для отображения попеременно часов, температуры и заранее забитой надписи?
это можно и самому написать, тут кода будет строк на сто максимум
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
это можно и самому написать, тут кода будет строк на сто максимум
Можете помочь? Или может аналогичные варианты есть?
Вообще на 4х сегментах Р10 равномерно будут 4 цифры часов отображаться если максимально по высоте цифры выставить, или лучше сделать 2 строки, верхние 2 часы а нижние 2 температура меняющаяся на бегущую строку?
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
Можете помочь? Или может аналогичные варианты есть?
Я разрабатываю софт для таких матриц, правда не клиентского уровня (проекты), а библиотеку.

Вообще на 4х сегментах Р10 равномерно будут 4 цифры часов отображаться если максимально по высоте цифры выставить, или лучше сделать 2 строки, верхние 2 часы а нижние 2 температура меняющаяся на бегущую строку?
Технически можно и так и так. Фонты можно сделать любого размера.
Но вообще дизайн - не мое. Можете в любом графическом редакторе порисовать, подобрать варианты - а потом заказать кому-то сам код.
 
Изменено:
  • Лойс +1
Реакции: superflint

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Неплохо зеленый смотрится, а с расстояние 50 метров будет видно читаемо этот размер? Случайно нет фотки как эти часы издалека видны?
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
@superflint, нет, других фото нет.
Но вас 4 матрицы, так что шрифт можно сделать крупнее в 2 раза
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
А существуют готовые корпуса под эти матрицы? Получается мне нужна ip67 т.к. будет просто под дождем стоять и под снегом? Полностью наглушняк их заклеивают чтоли наулице?
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
@superflint,к сожалению, этого не знаю. Если хотите, могу свести вас с человеком, который делает эти табло профессионально. Но для него это бизнес и он будет заинтересован, чтобы получить заказ.
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Но для него это бизнес и он будет заинтересован, чтобы получить заказ.
Спасибо, я попробую сделать сам так как мне это вообще по большому счёту несрочно нужно и больше для интереса весь проект, тем более аналогичных очень много но надо немножко разобраться, проект то по сути не сложный, банально часы с термометром, я погуглю ещё, может кто поможет
 

bort707

★★★★★★✩
21 Сен 2020
2,893
860
@superflint,в общем, по коду если будут вопросы - обращайтесь. А по железкам у меня опыта мало.
 
  • Лойс +1
Реакции: superflint

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Есть рабочий код, пока без термометра, часы и надпись одновременно на экране, хотелось бы сделать отображение времени и текста кириллицей по очереди с определенным интервалом и шрифт во весь экран, а не 5х7, может кто подсказать по коду?
пока на одной матрице пробую.

C++:
#include <Wire.h>
#include "RTClib.h"
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------The SPI, DMD, TimerOne and Font libraries are used.
#include <SPI.h>      
#include <DMD.h>  
#include <TimerOne.h>
#include "SystemFont5x7.h"
//#include "SystemRus5x7.h"

//#include "Adafruit_GFX.h"
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------Configuration P10
#define DISPLAYS_ACROSS 1 //-> Number of P10 panels used, side to side.
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
//--------------------------------------------------------------------------------------

RTC_DS1307 rtc; //-> RTC Declaration

//--------------------------------------------------------------------------------------Variables for time and date
int _day, _month, _year, _hour24, _hour12, _minute, _second, _dtw;
int hr24;
String st;
char nameoftheday[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
char month_name[12][12] = {"January","February", "March", "April", "May", "June", "Jult", "August", "September", "October", "November", "December"};
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------Variable for Millis
const long interval = 1000; //-> Retrieve time and date data every 1 second
unsigned long previousMillis = 0;

const long interval_for_date = 75; //-> For scroll speed
unsigned long previousMillis_for_date = 0;
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------Variable to display hours and minutes
char hr_24 [3];
String str_hr_24;
char mn [3];
String str_mn;
char sc [3];
String str_sc;
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------
String strSecondRow;
char chrSecondRow[80];
int i=32;
int j;
int sr=1;
//--------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------ScanDMD()
void ScanDMD() {
  dmd.scanDisplayBySPI();
}
//--------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------setup
void setup() {
  Serial.begin(115200);
  Serial.println("Arduino RTC DS1307");
  delay(1000);

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (! rtc.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled (Set the time and date based on your computer time and date)
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //-> Set the time and date based on your computer time and date. If that doesn't work, use this line of code outside of "if (! rtc.isrunning())"
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
  // following line sets the RTC to the date & time this sketch was compiled (Set the time and date based on your computer time and date)
  //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //-> Set the time and date based on your computer time and date. Use this line of code if it doesn't work in "if (! rtc.isrunning())"
  //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  // If the time and date are successfully set, then deactivate the code line (make the code a comment), then re-upload the code.
  // if not done then the time and date will return to the beginning when it was set when arduino is reset or restarted.

  Timer1.initialize(1000);        
  Timer1.attachInterrupt(ScanDMD);  
  dmd.clearScreen(true);
  dmd.selectFont(SystemFont5x7);
  //dmd.selectFont(SystemRus5x7);
  //dmd.selectFont(Adafruit_GFX.h);

}
//--------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------loop
void loop() {
  //_____________________________________________________millis() to display time
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis; //-> save the last time

    GetDateTime(); //-> Retrieve time and date data from DS1307
   
   //=====================================================Showing hour in P10
   str_hr_24=String(_hour24);
   str_hr_24.toCharArray(hr_24,3);


   if (_hour24<10) {
      dmd.drawString(0, 0, "0", 1, GRAPHICS_NORMAL);
      dmd.drawString(6, 0, hr_24, 1, GRAPHICS_NORMAL);
    }
    else {
      dmd.drawString(0, 0, hr_24, 2, GRAPHICS_NORMAL);
    }
   
   //=====================================================
   
    //=====================================================Showing ":" in P10
    GetDateTime(); //-> Retrieve time and date data from DS1307
    if (_second %2 == 0) {
      dmd.drawString(13, 0, ":", 2, GRAPHICS_OR);
      dmd.drawString(31, 0, ":", 2, GRAPHICS_OR);
    }
    else {
      dmd.drawString(13, 0, ":", 2, GRAPHICS_NOR);
      dmd.drawString(31, 0, ":", 2, GRAPHICS_NOR);
    }
    //=====================================================
   
    //=====================================================Showing minutes in P10
    str_mn=String(_minute);
    str_mn.toCharArray(mn,3);

   if (_minute<10) {
      dmd.drawString(19, 0, "0", 1, GRAPHICS_NORMAL);
      dmd.drawString(25, 0, mn, 1, GRAPHICS_NORMAL);
    }
    else {
      dmd.drawString(19, 0, mn, 2, GRAPHICS_NORMAL);
    }
    //=====================================================
     //=====================================================Showing Secondds in P10
    str_sc=String(_second);
    str_sc.toCharArray(sc,4);

    if (_second<10) {
      dmd.drawString(37, 0, "0", 1, GRAPHICS_NORMAL);
      dmd.drawString(43, 0, sc, 1, GRAPHICS_NORMAL);
    }
    else {
      dmd.drawString(37, 0, sc, 2, GRAPHICS_NORMAL);
    }
    //========================================================
  }
  //_____________________________________________________

  //_____________________________________________________millis() for display / scrolling dates & other text
  unsigned long currentMillis_for_date = millis();
  if (currentMillis_for_date - previousMillis_for_date >= interval_for_date) {
    previousMillis_for_date = currentMillis_for_date; //-> save the last time

    //=====================================================Holds date data and other text to display
    switch (sr) {
    case 1:
      strSecondRow = String(nameoftheday[_dtw]) + ", " + String(_day) + "-" + String(month_name[_month-1]) + "-" + String(_year);
      strSecondRow.toCharArray(chrSecondRow,80);
      j=strlen(chrSecondRow)+(strlen(chrSecondRow)*5);
      break;
    case 2:
      strSecondRow = "MAKARENKO - 14";
      strSecondRow.toCharArray(chrSecondRow,80);
      j=strlen(chrSecondRow)+(strlen(chrSecondRow)*5);
      break;
    }
    //=====================================================
   
    i--;
    dmd.drawString(i, 9, chrSecondRow, strlen(chrSecondRow), GRAPHICS_NORMAL);
    if (i<=~j) {
      i=32;
      sr++;
      if (sr>2) sr=1;
    }
  }
  //_____________________________________________________
}
//--------------------------------------------------------------------------------------

//------------------------------------------------------------------------Subroutine to retrieve or update the time and date from DS1307
void GetDateTime() {
  DateTime now = rtc.now();
  _day=now.day();
  _month=now.month();
  _year=now.year();
  _hour24=now.hour();
  _minute=now.minute();
  _second=now.second();
  _dtw=now.dayOfTheWeek();

  if (_hour24>=12) {
    dmd.drawString(51, 0, "PM", 2, GRAPHICS_NORMAL);
   }

  if (_hour24>=0 and _hour24<=11) {
    dmd.drawString(51,0, "AM", 2, GRAPHICS_NORMAL);
  }


  if (_hour24>12) {
     _hour24=_hour24-12;
  }
  else if (_hour24==0) {
    _hour24=12;
  }
  else {
    _hour24=_hour24;
  }
}
//------------------------------------------------------------------------
 

Вложения

ASM

★★★★✩✩✩
26 Окт 2018
1,514
294
@superflint, используй шрифты и посмотри другую библиотеку, или это монохром? Первая похожая тема внизу, посмотри пример.
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Управляется либо покупным контроллером (на Али полно разных), либо самописной программой на ардуино (Мега, ЕСП32, СТМ32)
Можете посоветовать контроллер чтобы выполнил мои задачи? текст русский крупным планом попеременно с часами и температурой?
Муть какая-то с русским большим шрифтом у меня, с мелким вроде разобрался, но плохо читаемо 5х7, хотелось бы моноширинный шрифт во всю матрицу высотой 16 пикселей
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
Всем спасибо за советы, тему можно закрывать, решил проблему без ардуино, покупкой контроллера HD-W02 за 500 рублей, возможностей больше и проще в разработке программы, а ардуинку пущу на простые часы с одной панелькой в гараж)
 

Вложения

  • Лойс +1
Реакции: bort707

bort707

★★★★★★✩
21 Сен 2020
2,893
860
@superflint, ну и правильно.
По вопросам было сразу ясно, что задача для вас сложновата
 

superflint

✩✩✩✩✩✩✩
14 Авг 2019
34
3
@superflint, ну и правильно.
По вопросам было сразу ясно, что задача для вас сложновата
ну я и обратился на форум за помощью, если б кто посоветовал контроллер сразу, то я его б и взял давно, я про них спрашивал т.к. их куча разновидностей :) В общем этот вопрос решен, часы из 3х матриц вышли 1300р, матрицы бу с авито по 200р+ доставка 200 и контроллер 500, блоков питания гора разных халявных имеется. Осталось собрать корпус, профиль стоит дороже матриц))) Либо повешу табличку под свес кровли, там влагозащищенность особо ненужна, свес кровли большой - 1,2 метра, дождь не достанет.
всем спасибо за советы!