светодиодная матрица на MAX7219 базе Max72xxPanel создаем бегущую строку с помощью переменных.

герой
Offline
Зарегистрирован: 24.02.2019

сбрось код за ранее благодарю

герой
Offline
Зарегистрирован: 24.02.2019

Toropizhka пишет:

Ворота пишет:

герой пишет:

кто поскажет как увеличить время задержки показа информацыи и как добавить нули к чясам чтоб было 05:03 и дата 07/03/2019

Никто.

В "чясах" время задержки показа "информацыи" никак "ниувиличиваецца".

От проекта зависит. Я начинал с таймера, потом бегущая строка. Теперь время показывает постоянно, а бегущей строкой выводятся календарь и погода через промежутки времени, заданные в программе. При желании код сброшу сюда...  код сбрось

Ardo23
Offline
Зарегистрирован: 29.12.2016

Toropizhka пишет:

Подскажите мигающие точки, пожалуйста.

Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.  

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

герой пишет:

сбрось код за ранее благодарю

Сейчас код такой. Постоянно переписываю, дорабатываю. Русификацию убрал из экономии памяти. Библиотеки лучше брат в оригинале, я свои немного подкорректировал...

// Библиотеки
   #include <SPI.h>
   #include <Wire.h>
   #include <Adafruit_GFX.h>
   #include <Max72xxPanel.h>
   #include <iarduino_DHT.h>
   #include <iarduino_RTC.h>

// Подключение пьезоэлемента: Black - GND, Red - 5
   int soundPin = 5; 
// Подключение матриц, количество по вертикали и горизонтали: CLK - 13, DIN - 11, CS - 9
   int pinCS = 9;
   int numberOfHorizontalDisplays = 1;
   int numberOfVerticalDisplays = 6;
   Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);
// Подключение DHT22 на улице и в комнате: PIN1 - +5V, PIN2 - 2(3), PIN4 - GND
   iarduino_DHT sensor1(2);
   iarduino_DHT sensor2(3);
// Подключение DS1307: SDA - A4, SCL - A5
// Объект time для работы с модулем RTC на базе чипа DS1307, аппаратная шина I2C:
   iarduino_RTC time(RTC_DS1307);
// Символ часов
   const byte data[8]={B00111000,B01010100,B10010010,B11110010,B10000010,B01000100,B00111000,B00000000};

   String clocks;
   String weather;
   String calendar;
//====================================================================================
void setup(void)
// Назначение PIN5 режима работы "Выход":
{  pinMode(soundPin, OUTPUT);
// Инициализация модуля RTC DS1307:
   time.begin();
// Яркость матриц (от 0 до 15) и направление текста (1 - 90 гр., 2 - 180 гр., 3 - 270 гр.):
   matrix.setIntensity(1);
   matrix.setRotation(3);
   delay(60000);   
}
//====================================================================================
void loop(void)
{  DisplayData();
   DisplayTime();
// Чтение показаний датчиков DHT22:
   switch(sensor1.read()){}
   switch(sensor2.read()){}
// Звуковое сопровождение каждого часа c 06:00 до 22:00 на 0-й секунде в течение 5-и секунд:
   if(((time.Hours==6 || time.Hours==7 || time.Hours==8 || time.Hours==9 || time.Hours==10 || time.Hours==11 || time.Hours==12 || time.Hours==13 || time.Hours==14 || time.Hours==15 || time.Hours==16 || time.Hours==17 || time.Hours==18 || time.Hours==19 || time.Hours==20 || time.Hours==21 || time.Hours==22) && time.minutes==0) && time.seconds==0) {
   analogWrite(soundPin, 255); delay(500); analogWrite(soundPin, 0); delay(500);
   analogWrite(soundPin, 255); delay(500); analogWrite(soundPin, 0); delay(500);
   analogWrite(soundPin, 255); delay(500); analogWrite(soundPin, 0); delay(500);
   analogWrite(soundPin, 255); delay(500); analogWrite(soundPin, 0); delay(500);
   analogWrite(soundPin, 255); delay(500); analogWrite(soundPin, 0); delay(500);}
// Запуск бегущей строки каждые 5 минут на 0-й секунде и запись показаний температуры/влажности в бегущую строку:
   if((time.minutes==4 || time.minutes==9 || time.minutes==14 || time.minutes==19 || time.minutes==24 || time.minutes==29 || time.minutes==34 || time.minutes==39 || time.minutes==44 || time.minutes==49 || time.minutes==54) && time.seconds==0)
   {ScrollText(weather);}
// Запуск бегущей строки каждые 15 минут на 0-й секунде и запись календаря в бегущую строку:
   if((time.minutes==5 || time.minutes==15 || time.minutes==30 || time.minutes==45) && time.seconds==0)
   {ScrollText(calendar);}
}
//====================================================================================
void ScrollText (String text)
  // Скорость бегущей строки:
{  int wait = 50;
// Центровка данных по вертикали:
   int y = (matrix.height() - 8) / 2;
// Расстояние между буквами (в точках) и размер шрифта (прописные буквы, в точках):
   int spacer = 1;
   int width = 5 + spacer;
   int refresh=0;
   for (int i = 0 ; i < width * text.length() + matrix.width() - 1 - spacer; i++)
   {if (refresh==1) i=0; refresh=0;
   matrix.fillScreen(LOW);
   int letter = i / width;
   int x = (matrix.width() - 1) - i % width;
   while (x + width - spacer >= 0 && letter >= 0)
   {if (letter < text.length())
   {matrix.drawChar(x, y, text[letter], HIGH, LOW, 1);}
   letter--; x -= width;}
// Вывод бегущей строки на дисплей:
   matrix.write();
   delay(wait);}
}
//====================================================================================
void DisplayData()
// Формирование показаний календаря  в бегущей строке:
{  calendar = ((String)+time.gettime("d.m.Y"));
// Формирование показаний температуры и влажности в бегущей строке:
   weather  = ((String)+"{ "+sensor1.tem+"'C" +"   } "+sensor1.hum+"%"+"   | "+sensor2.tem+"'C" +"   } "+sensor2.hum+"%");
}
//====================================================================================
void DisplayTime()
// Очистка матрицы   
{  matrix.fillScreen(LOW);
// Формирование символа часов и вывод на дисплей:
   for ( int y = 0; y < 8; y++ ) {for ( int x = 0; x < 8; x++ ) {matrix.drawPixel(x, y, data[y] & (1<<x));}}
// Получение и вывод текущего времени:
   clocks = String(time.gettime("Hi"));
// Положение текущего времени по горизонтали:
   int xh = 19;
   int xi = 36;
// Центровка текущего времени по вертикали:
   int y = (matrix.height() - 8) / 2;
// Отображение двоеточия между часами и минутами по центру:
   matrix.drawChar(31, y, (String(":"))[0], HIGH, LOW, 1);
// Формирование показаний текущего времени и вывод на дисплей:
   matrix.drawChar(xh, y, clocks[0], HIGH, LOW, 1);
   matrix.drawChar(xh+6, y, clocks[1], HIGH, LOW, 1);
   matrix.drawChar(xi, y, clocks[2], HIGH, LOW, 1);
   matrix.drawChar(xi+6, y, clocks[3], HIGH, LOW, 1);
   matrix.write();
}

 

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

Ardo23 пишет:

Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.  

Наслышан, читал, но пока не добрался. В режиме таймера нормально точки мигали. Сечас с часиками и "стрингами" намаялся, последние и правда память сильно вешают, датчики иногда зависают и приходится перезагрузку делать...

герой
Offline
Зарегистрирован: 24.02.2019

благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность ***  на уличе ****  дата ****  и на Русском 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

герой пишет:

благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность ***  на уличе ****  дата ****  и на Русском 

Тебе уже двое говорили (я - третий): "чясы" на русском не бывают!!!

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

герой пишет:

благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность ***  на уличе ****  дата ****  и на Русском 

Вы вообще удивительный человек! Здесь достаточно почитать тему и "чясики" русскими станут и секунды побегут. А писать для Вас лично коды с Вашими хотелками времени нет, да и желания...

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

Ardo23 пишет:

Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.  

"Покурил" Тырнет и нашёл решение: объявил переменные и заменил строку с двоеточием на мигающие точки

int h, i, s

h = time.Hours();
i = time.minutes();
s = time.seconds();

if(s & 1){matrix.drawChar(31, y, (String(":"))[0], HIGH, LOW, 1);}
else{matrix.drawChar(31, y, (String(" "))[0], HIGH, LOW, 1);}

Двоеточие теперь мигает между часами и минутами ;)

Ardo23
Offline
Зарегистрирован: 29.12.2016

Toropizhka пишет:

"Покурил" Тырнет и нашёл решение

отлично. 

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Toropizhka пишет:

Двоеточие теперь мигает между часами и минутами ;)

Так в том-то и дело. А ТС между "чясами" надо! Ты вот такой найди. Это-то и дурак найдёт.

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

Ardo23 пишет:

отлично. 

Плучил долгожданные SD-приколюшки. Сижу изучаю как перенести часть кода на SD-карту. Попутно решил проблему DS1307. Наслышан про "дезертирство" сего модуля, у меня за неделю время до 12 мин. убегало вперёд. "Залил" точное время, через сутки проверю и выставлю корректировку. Каки прежде, "курю" Тырнет, поскольку углубляться в Datasheet времени физически не хватает...

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

Ворота пишет:

Так в том-то и дело. А ТС между "чясами" надо! Ты вот такой найди. Это-то и дурак найдёт.

1. Ху из ТС? Уточните вопрос, плиз...

2. Если дурак нашёл, что же Вы спрашиваете? Сдвинуть влево "чясики" много ума не надо: добавить в коде отоброжение секунд и указать координаты. В #79 у меня было 8 матриц и там был таймер, а в #104 уже DS1307 и 6 матриц. Так что как ни крути, в моём коде двигай не двигай, а секунды просто физически не влезут...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Toropizhka, Вы не поняли шутки. Это был троллинг "героя"

"герой" просил сделать "чясы", а Вы нашли про "часы". Т.е. не выполнили его просьбу! Слабо оказалось! А про "часы" - и дурак найдёт :)))))

А ТС - это "топикстартер", но в данном случае это "герой", влезший в чужой топик.

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

ЕвгенийП пишет:

Toropizhka, Вы не поняли шутки. Это был троллинг "героя"

Спасибо, понял. Ответил тем же, наперёд уже зная ещё кучу вопросов, суть которых сведётся к одному - "Сбрось код, заранее благодарю!". Иногда постебаться полезно)...

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

Действующий "продукт": https://yadi.sk/i/pUokPyuRTwQVbA

"Зонтик" и "капелька" - датчик DHT22 за балконом.

"Домик" и "капелька" - датчик DHT22 в комнате.

Символы переписывал при помощи сервиса http://xantorohara.github.io/led-matrix-editor/#0000000000000000, т.е. заменил в файле c:\Program Files\ArduinoIDE\libraries\Adafruit_GFX\glcdfont.c ненужные символы своими...

b707
Онлайн
Зарегистрирован: 26.05.2017

Toropizhka пишет:

Плучил долгожданные SD-приколюшки. Сижу изучаю как перенести часть кода на SD-карту.

перенести часть программного кода на СД-карту? - невозможно

Ardo23
Offline
Зарегистрирован: 29.12.2016

Toropizhka пишет:

Действующий "продукт": https://yadi.sk/i/pUokPyuRTwQVbA

Красота. Есть ребята делают такие строчки только на ESP8266 c WIFI. Время , погоду, температуру - можно не подключать свои датчики, а брать из сети+ делать настройки с телефона. Время всегда будет точное, но при наличии интернета.  Сейчас начали корпуса делать из фанеры, орг.стекла и кусочка солнцезащитной пленки- смотрится очень необычно.  https://youtu.be/X2Y_R-KwVOo  Можно на ЕСПшку подключить свои датчики - домашние , которых нет в сети - отправлять их в Народный монитор, а уже другой ЕСП брать их из сети и выводить на строку.  Появляется опция- узнай показания своих датчиков в любой точке мира. 

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

Ardo23 пишет:

Красота. Есть ребята делают такие строчки только на ESP8266 c WIFI... 

Спасибо. Читал, смотрел, понравилось. Народный мониторинг стал одной из причин увлечения проектом в принципе. Единственное, что смущало - брать погоду из Сети. У нас в разных районах города может быть разная погода, а данные Сети вообще привязаны к областному центру в 30-и километрах. Поэтому хотелось иметь свои данные. Передать в Народный мониторинг - да хорошая идея, брать погоду из Сети - для меня идея не интересная. Кроме того, есть своя "хотелка" и даже с учётом извечного вопроса "Где взять память?" отказываться от неё не собираюсь. Ответов на разных форумах было масса, от "напоминалка лишняя" до "купи себе метеостанцию и не лечи мозги". У меня есть своя "хотелка" и интерес собрать своими руками, а не убирать лишнее или вовсе покупать готовый продукт. Да, долго. Да, дорого. Но у каждого свои тараканы в голове, мои меня вполне устраивают...

arduinec
Offline
Зарегистрирован: 01.09.2015

Toropizhka пишет:
Сечас с часиками и "стрингами" намаялся, последние и правда память сильно вешают

Вместо String-строк можно использовать char-строки (пост #40): http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...

Toropizhka пишет:
Символы переписывал при помощи сервиса ... т.е. заменил в файле c:\Program Files\ArduinoIDE\libraries\Adafruit_GFX\glcdfont.c ненужные символы своими...

Редактирование символов описано в постах #27 и #31: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

arduinec пишет:

Вместо String-строк можно использовать char-строки (пост #40): http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...

Редактирование символов описано в постах #27 и #31: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...

Спасибо, как-то читал. Эта тема в общем мне хорошо помогла при русификации бегущей строки :)...

chekan216
Offline
Зарегистрирован: 02.07.2019

код не рабочий

Toropizhka
Toropizhka аватар
Offline
Зарегистрирован: 27.08.2018

chekan216 пишет:

код не рабочий

Какой код и что именно не работает?

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

Всем привет.

 Max7219 4 сегмента +  Arduino UNO

код не правил подключился как в коде, с английскими символами проблем нет.

glcdfont.c менял на варианты с разных источников, варианты utf8rus, с разными сдвигами тоже все перепробывал.

 

нет ркусского и все =(

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mr.Inker пишет:

Max7219 4 сегмента +  Arduino UNO

Лежат в ящике стола каждая в своей коробочке? Скручены вместе синей изолентой? Или собраны по какой-то секретной схеме?

Mr.Inker пишет:

код не правил 

Какой код?

Mr.Inker пишет:

подключился как в коде

В каком?

Mr.Inker пишет:

glcdfont.c 

Это ещё что?

Вы откуда, вообще, выпрыгнули?

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

ЕвгенийП пишет:

ящике стола каждая в своей коробочке? Скручены вместе синей изолентой? Или собраны по какой-то секретной схеме?

Согласно Datasheet

ЕвгенийП пишет:

Какой код?

из первого поста

ЕвгенийП пишет:

В каком?

С коде из первого поста

ЕвгенийП пишет:

Это ещё что?

Если вы не в курсе что это за файл и зачем он, вы явно не из тех, кто способен мне помочь.

ЕвгенийП пишет:

Вы откуда, вообще, выпрыгнули?

Из гугла =)

bwn
Offline
Зарегистрирован: 25.08.2014

Mr.Inker пишет:

ЕвгенийП пишет:

Это ещё что?

Если вы не в курсе что это за файл и зачем он, вы явно не из тех, кто способен мне помочь.

Замершее сообщество, с интересом смотрит виртуозное исполнение трюка - "наступи себе на яйца".))))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mr.Inker пишет:
вы явно не из тех, кто способен мне помочь.
Вы не представляете, как меня это огорчает. Ну, удачи :-)

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

ЕвгенийП пишет:

Вы не представляете, как меня это огорчает. Ну, удачи :-)

 

Не хотел вас расстроить, Удачи! =)

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

И снова здравствуйте.

Уф, разобрался, и хоть вежливость в этом топике не очень котируется, но вдруг кто-то столкнется с подобным, и ему мое решение пригодится =)

В общем, с кодом из первого проста у меня никак не получалось реализовать русский язык.

Оказалось все банально. У меня была уставновлена библиотека Adafruit_GFX аж два раза =)

Первый в "документы/Arduino/libraries", второй в папке самого "Arduino IDE/libraries", при этом я заменял glcdfont.c  только в одной из них, а компилятор подтягивал другую.

в общем грохнул библиотеку Adafruit_GFX в "документы/Arduino/libraries", убедился, что glcdfont.c с русскими буквами там где должен, и все заработало.

В общем не за что.

Удачи всем )

Ardo23
Offline
Зарегистрирован: 29.12.2016

НАЛИВАЙ!!!! Самый лучший вариант когда сам разобрался и понял что дело было не бабине ....  Еще поразило утверждение что русского языка не бывает , при том что куча видео с русскими буквами. 

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

Ardo23 пишет:

НАЛИВАЙ!!!! Самый лучший вариант когда сам разобрался и понял что дело было не бабине ....  Еще поразило утверждение что русского языка не бывает , при том что куча видео с русскими буквами. 

А Налью! Хоть и не люблю пить с хамоватыми организмами'c =)

Жахнули, а теперь можно поговорить "по душам":

Ты в глаза долбишься или при рождении уроненый? Где я утверждал, что русского языка нет? Я просил помощи с тем, что русский не работает у меня. Да, набирал с телефона и получилось кривовато =). А в ответ получил стеб и хамство, а хамам я больше одного, максимум двух раз не отвечаю ;)

Кстати, в твоем сообщении тоже явные проблемы с русский языком, тебе бы тоже библиотеки не помешало бы подтянуть) 

 

PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it)..

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Mr.Inker пишет:
PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it).
Во-во. Каждая регистрация на разных форумах дает +1 в статику к вашему персу.Чем больше регистраций на разных форумов, тем больше гарантия получить крит при использовании навыка. 

ПС: В обучении не важен характер учителя, а важно умение научиться от ученика. Вот с желанием учиться у теперешнего народа туго.

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

qwone пишет:

Mr.Inker пишет:
PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it).
Во-во. Каждая регистрация на разных форумах дает +1 в статику к вашему персу.Чем больше регистраций на разных форумов, тем больше гарантия получить крит при использовании навыка. 

ПС: В обучении не важен характер учителя, а важно умение научиться от ученика. Вот с желанием учиться у теперешнего народа туго.

отчасти я с вами согласен.

Конечно, нужно учиться. И любить учиться =)

Но, например, я уже не в том возрасте, что бы  терпеть "говнистость" некоторых персонажей, даже ради новых знаний. Гордость не позволяет. Проще найти другого, адекватного, учителя.

Я как институт закончил, всегда придерживаюсь этого правила. Зачем себя мучать общением с человеком, который тебе не приятен? Не понимаю.

b707
Онлайн
Зарегистрирован: 26.05.2017

Mr.Inker пишет:

Но, например, я уже не в том возрасте, что бы  терпеть "говнистость" некоторых персонажей, даже ради новых знаний. Гордость не позволяет. Проще найти другого, адекватного, учителя.

ага... или просто бросить обучение, зачем себя мучить.

К сожалению... или к счастью - но мой опыт подсказывает, что больше всего можно научиться как раз именно у "говнистых" персонажей. Видимо высокий IQ плохо уживаются с вежливостью к окружающим, большинство из которых представляются учителю с его интеллектуальной высоты реальными даунами.

А вот вежливые и приветливые учителя на поверку часто оказываются пустозвонами. Хотя, конечно. "говнистость" еще не гарантия высоких знаний :)

А чтобы не ущемлять вашу гордость - можно учиться по книжкам. "Я, как институт закончил - всегда придерживаюсь этого правила" (с)

Mr.Inker
Offline
Зарегистрирован: 18.01.2020

 

 

 

 

Все правильно сказано, и если реального выбора нет, можно и потерпеть )

Но в данном случае он есть.

и 5 лет программирования в ВУЗе (С и С++ и даже немного бэйсика ... бррр), к сожалению, не востребованные за последние 22 года (работаю по "железу"), до того момента, как занялся ардуинкой и решил учиться )

В общем, за месяц, как мне в руки попал стартовый набор ардуино, я впервые столкнулся со случаем, когда не смог(вот сразу, как привык) разобраться, ибо все делал правильно... даже разобрался как рекомпилить glcdfont.c со своим шрифтом, и в итоге как в utf8rus делать сдвиги...

но такой нюанс, как работа с библиотеками в Arduino IDE, и что он с репо, сохраняет библиотеки не в основную папку, которой я считал папку установки программы, а,почему то, в папку со скетчами.. для меня был удивителен. 

и разобрался, в итоге, сам.

ПС

и 2 учебника у меня тоже в быстром доступе )

Монк и Блум. Почитываю перед сном. Но уже даже боюсь представить, что местное комьюнити скажет про эти учебники... =DDD

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Mr.Inker пишет:
Монк и Блум. Почитываю перед сном. Но уже даже боюсь представить, что местное комьюнити скажет про эти учебники... =DDD
Замечательные "детские" книжки для чтения перед сном. Но чем быстрее из них вырастите , тем более сложный напишите проект программы сможете написать.

linas100
Offline
Зарегистрирован: 19.04.2020

Privet ske4 budet rabotat na DS3231?