Нет, не врёт. Страхуются, гарантированно при разных техусловиях 100.
Оптимизация создаваемой программы, использование блоков
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
Пролечена библиотека LiquidCrystal_I2C.h для работы на 400.
Теперь получил:
10 символов - 6,1мс,
20 символов - 12мс.
Отправлено спустя 1 час 39 минут 54 секунды:
Какие выводы из "дисплейной истории" уже можно сделать?
Теперь получил:
10 символов - 6,1мс,
20 символов - 12мс.
Отправлено спустя 1 час 39 минут 54 секунды:
Какие выводы из "дисплейной истории" уже можно сделать?
- Дисплей использовать в не самых быстрых проектах.
- Если проект устраивает - оставить как есть.
- Делать свой блок для дисплея с необходимым функционалом. Т.е. слова типа "Температура", "Влажность" и иже выводить единоразово и не затирать, а переменные слать по мере необходимости в нужные знакоместа.
- При наличии свободных пинов и желания - исключить I2C.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Оптимизация создаваемой программы, использование блоков
Хорошее решение. Я всегда стараюсь подключать дисплей к отдельному контроллеру(мини,нано, уно). Связываюсь с контроллером по ТСP/IP (Модбас или MQTT). Стараюсь I2C не использовать.Sancho писал(а): 27 янв 2018, 11:22Дисплей использовать в не самых быстрых проектах.
Делать свой блок для дисплея с необходимым функционалом. Т.е. слова типа "Температура", "Влажность" и иже выводить единоразово и не затирать, а переменные слать по мере необходимости в нужные знакоместа.
При наличии свободных пинов и желания - исключить I2C.
Купить вместо PCF8574 Про Мини, управление и индикацию в неё, попробовать найти или переделать библиотеку для записи байта целиком.
Отправлено спустя 2 минуты 53 секунды:
Не только при подключении дисплея, а вообще.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
Почему писал о своём блоке при необходимости "Всё в одном" корпусе?
Вот код, который 17 символов выводит один раз за 899 циклов, при счётчике =100.
Переменная для счёта и индикации увеличивается в каждом цикле на 1, при > 999 сбрасывается в 100.
Сам счётчик пишет в знакоместа с 17.
Время выполнения для D12 от 1 до 0 2,33мс.
Попробуйте убрать условие для первых 17-ти - опять 12мс.
Тесты на 400кГц.
[spoiler=код внутри][/spoiler]
Вот код, который 17 символов выводит один раз за 899 циклов, при счётчике =100.
Переменная для счёта и индикации увеличивается в каждом цикле на 1, при > 999 сбрасывается в 100.
Сам счётчик пишет в знакоместа с 17.
Время выполнения для D12 от 1 до 0 2,33мс.
Попробуйте убрать условие для первых 17-ти - опять 12мс.
Тесты на 400кГц.
[spoiler=код внутри]
Код: Выделить всё
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "CyberLib.h"
LiquidCrystal_I2C _lcd1(0x3F, 20, 4);
String _gtv2 = "Temperature-test-"; //Переменная стринг 17 символов
int _gtv1 = 100; //Счётная переменная, 100-999, 3 символа
void setup()
{
Wire.begin();
delay(10);
_lcd1.init();
_lcd1.backlight();
D12_Out;
D12_Low;
_lcd1.clear();
}
void loop()
{
delay(1);
D12_High;
if ((_gtv1) == 100)
{
_lcd1.setCursor(0, 0);
_lcd1.print((_gtv2));
}
_lcd1.setCursor(17, 0);
_lcd1.print(((String(_gtv1, DEC))));
_gtv1 = _gtv1+1;
if ((_gtv1) > (999)) {_gtv1 = 100;}
D12_Low;
}
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Лейтенант
- Сообщения: 516
- Зарегистрирован: 25 фев 2018, 08:48
- Откуда: Оренбург
- Имя: Александр
Входной сдвиговый регистр 74HC165
[ref=#ff8000]Sancho[/ref], спасибо за рекомендацию, но было бы совсем хорошо если бы:
1. Или дали ссылку на: как разогнать (не вижу этого в настройках), аналоговые быстрые так же не вижу как сделать. Насчет оптимизации вывода инфы примерно догадываюсь что это лучше делать в одной плате (или не в том направлении мыслю? )
2. Или напишите как реализовать пункты
1. Или дали ссылку на: как разогнать (не вижу этого в настройках), аналоговые быстрые так же не вижу как сделать. Насчет оптимизации вывода инфы примерно догадываюсь что это лучше делать в одной плате (или не в том направлении мыслю? )
2. Или напишите как реализовать пункты
Оптимизация создаваемой программы, использование блоков
надо какой нибудь костыль придумать к штатному блоку дисплея, чтобы выводилась инфа по мере необходимости. а то либо постоянно, либо при снятии EN стирается.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
1. Разгон библиотеки для дисплея по I2C - в папке по адресу C:\Users\ВАШ ПОЛЬЗОВАТЕЛЬ\Documents\Arduino\libraries\LiquidCrystal_I2C в файле LiquidCrystal_I2C.cpp в строке Wire.setClock(100000L); 1 заменяется 4, (Если нет такой строки - скопируйте и вставьте) итого:
[spoiler][/spoiler]
2. Как писали не раз, сделать свой блок для дисплея, надоело каждый раз править код руками. Но у каждого своя задача, и мои могут совсем им не отвечать...
Комментировать для приемлемой работы входа EN нужно это, пример и оригинал:
[spoiler]
[/spoiler]
3. Адрес быстрых входов - в шапке темы.
[spoiler]
Код: Выделить всё
void LiquidCrystal_I2C::begin() {
Wire.begin();
Wire.setClock(400000L); //
2. Как писали не раз, сделать свой блок для дисплея, надоело каждый раз править код руками. Но у каждого своя задача, и мои могут совсем им не отвечать...
Комментировать для приемлемой работы входа EN нужно это, пример и оригинал:
[spoiler]
Код: Выделить всё
if (_changeNumber1_Out) {
_dispTempLength1 = (((String(_gtv2, DEC)))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(1, 0);
_lcd1.print(((String(_gtv2, DEC))));
}
//else {if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}} Закоментированно, в оригинале три строки!!! Внимательно!!!
Оригинал:
if (_changeNumber1_Out) {
_dispTempLength1 = (((String(_gtv2, DEC)))).length();
if (_disp1oldLength > _dispTempLength1) {_isNeedClearDisp1 = 1;}
_disp1oldLength = _dispTempLength1;
_lcd1.setCursor(1, 0);
_lcd1.print(((String(_gtv2, DEC))));
} else { // Здесь ВНИМАТЕЛЬНО!!!! ПЕРВАЯ СКОБКА, }, перед else, ДОЛЖНА ОСТАТЬСЯ!!!
if (_disp1oldLength > 0) {_isNeedClearDisp1 = 1; _disp1oldLength = 0;}
}
3. Адрес быстрых входов - в шапке темы.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
-
- Лейтенант
- Сообщения: 516
- Зарегистрирован: 25 фев 2018, 08:48
- Откуда: Оренбург
- Имя: Александр
Оптимизация создаваемой программы, использование блоков
Проверяю работу в железе ардуины нано (328) и все возможные датчики и модули подключаю и смотрю работу.
В дальнейшем соответственно с планами использовать FLPprog в работе и хозяйстве.
На данном этапе подключено: нано + LCD(i2c) + серва + энкодер +2 аналоговых (задатчик угла сервы) + температурный DS18B20 + часы DS1307 + аналоговый с трансформатора тока + кнопка с инкрементом (плюсует значение минут по которому срабатывает будильник).
......... На днях придут еще несколько датчиков (тока, дальномер лазерный + УЗ, 7-ми сегментный индикатор) + шаговые модули + ЦАП + расширители входа-выхода + mp3 плейер + ... вроде все ))) для начала ......
Нужно понять как оптимально составлять программу чтобы она работала без тормозов.
Отправлено спустя 4 минуты 14 секунд:
C:\Users\ВАШ ПОЛЬЗОВАТЕЛЬ\Documents\Arduino\libraries\LiquidCrystal_I2C в файле LiquidCrystal_I2C.cpp в строке Wire.setClock(100000L); 1 заменяется 4, - у меня там совсем нет никаких библиотек. Пустая папка внутри. Есть readme (по установке библиотек) И ссылка внутри. Но как то же работает дисплей по i2c
В дальнейшем соответственно с планами использовать FLPprog в работе и хозяйстве.
На данном этапе подключено: нано + LCD(i2c) + серва + энкодер +2 аналоговых (задатчик угла сервы) + температурный DS18B20 + часы DS1307 + аналоговый с трансформатора тока + кнопка с инкрементом (плюсует значение минут по которому срабатывает будильник).
......... На днях придут еще несколько датчиков (тока, дальномер лазерный + УЗ, 7-ми сегментный индикатор) + шаговые модули + ЦАП + расширители входа-выхода + mp3 плейер + ... вроде все ))) для начала ......
Нужно понять как оптимально составлять программу чтобы она работала без тормозов.
Отправлено спустя 4 минуты 14 секунд:
C:\Users\ВАШ ПОЛЬЗОВАТЕЛЬ\Documents\Arduino\libraries\LiquidCrystal_I2C в файле LiquidCrystal_I2C.cpp в строке Wire.setClock(100000L); 1 заменяется 4, - у меня там совсем нет никаких библиотек. Пустая папка внутри. Есть readme (по установке библиотек) И ссылка внутри. Но как то же работает дисплей по i2c
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
[ref]KulibinOrsk[/ref], Какой IDE пользуетесь, своей или встроенной. Судя по всему - встроенной, тогда для х64:
C:\Program Files (x86)\FLProg\ideV2\libraries\...
Или попробуйте наверняка поиском
Сразу вопрос по делу, так как у меня нету 18В20 и ТТ, и остального идущего:
осцилограф есть?
C:\Program Files (x86)\FLProg\ideV2\libraries\...
Или попробуйте наверняка поиском

Сразу вопрос по делу, так как у меня нету 18В20 и ТТ, и остального идущего:
осцилограф есть?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Оптимизация создаваемой программы, использование блоков
самое основное определиться с приоритетами и временными интервалами.
например если температура меняется медленно, нет смысла постоянно тереби опрашивать датчик температуры.
если сигналы или данные не меняются, не надо их постоянно отправлять или куда-то записывать. ит.д.
всё нужно делать по мере необходимости.
но если проект маленький и задержки не важны, можно и не загоняться.
-
- Лейтенант
- Сообщения: 516
- Зарегистрирован: 25 фев 2018, 08:48
- Откуда: Оренбург
- Имя: Александр
Оптимизация создаваемой программы, использование блоков
[ref=#ff8000]Sancho[/ref], Осцилограф есть.
у меня по старинке х32 wXP
IDE загружал arduino-1.8.5-windows (наверное в ней все библиотеки)
Отправлено спустя 4 минуты 58 секунд:
У кого есть библиотека наполненная всем джентельменским набором - скиньте во благо ))
у меня по старинке х32 wXP
IDE загружал arduino-1.8.5-windows (наверное в ней все библиотеки)
Отправлено спустя 4 минуты 58 секунд:
У кого есть библиотека наполненная всем джентельменским набором - скиньте во благо ))
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
[ref]KulibinOrsk[/ref], Запустите поиск по имени файла LiquidCrystal_I2C.cpp. Найдёте - откройте в Notepad++, отредактируйте, сохраните.
Если ещё нет Notepad++ - СРОЧНО установить!!!
В проекте у Вас есть блок получения данных с ТТ, Emon. Зачем в данном проекте отправка в сом порт? Отредактировать блок, убрать лишнее, сохранить.
Остальное по ходу, но Алексей всё выше написал - главное определиться с приоритетами задач.
Бибки LiquidCrystal_I2C уже пролечена
Если ещё нет Notepad++ - СРОЧНО установить!!!
В проекте у Вас есть блок получения данных с ТТ, Emon. Зачем в данном проекте отправка в сом порт? Отредактировать блок, убрать лишнее, сохранить.
Остальное по ходу, но Алексей всё выше написал - главное определиться с приоритетами задач.
Бибки LiquidCrystal_I2C уже пролечена
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Оптимизация создаваемой программы, использование блоков
[ref]KulibinOrsk[/ref], в IDE которая в комплекте с флпрог есть эта библиотека. скопируйте куда надо если пользуетесь установленным IDE
-
- Лейтенант
- Сообщения: 516
- Зарегистрирован: 25 фев 2018, 08:48
- Откуда: Оренбург
- Имя: Александр
Оптимизация создаваемой программы, использование блоков
[ref=#ff8000]Sancho[/ref], LiquidCrystal_I2C.cpp - нашел - есть в библиотеке которая была с FLProg
Вот с этим COM-портом и были непонятки. И в описании хотя бы автор указал что - пишите 0 если не нужно передавать. Кто ж знал что оно передает.
У меня запись строчек по разгону - по другому. Посмотрите плиз.
Вот с этим COM-портом и были непонятки. И в описании хотя бы автор указал что - пишите 0 если не нужно передавать. Кто ж знал что оно передает.
У меня запись строчек по разгону - по другому. Посмотрите плиз.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
Вставьте туда такую строку, как на примере.
Насчёт сом порта в emon - удалите всё к нему относящиеся и сохраните как новый блок, на всякий случай.
[ref]KulibinOrsk[/ref],
P.S. Вот так сделай:
Насчёт сом порта в emon - удалите всё к нему относящиеся и сохраните как новый блок, на всякий случай.
[ref]KulibinOrsk[/ref],
P.S. Вот так сделай:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- belyx
- Сержант
- Сообщения: 251
- Зарегистрирован: 24 июл 2016, 20:38
- Откуда: Витебск Беларусь
- Благодарил (а): 7 раз
Оптимизация создаваемой программы, использование блоков
Задача: измерить время цикла программы-с целью оптимизации созданной,бо тормозит.
Метод инверсии переменной с выводом меандра на пин и осциллографа понятен.
Вопрос: если я поставлю скоростной счётчик в таком виде[spoiler] [/spoiler]-насколько неточными будут показания и правильно ли это будет?
Или вторую плату загрузить в другой контроллёр? и измерять им? Отправлено спустя 4 минуты 9 секунд:
понятно что вычисления потом сам произведу
Метод инверсии переменной с выводом меандра на пин и осциллографа понятен.
Вопрос: если я поставлю скоростной счётчик в таком виде[spoiler] [/spoiler]-насколько неточными будут показания и правильно ли это будет?
Или вторую плату загрузить в другой контроллёр? и измерять им? Отправлено спустя 4 минуты 9 секунд:
понятно что вычисления потом сам произведу
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
Я думаю, есть самый простой способ написать блок и слать данные в ком порт.belyx писал(а): 04 июл 2018, 13:13Задача: измерить время цикла программы-с целью оптимизации созданной,бо тормозит.
Несколько нюансов: измерять за несколько циклов и усреднять или измерять один но по команде.
Примерный код :
Код: Выделить всё
Serial.print("Time: "); Serial.println((millis()-Time),DEC); // micros(); если надо
Serial.println("Start "); Time=millis(); // micros() .........
Для периодической отправки поставить счётчик циклов, отправлять в каждом 1234....
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- belyx
- Сержант
- Сообщения: 251
- Зарегистрирован: 24 июл 2016, 20:38
- Откуда: Витебск Беларусь
- Благодарил (а): 7 раз
Оптимизация создаваемой программы, использование блоков
для меня не есть так!
я думаю надо как то без изысков-просто цифры достаточно-это же всё время
Отправлено спустя 4 минуты 9 секунд:
изучаю
Отправлено спустя 8 минут 9 секунд:
из описания-"Возвращает количество миллисекунд, прошедших с момента старта программы Ардуино"
наверно не совсем подходит т.к. в зависимости от режимов(условий)эти циклы меняются и что получится,что-то усреднённое?
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
Оптимизация создаваемой программы, использование блоков
[ref]belyx[/ref],
Посмотрите код - он выводит разность между текущим и записанным в предыдущем цикле!
Напишу/сделаю Вам блочок. Опишите периодичность вывода и куда.
Отправлено спустя 1 минуту 5 секунд:
Посмотрите код - он выводит разность между текущим и записанным в предыдущем цикле!
Напишу/сделаю Вам блочок. Опишите периодичность вывода и куда.
Отправлено спустя 1 минуту 5 секунд:
Можно сделать работу по EN - будете включать в нужные моменты.belyx писал(а): 04 июл 2018, 17:01наверно не совсем подходит т.к. в зависимости от режимов(условий)эти циклы меняются и что получится,что-то усреднённое?
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- belyx
- Сержант
- Сообщения: 251
- Зарегистрирован: 24 июл 2016, 20:38
- Откуда: Витебск Беларусь
- Благодарил (а): 7 раз
Оптимизация создаваемой программы, использование блоков
про разность-да уже прочитал-был неправ!
период-(100-500) миллисекунд(как удобно),в ком порт
Отправлено спустя 2 минуты 5 секунд:
Отправлено спустя 1 час 8 минут 36 секунд:
период-(100-500) миллисекунд(как удобно),в ком порт
Отправлено спустя 2 минуты 5 секунд:
-желательно
Отправлено спустя 1 час 8 минут 36 секунд:
буду Вам очень благодарен !!!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя