Как такое может быть со скетчем
Как такое может быть со скетчем
Делал прект меню капельного полива участка. Первоначально он состоял из
13 плат 84 переменные
Скетч использует 17454 байт (56%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 890 байт (43%) динамической памяти, оставляя 1158 байт для локальных переменных. Максимум: 2048 байт.
Потом бил скетч в
2 платы 23 переменные
Скетч использует 16170 байт (52%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 791 байт (38%) динамической памяти, оставляя 1257 байт для локальных переменных. Максимум: 2048 байт.
Вроде бы отыграл 1284 байт 4%памяти
Решил сбить вообще все в кучу и тут на тебе
1 плата 4 переменные
Скетч использует 17648 байт (57%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 775 байт (37%) динамической памяти, оставляя 1273 байт для локальных переменных. Максимум: 2048 байт.
И как это называеться
Отправлено спустя 54 секунды:
Пример
Отправлено спустя 1 час 16 минут 58 секунд:
видео с работой скетчей (все три скетча работают одинаково)
https://drive.google.com/open?id=1ZXIhf ... 6nZQWK6uP_
13 плат 84 переменные
Скетч использует 17454 байт (56%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 890 байт (43%) динамической памяти, оставляя 1158 байт для локальных переменных. Максимум: 2048 байт.
Потом бил скетч в
2 платы 23 переменные
Скетч использует 16170 байт (52%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 791 байт (38%) динамической памяти, оставляя 1257 байт для локальных переменных. Максимум: 2048 байт.
Вроде бы отыграл 1284 байт 4%памяти
Решил сбить вообще все в кучу и тут на тебе
1 плата 4 переменные
Скетч использует 17648 байт (57%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 775 байт (37%) динамической памяти, оставляя 1273 байт для локальных переменных. Максимум: 2048 байт.
И как это называеться
Отправлено спустя 54 секунды:
Пример
Отправлено спустя 1 час 16 минут 58 секунд:
видео с работой скетчей (все три скетча работают одинаково)
https://drive.google.com/open?id=1ZXIhf ... 6nZQWK6uP_
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Полковник
- Сообщения: 1928
- Зарегистрирован: 28 окт 2015, 22:47
- Откуда: Ленобласть
- Имя: Игорь
- Поблагодарили: 2 раза
Как такое может быть со скетчем
Ну сами посудите - у Вас в блоке меню несколько пунктов, которые содержат еще пункты с разными строками. Посчитайте все эти строки (не важно если название одинаковые) и поймете сколько у Вас на самом деле переменных, да еще и string...
Отправлено спустя 45 минут 51 секунду:
Обманул, не string - char. Вообщем запустите IDE и посмотрите сколько определяется переменных и массивов...
Отправлено спустя 45 минут 51 секунду:
Обманул, не string - char. Вообщем запустите IDE и посмотрите сколько определяется переменных и массивов...
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Как такое может быть со скетчем
Дальнейшие єксперименты
В фале с 2 платами поменял переменные в меню с интеджер на байт опять получилась экономия 3% памяти
Используем библиотеку Wire версии 1.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\Wire
Используем библиотеку LiquidCrystal_I2C в папке: d:\Program Files\FLProg\ideV2\libraries\LiquidCrystal_I2C (legacy)
Используем библиотеку EEPROM версии 2.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\EEPROM
Скетч использует 15342 байт (49%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 735 байт (35%) динамической памяти, оставляя 1313 байт для локальных переменных. Максимум: 2048 байт.
А вот поменял переменные в меню с интеджер на байт в файле с одной платой и опять скетч не уменшился а вырос на 3%
ХаХаХа
Используем библиотеку Wire версии 1.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\Wire
Используем библиотеку LiquidCrystal_I2C в папке: d:\Program Files\FLProg\ideV2\libraries\LiquidCrystal_I2C (legacy)
Используем библиотеку EEPROM версии 2.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\EEPROM
Скетч использует 18632 байт (60%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 854 байт (41%) динамической памяти, оставляя 1194 байт для локальных переменных. Максимум: 2048 байт.
В фале с 2 платами поменял переменные в меню с интеджер на байт опять получилась экономия 3% памяти
Используем библиотеку Wire версии 1.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\Wire
Используем библиотеку LiquidCrystal_I2C в папке: d:\Program Files\FLProg\ideV2\libraries\LiquidCrystal_I2C (legacy)
Используем библиотеку EEPROM версии 2.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\EEPROM
Скетч использует 15342 байт (49%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 735 байт (35%) динамической памяти, оставляя 1313 байт для локальных переменных. Максимум: 2048 байт.
А вот поменял переменные в меню с интеджер на байт в файле с одной платой и опять скетч не уменшился а вырос на 3%
ХаХаХа
Используем библиотеку Wire версии 1.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\Wire
Используем библиотеку LiquidCrystal_I2C в папке: d:\Program Files\FLProg\ideV2\libraries\LiquidCrystal_I2C (legacy)
Используем библиотеку EEPROM версии 2.0 из папки: d:\Program Files\FLProg\ideV2\portable\packages\arduino\hardware\avr\1.6.23\libraries\EEPROM
Скетч использует 18632 байт (60%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 854 байт (41%) динамической памяти, оставляя 1194 байт для локальных переменных. Максимум: 2048 байт.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2473
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 40 раз
Как такое может быть со скетчем
Да не мучайтесь Вы. Приобретите Wemos D1 mini. По цене практически те же деньги что и Nano. 16MB памяти. Вам и на соседские грядки места под переменные хватит. Плюс еще Wi-Fi в нагрузку сделаете доп. управление со смартфона с красивенннннным меню. Да и процессор там пошустрей будет раз этак в 10 почти.
Как такое может быть со скетчем
Так есть у меня ноде мцу Но ведь и там могут быть такие лажи но не так заметные из за большего количества памяти
здесь когда стараешся выжать по максимуму они сразу всплывают
Хотелось бы выслушать версию хоть одного из ГУРУ а самое лутшее от СЕНСЕЯ
здесь когда стараешся выжать по максимуму они сразу всплывают
Хотелось бы выслушать версию хоть одного из ГУРУ а самое лутшее от СЕНСЕЯ
Как такое может быть со скетчем
[ref]Hijin[/ref], Вопросик. А в чем это вы проверяете работу скетча?
Разглядел
Разглядел

FLProg 6.3.1 - 7.3.4 - Linux
- Dryundel
- Полковник
- Сообщения: 2473
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 40 раз
Как такое может быть со скетчем
А в чем проблема то? К чему такой сарказм? Почему бы не протестировать логику в Протеусе? Я бы еще понял, если бы речь шла про аналоговые величины, а в данном случае не вижу проблем.Goosr писал(а): 03 апр 2019, 13:23 Hijin, Вопросик. А в чем это вы проверяете работу скетча?
Разглядел![]()
-
- Полковник
- Сообщения: 3360
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 14 раз
- Поблагодарили: 100 раз
- Контактная информация:
Как такое может быть со скетчем
В проекте Вашем не разбирался, но сразу нашел ляп.
Не допускайте ошибки , когда создаете проект, тогда не будет
Не допускайте ошибки , когда создаете проект, тогда не будет
Открыл Ваш проект с одной платой, где Вы пишете , что поменяли интежер на байты. Вижу здесь не поменяли,[spoiler] [/spoiler] поменял, ничего не изменилось, вытянул блок, а там под ним еще блок такой же.[spoiler] [/spoiler]
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Dryundel
- Полковник
- Сообщения: 2473
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 40 раз
Как такое может быть со скетчем
Вам СЕНСЕЙ нужен для того, что бы указзать на то, что в файле с одной платой вы забыли удалить вторую плату?Hijin писал(а): 02 апр 2019, 18:48 Хотелось бы выслушать версию хоть одного из ГУРУ а самое лутшее от СЕНСЕЯ

Ладно, будем считать это оплошностью.
Есть одно предположение.Hijin писал(а): 01 апр 2019, 18:56 Вроде бы отыграл 1284 байт 4%памяти
Решил сбить вообще все в кучу и тут на тебе
1 плата 4 переменные
Скетч использует 17648 байт (57%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 775 байт (37%) динамической памяти, оставляя 1273 байт для локальных переменных. Максимум: 2048 байт.
И как это называеться

Дело в том, что не всегда стремление избавиться от "лишних" переменных приводит к желаемому результату (уменьшению скетча).
Предположим есть некая сумма переменных
a+b+c+d+e
Мы отправляем ее в несколько точек AA, BB, CC, DD
тогда скетч условно будет выглядеть так:
AA=a+b+c+d+e
BB=a+b+c+d+e
CC=a+b+c+d+e
DD=a+b+c+d+e
А если ввести доп переменную X и приравнять ее к сумме исходных переменных, то получим следующее
X=a+b+c+d+e
AA=X
BB=X
CC=X
DD=X
Количество операций сокращается. Отсюда и сокращение скетча.
Попробуйте в вашей схеме заменить всего одну логическую связь на переменную (добавить переменную) вот здесь:
[spoiler] [/spoiler]
и получите "экономию" в 2%
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Как такое может быть со скетчем
Я над собой смеюсь.Dryundel писал(а): 04 апр 2019, 08:35 А в чем проблема то? К чему такой сарказм? Почему бы не протестировать логику в Протеусе? Я бы еще понял, если бы речь шла про аналоговые величины, а в данном случае не вижу проблем.

FLProg 6.3.1 - 7.3.4 - Linux
Как такое может быть со скетчем
Я тоже над собою смеюсь так как в ступоре
Да это оплошность файл с одной платой не сохранил
Отправлено спустя 10 минут 29 секунд:
Если бы это касалось не таких функций как и или то я возожно задумался но эти функции занимают биты а не байтыDryundel писал(а): 04 апр 2019, 09:55 Дело в том, что не всегда стремление избавиться от "лишних" переменных приводит к желаемому результату (уменьшению скетча).
- Dryundel
- Полковник
- Сообщения: 2473
- Зарегистрирован: 22 май 2017, 23:15
- Откуда: Ярославль
- Имя: Андрей
- Благодарил (а): 10 раз
- Поблагодарили: 40 раз
Как такое может быть со скетчем
"ИЛИ" - это только предыдущий шаг в цепочке. Вы не думаете что надо всю цепочку прослеживать, которая у Вас ..."ИЛИ ИЛИ ИЛИ ..." . И вот вся эта гирлянда хвостом прицеляется к каждой из следующей операции которых несколько в параллели после этого последнего "ИЛИ".Hijin писал(а): 06 апр 2019, 17:36 Если бы это касалось не таких функций как и или то я возожно задумался но эти функции занимают биты а не байты
Вот для наглядности всего одна строчка из вашего скетча. Знак || - это и есть Ваши "ИЛИ".
Код: Выделить всё
if (( (_gtv9) && (!(( (( (_MenuBlock_210459645_AMO_157376931) || (_MenuBlock_210459645_AMO_300698958) || (_MenuBlock_210459645_AMO_92522724) || (_MenuBlock_210459645_AMO_338840744) || (_MenuBlock_210459645_AMO_372251642) || (_MenuBlock_210459645_AMO_217018863) || (_MenuBlock_210459645_AMO_417780675) || (_MenuBlock_210459645_AMO_277138577) )) || (( (_MenuBlock_210459645_AMO_231783657) || (_MenuBlock_210459645_AMO_189032908) || (_MenuBlock_210459645_AMO_147578181) )) || (( (( (_MenuBlock_210459645_AMO_368959305) || (_MenuBlock_210459645_AMO_41584824) || (_MenuBlock_210459645_AMO_299965654) || (_MenuBlock_210459645_AMO_364690575) )) || (( (_MenuBlock_210459645_AMO_144902184) || (_MenuBlock_210459645_AMO_339535870) || (_MenuBlock_210459645_AMO_410858300) || (_MenuBlock_210459645_AMO_311545727) )) || (( (_MenuBlock_210459645_AMO_102395166) || (_MenuBlock_210459645_AMO_393907185) || (_MenuBlock_210459645_AMO_519699420) || (_MenuBlock_210459645_AMO_419861444) )) || (( (_MenuBlock_210459645_AMO_130744311) || (_MenuBlock_210459645_AMO_14186996) || (_MenuBlock_210459645_AMO_146234980) || (_MenuBlock_210459645_AMO_383126000) )) || (( (_MenuBlock_210459645_AMO_247453600) || (_MenuBlock_210459645_AMO_349539129) || (_MenuBlock_210459645_AMO_119104706) || (_MenuBlock_210459645_AMO_534549648) )) || (( (_MenuBlock_210459645_AMO_112101574) || (_MenuBlock_210459645_AMO_5824711) || (_MenuBlock_210459645_AMO_340366047) || (_MenuBlock_210459645_AMO_294491128) )) )) ))) )) {
_dispTempLength1 = ((_swi7)).length();
Я же вам показал точку которая хоть немного может сократить размер скетча. Над ней еще один блок ИЛИ прицепив переменную к которому, можно еще слегка "сэкономить".
А вот булевая переменная, от которых Вы так тщательно избавились, это реально биты, ну точней 1байт. Казус в том, что указатель на переменную занимает в памяти минимум столько же места сколько и сама булевая переменная. Вот и посчитай.
Ладно, чего то я увлекся. Возможно зря.
Ведь без СЕНСЕЯ, все это пусой трёп. Правильно я понимаю?

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя