кто поскажет как увеличить время задержки показа информацыи и как добавить нули к чясам чтоб было 05:03 и дата 07/03/2019
Никто.
В "чясах" время задержки показа "информацыи" никак "ниувиличиваецца".
От проекта зависит. Я начинал с таймера, потом бегущая строка. Теперь время показывает постоянно, а бегущей строкой выводятся календарь и погода через промежутки времени, заданные в программе. При желании код сброшу сюда... код сбрось
Сейчас код такой. Постоянно переписываю, дорабатываю. Русификацию убрал из экономии памяти. Библиотеки лучше брат в оригинале, я свои немного подкорректировал...
// Библиотеки
#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();
}
Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.
Наслышан, читал, но пока не добрался. В режиме таймера нормально точки мигали. Сечас с часиками и "стрингами" намаялся, последние и правда память сильно вешают, датчики иногда зависают и приходится перезагрузку делать...
благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность *** на уличе **** дата **** и на Русском
благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность *** на уличе **** дата **** и на Русском
Тебе уже двое говорили (я - третий): "чясы" на русском не бывают!!!
благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность *** на уличе **** дата **** и на Русском
Вы вообще удивительный человек! Здесь достаточно почитать тему и "чясики" русскими станут и секунды побегут. А писать для Вас лично коды с Вашими хотелками времени нет, да и желания...
Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.
"Покурил" Тырнет и нашёл решение: объявил переменные и заменил строку с двоеточием на мигающие точки
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);}
Двоеточие теперь мигает между часами и минутами ;)
Плучил долгожданные SD-приколюшки. Сижу изучаю как перенести часть кода на SD-карту. Попутно решил проблему DS1307. Наслышан про "дезертирство" сего модуля, у меня за неделю время до 12 мин. убегало вперёд. "Залил" точное время, через сутки проверю и выставлю корректировку. Каки прежде, "курю" Тырнет, поскольку углубляться в Datasheet времени физически не хватает...
Так в том-то и дело. А ТС между "чясами" надо! Ты вот такой найди. Это-то и дурак найдёт.
1. Ху из ТС? Уточните вопрос, плиз...
2. Если дурак нашёл, что же Вы спрашиваете? Сдвинуть влево "чясики" много ума не надо: добавить в коде отоброжение секунд и указать координаты. В #79 у меня было 8 матриц и там был таймер, а в #104 уже DS1307 и 6 матриц. Так что как ни крути, в моём коде двигай не двигай, а секунды просто физически не влезут...
Toropizhka, Вы не поняли шутки. Это был троллинг "героя"
Спасибо, понял. Ответил тем же, наперёд уже зная ещё кучу вопросов, суть которых сведётся к одному - "Сбрось код, заранее благодарю!". Иногда постебаться полезно)...
Красота. Есть ребята делают такие строчки только на ESP8266 c WIFI. Время , погоду, температуру - можно не подключать свои датчики, а брать из сети+ делать настройки с телефона. Время всегда будет точное, но при наличии интернета. Сейчас начали корпуса делать из фанеры, орг.стекла и кусочка солнцезащитной пленки- смотрится очень необычно. https://youtu.be/X2Y_R-KwVOo Можно на ЕСПшку подключить свои датчики - домашние , которых нет в сети - отправлять их в Народный монитор, а уже другой ЕСП брать их из сети и выводить на строку. Появляется опция- узнай показания своих датчиков в любой точке мира.
Красота. Есть ребята делают такие строчки только на ESP8266 c WIFI...
Спасибо. Читал, смотрел, понравилось. Народный мониторинг стал одной из причин увлечения проектом в принципе. Единственное, что смущало - брать погоду из Сети. У нас в разных районах города может быть разная погода, а данные Сети вообще привязаны к областному центру в 30-и километрах. Поэтому хотелось иметь свои данные. Передать в Народный мониторинг - да хорошая идея, брать погоду из Сети - для меня идея не интересная. Кроме того, есть своя "хотелка" и даже с учётом извечного вопроса "Где взять память?" отказываться от неё не собираюсь. Ответов на разных форумах было масса, от "напоминалка лишняя" до "купи себе метеостанцию и не лечи мозги". У меня есть своя "хотелка" и интерес собрать своими руками, а не убирать лишнее или вовсе покупать готовый продукт. Да, долго. Да, дорого. Но у каждого свои тараканы в голове, мои меня вполне устраивают...
Символы переписывал при помощи сервиса ... т.е. заменил в файле c:\Program Files\ArduinoIDE\libraries\Adafruit_GFX\glcdfont.c ненужные символы своими...
Уф, разобрался, и хоть вежливость в этом топике не очень котируется, но вдруг кто-то столкнется с подобным, и ему мое решение пригодится =)
В общем, с кодом из первого проста у меня никак не получалось реализовать русский язык.
Оказалось все банально. У меня была уставновлена библиотека Adafruit_GFX аж два раза =)
Первый в "документы/Arduino/libraries", второй в папке самого "Arduino IDE/libraries", при этом я заменял glcdfont.c только в одной из них, а компилятор подтягивал другую.
в общем грохнул библиотеку Adafruit_GFX в "документы/Arduino/libraries", убедился, что glcdfont.c с русскими буквами там где должен, и все заработало.
НАЛИВАЙ!!!! Самый лучший вариант когда сам разобрался и понял что дело было не бабине .... Еще поразило утверждение что русского языка не бывает , при том что куча видео с русскими буквами.
НАЛИВАЙ!!!! Самый лучший вариант когда сам разобрался и понял что дело было не бабине .... Еще поразило утверждение что русского языка не бывает , при том что куча видео с русскими буквами.
А Налью! Хоть и не люблю пить с хамоватыми организмами'c =)
Жахнули, а теперь можно поговорить "по душам":
Ты в глаза долбишься или при рождении уроненый? Где я утверждал, что русского языка нет? Я просил помощи с тем, что русский не работает у меня. Да, набирал с телефона и получилось кривовато =). А в ответ получил стеб и хамство, а хамам я больше одного, максимум двух раз не отвечаю ;)
Кстати, в твоем сообщении тоже явные проблемы с русский языком, тебе бы тоже библиотеки не помешало бы подтянуть)
PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it)..
PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it).
Во-во. Каждая регистрация на разных форумах дает +1 в статику к вашему персу.Чем больше регистраций на разных форумов, тем больше гарантия получить крит при использовании навыка.
ПС: В обучении не важен характер учителя, а важно умение научиться от ученика. Вот с желанием учиться у теперешнего народа туго.
PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it).
Во-во. Каждая регистрация на разных форумах дает +1 в статику к вашему персу.Чем больше регистраций на разных форумов, тем больше гарантия получить крит при использовании навыка.
ПС: В обучении не важен характер учителя, а важно умение научиться от ученика. Вот с желанием учиться у теперешнего народа туго.
отчасти я с вами согласен.
Конечно, нужно учиться. И любить учиться =)
Но, например, я уже не в том возрасте, что бы терпеть "говнистость" некоторых персонажей, даже ради новых знаний. Гордость не позволяет. Проще найти другого, адекватного, учителя.
Я как институт закончил, всегда придерживаюсь этого правила. Зачем себя мучать общением с человеком, который тебе не приятен? Не понимаю.
Но, например, я уже не в том возрасте, что бы терпеть "говнистость" некоторых персонажей, даже ради новых знаний. Гордость не позволяет. Проще найти другого, адекватного, учителя.
ага... или просто бросить обучение, зачем себя мучить.
К сожалению... или к счастью - но мой опыт подсказывает, что больше всего можно научиться как раз именно у "говнистых" персонажей. Видимо высокий IQ плохо уживаются с вежливостью к окружающим, большинство из которых представляются учителю с его интеллектуальной высоты реальными даунами.
А вот вежливые и приветливые учителя на поверку часто оказываются пустозвонами. Хотя, конечно. "говнистость" еще не гарантия высоких знаний :)
А чтобы не ущемлять вашу гордость - можно учиться по книжкам. "Я, как институт закончил - всегда придерживаюсь этого правила" (с)
Все правильно сказано, и если реального выбора нет, можно и потерпеть )
Но в данном случае он есть.
и 5 лет программирования в ВУЗе (С и С++ и даже немного бэйсика ... бррр), к сожалению, не востребованные за последние 22 года (работаю по "железу"), до того момента, как занялся ардуинкой и решил учиться )
В общем, за месяц, как мне в руки попал стартовый набор ардуино, я впервые столкнулся со случаем, когда не смог(вот сразу, как привык) разобраться, ибо все делал правильно... даже разобрался как рекомпилить glcdfont.c со своим шрифтом, и в итоге как в utf8rus делать сдвиги...
но такой нюанс, как работа с библиотеками в Arduino IDE, и что он с репо, сохраняет библиотеки не в основную папку, которой я считал папку установки программы, а,почему то, в папку со скетчами.. для меня был удивителен.
и разобрался, в итоге, сам.
ПС
и 2 учебника у меня тоже в быстром доступе )
Монк и Блум. Почитываю перед сном. Но уже даже боюсь представить, что местное комьюнити скажет про эти учебники... =DDD
// Подключаем библиотеки:
#include <SPI.h> // подключаем библиотеку для работы с шиной SPI
#include <Wire.h> // подключаем библиотеку для работы с шиной I2C
#include "sav_button.h" // подключаем библиотеку для работы с кнопками
#include <Adafruit_GFX.h> // подключаем библиотеку для эфектов MAX7219
#include <Max72xxPanel.h> // подключаем библиотеку для работы с MAX7219
#include "Adafruit_HTU21DF.h" // подключаем библиотеку для работы с HTU21DF
#define CS_PIN 10 // Подключить CS к данному пину, DIN к MOSI 11 пин, а CLK к SCK 13 пин
#define BT_PIN 9 // Пин подключения кнопки
#define NUM_HORIZ_DISP 2 // количество дисплеев 8х8 по горизонтали
#define NUM_VERT_DISP 1 // количество рядов дисплеев
#define WAIT_STR 20 // Пауза в миллисекундах для бегущей строки
#define SPACER 1 // Промежуток между символами (кол-во точек)
#define WIDTH (5 + SPACER) // Ширина шрифта (в точках)
#define VIEW_DELAY 5000 // задержка смены отображаемой информации мс
Adafruit_HTU21DF HTU21 = Adafruit_HTU21DF(); // Создаём объект HTU21 для работы с библиотекой Adafruit_HTU21DF
Max72xxPanel LedMatrix = Max72xxPanel(CS_PIN, NUM_HORIZ_DISP, NUM_VERT_DISP); // объявляем переменную для работы с MAX7219
unsigned long ms; // переменная таймера
float realTemp, realHum; // переменные для хранения температуры и влажности
uint8_t backTime = 0; // время отображения
uint8_t brLvl = 2 ; // уровень яркости 0-15
uint8_t i_wst = 0; // таймер для бегущей строки
bool humView = false; // флаг отображения влажеости
bool endScroll = false; // флаг окончания сроллирования строки
String timeStr = ""; // переменная для вывода строки
SButton BUT (BT_PIN,25,1500,2500,500);
void setup(){
//Serial.begin(9600);
// Порядок матриц
LedMatrix.setPosition(0, 0, 0);
LedMatrix.setPosition(1, 1, 0);
// Ориентация каждой матрицы 1 - 90 2 - 180 3 - 270
LedMatrix.setRotation(0, 1);
LedMatrix.setRotation(1, 1);
LedMatrix.setIntensity(brLvl); //Яркость от 0 до 15
LedMatrix.fillScreen(LOW); // очищаем матрицу
timeStr = "Термометр-гигрометр HTU21 ардуино V1.0";
timeStr = utf8rus(timeStr); // Перекодируем из UNICODE
while(!endScroll){
WriteScrollText();
delay(20);
}// end while
timeStr ="";
delay(1000);
LedMatrix.fillScreen(LOW); // очищаем матрицу
if (!HTU21.begin()) {
//Serial.println("Couldn't find sensor!"); // для отладки
timeStr = "Ошибка датчика HTU21";
timeStr = utf8rus(timeStr); // Перекодируем из UNICODE
while(1){
WriteScrollText();
delay(20);
}// end while
}// end if
BUT.begin();
}// end setup()
void loop(){
ms = millis();
if (ms % VIEW_DELAY == 0 && endScroll){
humView = !humView; // инвертируем значение флага отбражения
GetHTUData();
i_wst = 0;
}// end if
if (ms % WAIT_STR == 0){
WriteScrollText();
}//end if
//обработка кнопки
switch(BUT.Loop()){
case SB_NONE:
break;
case SB_CLICK:
brLvl++;
if (brLvl > 15) brLvl = 0;
LedMatrix.setIntensity(brLvl); //Яркость от 0 до 15
break;
case SB_LONG_CLICK:
break;
case SB_AUTO_CLICK:
break;
}//end switch(BUT.Loop())
}//end loop
//------------------------------------------------------------------------
// Вывод бегущей строки на дисплей (1 такт)
void WriteScrollText(){
// если i_wst больше, чем длина строки + длина экрана
if(i_wst >= WIDTH * timeStr.length() + LedMatrix.width() - 1 - SPACER){
i_wst = 0;
endScroll = true;
return;
}// end if
LedMatrix.fillScreen(LOW); // очищаем матрицу
int letter = i_wst / WIDTH;
uint8_t x = (LedMatrix.width() - 1) - i_wst % WIDTH;
uint8_t y = (LedMatrix.height() - 8) / 2; // центрируем строку по вертикали
while (x + WIDTH - SPACER >= 0 && letter >= 0){
if (letter < timeStr.length()){
LedMatrix.drawChar(x, y, timeStr[letter], HIGH, LOW, 1);
}// end if
letter--;
x -= WIDTH;
}// end while
LedMatrix.write(); // Send bitmap to display
i_wst++;
}// end ScrollText()
//-------------------------------------------------
// Формирование строки для вывода данных
void GetHTUData(){
// Температура
if (!humView){
timeStr = "Т ";
timeStr += String(HTU21.readTemperature()); // считываем температуру
timeStr +="'C ";
}// end if
// Влажность
else{
timeStr = "В ";
timeStr += String(HTU21.readHumidity()); // считываем влажность
timeStr +="%";
}// end if
timeStr = utf8rus(timeStr); // Перекодируем из UNICODE
}// end GetHTUData()
//------------------------------------------------------
// Перекодировка русских шрифтов из UTF-8 в Windows-1251
String utf8rus(String source){
int i,k;
String target;
unsigned char n;
char m[2] = { '0', '\0' };
k = source.length(); i = 0;
while (i < k){
n = source[i];
i++;
if (n >= 0xC0){
switch (n){
case 0xD0:
n = source[i];
i++;
if (n == 0x81){
n = 0xA8;
break;
}// end if
if (n >= 0x90 && n <= 0xBF) n = n + 0x2F;
break;
case 0xD1:
n = source[i];
i++;
if (n == 0x91){
n = 0xB7;
break;
}// end if
if (n >= 0x80 && n <= 0x8F) n = n + 0x6F;
break;
}// end switch
}// end if
m[0] = n;
target = target + String(m);
}// end while
return target;
}// end utf8rus()
Возник вопрос: при выводе информации со стр. 52 по 57, "бегущая строка" двигается плавно, а вот при выводе из основного цикла она двигается медленнее и с некоторыми рывками. Что ее так может тормозить? Вроде цикл не особо загружен. Специально сделал опрос датчика в момент смены информации. Ардуина на 3.3В, 8Мгц.
Это я теперь понял, не всегда будет цикл попадать на это условие...
А про переменные, я имел ввиду вот это:
if (((millis() - ms) > VIEW_DELAY) && endScroll){
ms = millis();
humView = !humView; // инвертируем значение флага отбражения
GetHTUData();
i_wst = 0;
}// end if
if ((millis() - ms1) > WAIT_STR){
ms1 = millis();
WriteScrollText();
}//end if
а выводите чем? Надо смотреть исходник библиотеки, что выводит символы из этого фонта и разбираться, какой размер букв и как вычисляется смещение буквы в фонте
сбрось код за ранее благодарю
кто поскажет как увеличить время задержки показа информацыи и как добавить нули к чясам чтоб было 05:03 и дата 07/03/2019
Никто.
В "чясах" время задержки показа "информацыи" никак "ниувиличиваецца".
От проекта зависит. Я начинал с таймера, потом бегущая строка. Теперь время показывает постоянно, а бегущей строкой выводятся календарь и погода через промежутки времени, заданные в программе. При желании код сброшу сюда... код сбрось
Подскажите мигающие точки, пожалуйста.
Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.
сбрось код за ранее благодарю
Сейчас код такой. Постоянно переписываю, дорабатываю. Русификацию убрал из экономии памяти. Библиотеки лучше брат в оригинале, я свои немного подкорректировал...
Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.
Наслышан, читал, но пока не добрался. В режиме таймера нормально точки мигали. Сечас с часиками и "стрингами" намаялся, последние и правда память сильно вешают, датчики иногда зависают и приходится перезагрузку делать...
благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность *** на уличе **** дата **** и на Русском
благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность *** на уличе **** дата **** и на Русском
Тебе уже двое говорили (я - третий): "чясы" на русском не бывают!!!
благодарю работает отлично такой вопрос как сдвинуть чясы в лево и добавить секунды и (температура в доме **** влажность *** на уличе **** дата **** и на Русском
Вы вообще удивительный человек! Здесь достаточно почитать тему и "чясики" русскими станут и секунды побегут. А писать для Вас лично коды с Вашими хотелками времени нет, да и желания...
Делал в программе флпрог. Добрые люди сделали блок там же можно менять яркость модулей, скорость строки, выбирать колличество модулей.
"Покурил" Тырнет и нашёл решение: объявил переменные и заменил строку с двоеточием на мигающие точки
Двоеточие теперь мигает между часами и минутами ;)
"Покурил" Тырнет и нашёл решение
отлично.
Двоеточие теперь мигает между часами и минутами ;)
Так в том-то и дело. А ТС между "чясами" надо! Ты вот такой найди. Это-то и дурак найдёт.
отлично.
Плучил долгожданные SD-приколюшки. Сижу изучаю как перенести часть кода на SD-карту. Попутно решил проблему DS1307. Наслышан про "дезертирство" сего модуля, у меня за неделю время до 12 мин. убегало вперёд. "Залил" точное время, через сутки проверю и выставлю корректировку. Каки прежде, "курю" Тырнет, поскольку углубляться в Datasheet времени физически не хватает...
Так в том-то и дело. А ТС между "чясами" надо! Ты вот такой найди. Это-то и дурак найдёт.
1. Ху из ТС? Уточните вопрос, плиз...
2. Если дурак нашёл, что же Вы спрашиваете? Сдвинуть влево "чясики" много ума не надо: добавить в коде отоброжение секунд и указать координаты. В #79 у меня было 8 матриц и там был таймер, а в #104 уже DS1307 и 6 матриц. Так что как ни крути, в моём коде двигай не двигай, а секунды просто физически не влезут...
Toropizhka, Вы не поняли шутки. Это был троллинг "героя"
"герой" просил сделать "чясы", а Вы нашли про "часы". Т.е. не выполнили его просьбу! Слабо оказалось! А про "часы" - и дурак найдёт :)))))
А ТС - это "топикстартер", но в данном случае это "герой", влезший в чужой топик.
Toropizhka, Вы не поняли шутки. Это был троллинг "героя"
Спасибо, понял. Ответил тем же, наперёд уже зная ещё кучу вопросов, суть которых сведётся к одному - "Сбрось код, заранее благодарю!". Иногда постебаться полезно)...
Действующий "продукт": https://yadi.sk/i/pUokPyuRTwQVbA
"Зонтик" и "капелька" - датчик DHT22 за балконом.
"Домик" и "капелька" - датчик DHT22 в комнате.
Символы переписывал при помощи сервиса http://xantorohara.github.io/led-matrix-editor/#0000000000000000, т.е. заменил в файле c:\Program Files\ArduinoIDE\libraries\Adafruit_GFX\glcdfont.c ненужные символы своими...
Плучил долгожданные SD-приколюшки. Сижу изучаю как перенести часть кода на SD-карту.
Действующий "продукт": https://yadi.sk/i/pUokPyuRTwQVbA
Красота. Есть ребята делают такие строчки только на ESP8266 c WIFI. Время , погоду, температуру - можно не подключать свои датчики, а брать из сети+ делать настройки с телефона. Время всегда будет точное, но при наличии интернета. Сейчас начали корпуса делать из фанеры, орг.стекла и кусочка солнцезащитной пленки- смотрится очень необычно. https://youtu.be/X2Y_R-KwVOo Можно на ЕСПшку подключить свои датчики - домашние , которых нет в сети - отправлять их в Народный монитор, а уже другой ЕСП брать их из сети и выводить на строку. Появляется опция- узнай показания своих датчиков в любой точке мира.
Красота. Есть ребята делают такие строчки только на ESP8266 c WIFI...
Спасибо. Читал, смотрел, понравилось. Народный мониторинг стал одной из причин увлечения проектом в принципе. Единственное, что смущало - брать погоду из Сети. У нас в разных районах города может быть разная погода, а данные Сети вообще привязаны к областному центру в 30-и километрах. Поэтому хотелось иметь свои данные. Передать в Народный мониторинг - да хорошая идея, брать погоду из Сети - для меня идея не интересная. Кроме того, есть своя "хотелка" и даже с учётом извечного вопроса "Где взять память?" отказываться от неё не собираюсь. Ответов на разных форумах было масса, от "напоминалка лишняя" до "купи себе метеостанцию и не лечи мозги". У меня есть своя "хотелка" и интерес собрать своими руками, а не убирать лишнее или вовсе покупать готовый продукт. Да, долго. Да, дорого. Но у каждого свои тараканы в голове, мои меня вполне устраивают...
Вместо String-строк можно использовать char-строки (пост #40): http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
Редактирование символов описано в постах #27 и #31: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
Вместо String-строк можно использовать char-строки (пост #40): http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
Редактирование символов описано в постах #27 и #31: http://arduino.ru/forum/programmirovanie/rusifikatsiya-biblioteki-adafru...
Спасибо, как-то читал. Эта тема в общем мне хорошо помогла при русификации бегущей строки :)...
код не рабочий
код не рабочий
Какой код и что именно не работает?
Всем привет.
Max7219 4 сегмента + Arduino UNO
код не правил подключился как в коде, с английскими символами проблем нет.
glcdfont.c менял на варианты с разных источников, варианты utf8rus, с разными сдвигами тоже все перепробывал.
нет ркусского и все =(
Max7219 4 сегмента + Arduino UNO
Лежат в ящике стола каждая в своей коробочке? Скручены вместе синей изолентой? Или собраны по какой-то секретной схеме?
код не правил
Какой код?
подключился как в коде
В каком?
glcdfont.c
Это ещё что?
Вы откуда, вообще, выпрыгнули?
ящике стола каждая в своей коробочке? Скручены вместе синей изолентой? Или собраны по какой-то секретной схеме?
Согласно Datasheet
Какой код?
из первого поста
В каком?
С коде из первого поста
Из гугла =)
Замершее сообщество, с интересом смотрит виртуозное исполнение трюка - "наступи себе на яйца".))))
Вы не представляете, как меня это огорчает. Ну, удачи :-)
Не хотел вас расстроить, Удачи! =)
И снова здравствуйте.
Уф, разобрался, и хоть вежливость в этом топике не очень котируется, но вдруг кто-то столкнется с подобным, и ему мое решение пригодится =)
В общем, с кодом из первого проста у меня никак не получалось реализовать русский язык.
Оказалось все банально. У меня была уставновлена библиотека Adafruit_GFX аж два раза =)
Первый в "документы/Arduino/libraries", второй в папке самого "Arduino IDE/libraries", при этом я заменял glcdfont.c только в одной из них, а компилятор подтягивал другую.
в общем грохнул библиотеку Adafruit_GFX в "документы/Arduino/libraries", убедился, что glcdfont.c с русскими буквами там где должен, и все заработало.
В общем не за что.
Удачи всем )
НАЛИВАЙ!!!! Самый лучший вариант когда сам разобрался и понял что дело было не бабине .... Еще поразило утверждение что русского языка не бывает , при том что куча видео с русскими буквами.
НАЛИВАЙ!!!! Самый лучший вариант когда сам разобрался и понял что дело было не бабине .... Еще поразило утверждение что русского языка не бывает , при том что куча видео с русскими буквами.
А Налью! Хоть и не люблю пить с хамоватыми организмами'c =)
Жахнули, а теперь можно поговорить "по душам":
Ты в глаза долбишься или при рождении уроненый? Где я утверждал, что русского языка нет? Я просил помощи с тем, что русский не работает у меня. Да, набирал с телефона и получилось кривовато =). А в ответ получил стеб и хамство, а хамам я больше одного, максимум двух раз не отвечаю ;)
Кстати, в твоем сообщении тоже явные проблемы с русский языком, тебе бы тоже библиотеки не помешало бы подтянуть)
PS какой "unfriendly", к новичкам, форум .. Пойду у Гайвера зарегистрируюсь, это будет ЛЕГЕН .. (wait for it)..
ПС: В обучении не важен характер учителя, а важно умение научиться от ученика. Вот с желанием учиться у теперешнего народа туго.
ПС: В обучении не важен характер учителя, а важно умение научиться от ученика. Вот с желанием учиться у теперешнего народа туго.
отчасти я с вами согласен.
Конечно, нужно учиться. И любить учиться =)
Но, например, я уже не в том возрасте, что бы терпеть "говнистость" некоторых персонажей, даже ради новых знаний. Гордость не позволяет. Проще найти другого, адекватного, учителя.
Я как институт закончил, всегда придерживаюсь этого правила. Зачем себя мучать общением с человеком, который тебе не приятен? Не понимаю.
Но, например, я уже не в том возрасте, что бы терпеть "говнистость" некоторых персонажей, даже ради новых знаний. Гордость не позволяет. Проще найти другого, адекватного, учителя.
ага... или просто бросить обучение, зачем себя мучить.
К сожалению... или к счастью - но мой опыт подсказывает, что больше всего можно научиться как раз именно у "говнистых" персонажей. Видимо высокий IQ плохо уживаются с вежливостью к окружающим, большинство из которых представляются учителю с его интеллектуальной высоты реальными даунами.
А вот вежливые и приветливые учителя на поверку часто оказываются пустозвонами. Хотя, конечно. "говнистость" еще не гарантия высоких знаний :)
А чтобы не ущемлять вашу гордость - можно учиться по книжкам. "Я, как институт закончил - всегда придерживаюсь этого правила" (с)
Все правильно сказано, и если реального выбора нет, можно и потерпеть )
Но в данном случае он есть.
и 5 лет программирования в ВУЗе (С и С++ и даже немного бэйсика ... бррр), к сожалению, не востребованные за последние 22 года (работаю по "железу"), до того момента, как занялся ардуинкой и решил учиться )
В общем, за месяц, как мне в руки попал стартовый набор ардуино, я впервые столкнулся со случаем, когда не смог(вот сразу, как привык) разобраться, ибо все делал правильно... даже разобрался как рекомпилить glcdfont.c со своим шрифтом, и в итоге как в utf8rus делать сдвиги...
но такой нюанс, как работа с библиотеками в Arduino IDE, и что он с репо, сохраняет библиотеки не в основную папку, которой я считал папку установки программы, а,почему то, в папку со скетчами.. для меня был удивителен.
и разобрался, в итоге, сам.
ПС
и 2 учебника у меня тоже в быстром доступе )
Монк и Блум. Почитываю перед сном. Но уже даже боюсь представить, что местное комьюнити скажет про эти учебники... =DDD
Privet ske4 budet rabotat na DS3231?
Всем доброго времени!
Накидал скетч (делаю термометр на кухню):
Возник вопрос: при выводе информации со стр. 52 по 57, "бегущая строка" двигается плавно, а вот при выводе из основного цикла она двигается медленнее и с некоторыми рывками. Что ее так может тормозить? Вроде цикл не особо загружен. Специально сделал опрос датчика в момент смены информации. Ардуина на 3.3В, 8Мгц.
интервал в строчках 81 и 87 считаете неправильно. Это условие
сработает только если между вызовами прошло ровно 20мс. А если 19 или 21 - то уже все, пойдет на следующий круг.
В результате у вас строчка на экране двигается не каждые 20мс, а только когда интервал точно совпал... а это не каждый раз
Да, точно, может и проскочить, что-то не подумал об этом. Спасибо! Попробую переделать:
Хотел малой кровью обойтись, одной long переменной обойтись...
Хотел малой кровью обойтись, одной long переменной обойтись...
на самом деле в том варианте вам и одна переменная была не нужна, можно записать вот так
но теперь вы знаете, что этот метод срабатывает нечетко
Это я теперь понял, не всегда будет цикл попадать на это условие...
А про переменные, я имел ввиду вот это:
Пришлось 2 переменные вводить для 2х условий
Товарищи, еще вопрос, как из этого шрифта знак градуса вывести?
Шрифт этот сейчас подключен, не могу найти, как знак градуса на дисплей вывести.
а выводите чем? Надо смотреть исходник библиотеки, что выводит символы из этого фонта и разбираться, какой размер букв и как вычисляется смещение буквы в фонте
Скетч выше выкладывал, библиотека adafruit. Шрифт 7х5.
P.S. разобрался, вывел по очереди все символы...