debounce(boolean last) - ? Что здесь важное функциональное слово, а что можно заменить например одной буквой?
Здесь debounce - имя функции, выбираемое пользователем, а last - формальный параметр функции, в теле которой определено как использовать этот параметр, передаваемый функции при её вызове (в данном случае из функции loop()). Оба этих имени по желанию программиста можно заменить "одной буквой" в Вашей терминологии. Стоит-ли так делать вопрос отдельный.
Цитата:
Вот что есть что вот в этой фразе коварной b]boolean debounce(boolean last)[/b] ?
В этой фразе помимо имени функции и её формального параметра определяется тип параметров функции и тип её возвращаемого значения. Это нужно компилятору для проверки правильности использования этой функции при вызове.
Цитата:
В строке №16 фраза: if (last != current). Как программа понимает, что есть last , а что есть current?
Здесь last - параметр переданный функции из loop(), а current - определён в первой строке тела функции (boolean current = digitalRead(BUTTON);), в данном случае текущее состояние кнопки.
Содержательно, в эта функция используется для борьбы с дребезгом маханических кнопок. В функции debounce проверяется текущее состояние кнопки с таковым во время предыдущего вызова этой функции. В случае неравенства делается вывод, что состояние кнопки изменилось в промежутке между вызовами. В этом случае состояние кнопки считывается ещё раз спустя 5мс (при этом предполагается, что в течении этого промежутка времени дребезг закончится и пин кнопки перейдёт в устойчивое состояние). Это не слишком надёжный алгоритм, но для начала сойдёт.
Далее, в функции loop() при соблюдении условия if (lastButton == LOW && currentButton == HIGH) делается вывод, что произошло нажатие кнопки и инвертируется состояние светодиода.
Здесь last - параметр переданный функции из loop()
А в какой именно строке это происходит? То есть я правильно понимаю: 1) Имя любой функции в среде IDE подсвечивается оранжевым? 2) Почему тогда, к примеру, в функции pinMode (BUTTON, INPUT); мы не определяем тип, а в функции boolean debounce(boolean last) - здесь определен тип - boolean ? 3) Получается, написав любое "словечко" и после него в круглых скобках тоже что-нибудь написать, то получается как бы самодельная функция? 4) Вот например в функции pinMode (BUTTON, INPUT); в скобках всегда устоявшееся правило: первое значение это название, которое присвоилось заранее, а второе значение - это одно из двух состояний: на вход или на выход) С этим понятно. Как пользоваться этой функцией подробно пояснялось. А вот в функции boolean debounce(boolean last) какие правила действуют для круглых скобок? Что именно в них разрешено писать? Почему в последующих таких же функциях не указан тип, а в этой указан (boolen) ? Тут только один параметр, или их можно через запятые перечислять? Как это узнать?
Здесь last - параметр переданный функции из loop()
А в какой именно строке это происходит?
Это происходит в строке currentButton = debounce(lastButton);
То есть я правильно понимаю: 1) Имя любой функции в среде IDE подсвечивается оранжевым? Не знаю, поскольку не работаю с Arduino.
2) Почему тогда, к примеру, в функции pinMode (BUTTON, INPUT); мы не определяем тип, а в функции boolean debounce(boolean last) - здесь определен тип - boolean ? Потому что pinMode - это библиотечная функция определённая в соответствующем хедере библиотеки, а debounce - это функция пользователя, определённая в данном случае только в приложенном коде.
3) Получается, написав любое "словечко" и после него в круглых скобках тоже что-нибудь написать, то получается как бы самодельная функция? Как-бы да.
4) Вот например в функции pinMode (BUTTON, INPUT); в скобках всегда устоявшееся правило: первое значение это название, которое присвоилось заранее, а второе значение - это одно из двух состояний: на вход или на выход) С этим понятно. Как пользоваться этой функцией подробно пояснялось. А вот в функции boolean debounce(boolean last) какие правила действуют для круглых скобок? Что именно в них разрешено писать? Почему в последующих таких же функциях не указан тип, а в этой указан (boolen) ? Тут только один параметр, или их можно через запятые перечислять? Как это узнать? У функции debounce только один параметр, т.е. именно столько, сколько указано в её определении. Про использование этой функции см. ответ на первый вопрос.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Она же только для Х64, в случае Х32 не пойдет. Я на компе с 10кой Х64 "обновлением" поставил - там вполне работает. На 7ке не пробовал - там стоит 1.8.19 портабла - пока вполне достаточно. Кстати... хорошее обновление у нашей AVRDUDESS - версия 2.16 https://www.radiokot.ru/forum/viewtopic ... 7#p4540937 работает (проверял) и на 7ке Х64 на 10ке Х64 - на ХР Х32 же не установить к сожалению.
Уважаемые радиокоты, подскажите пожалуйста, в IDE версии 2.3.2 в мониторе порта (где отображаются графики) можно ли как-то регулировать масштабирование графиков? А то неудобно, масштаб сам постоянно прыгает и общей картины не видно. Ну или хотя бы замедлить течение времени. ---------- Второй вопрос: в этих же графиках внизу слева "Type Message" в реальном времени задаю числовое значение - что-то в графиках изменяется, но такое только 1 раз почему-то делается. Потом другое числовое значение ничего не изменяет в графиках. У Вас так тоже, или я что-то не так делаю? ---------- Еще один вопросик: для чего в правом верхнем углу нужен движок "interpolate" ?
Столкнулся только что с интересной проблемой: не могу записать загрузчик "ардуино Nano" с помощью USBASP. При этом загрузчик minicore для atmega 328PB для этой же платы успешно записывается Так же с помощью USBASP можно записать и скетч. Но через среду IDE и без программатора ничего не прошивается. Полагаю, из-за того, что загрузчик "ардуино Nano" не зашит. Не могу понять, где косяк спрятан На других платах все работает. Они тоже клоны ардуино, только у них Меги не "328PB", а просто "328P" ---------- Попробовал выцепить хекс файл блинка из глубин установленной IDE. Блинк именно с прелодером. Записал его в область флеш моего микроконтроллера атмега 328PB, и случилось чудо: теперь загрузчик записан в мою ардуино нано и с помощью IDE теперь спокойно заливаются скетчи. Но я так и не догнал, почему отдельно загрузчик не зеливаетсяв ардуино нано с помощью программатора USBASP& Подскажите пожалуйста
Для такой меги(РВ) нужна установленная платформа MiniCore... А ее пределах и записываем загрузчик с фузами. С теми платормами от MCUdude имела место неполадка - при установке обновления пропадала настройка "внешних" программаторов. Лечил откатом назад и переустановкой на более новые версии: major Core 3.0.1 mega Core 3.0.1 micro Core 2.3.0 mighty Core 3.0.1 mini Core 3.0.1 Теоретически - на практике проверить не на чем (нету меги328РВ в наличии). Да и прошивалка у меня на базе ардуиноISP из нанки сделанного.
Для такой меги(РВ) нужна установленная платформа MiniCore... А в ее пределах и записываем загрузчик с фузами.
Вот, у меня как раз Minicore установлена. И загрузчик успешно записывается через программатор (судя по успешному логу), но после этого скетчи не записываются, как будто нет загрузчика. Да и по внешним признакам его действительно нет: при подаче питания на ардуинку ничего не мигает. Вернее загрузчик должен отмигиваться какую-то секунду, а потом исполняться основной код, вот он не отмигивается после такой прошивки. Попробую что-нибудь из этого установить:
Цитата:
major Core 3.0.1 mega Core 3.0.1 micro Core 2.3.0 mighty Core 3.0.1 mini Core 3.0.1
Потом отпишусь.
Цитата:
С теми платормами от MCUdude имела место неполадка - при установке обновления пропадала настройка "внешних" программаторов.
Это Вы имеете в виду вот этот список пропадал? :
Добавлено after 51 minute 12 seconds: Сторонние библиотеки, скачанные с Гитхаба почему-то не удается установить. Пробовал распаковывать и вручную в папку Libraries вставлять, пробовал автоматом через ZIP-архив - не хотят устанавливаться почему-то. Но у них содержимое довольно сильно отличается от стандартных. Есть ли способ решения?
Вот именно по тому списку... Не помню уже с какой из указанных платформ от MCUdude та болячка выскочила - просто пришлось на старую версию откатываться с пол-года. Платформа обновляет и версию софтинки программатора avrdude - вот там и возникли какие-то "трения" при обновлении до 7.2-arduino.1... Относительно 328РВ... Ее еще в этой платформе встретить можно:
Насчет "...отмигиваться каждую секунду..." - мигалку включает программа блинк, установленная при изготовлении платки (в соответствии с версией бутлоадера в нанке или блинк /старая версия/ или вывод кодовой таблицы символов/те, что поновее/) сам "чистый бутлоадер" максимум вспышку при включении выдаст (попытка обмена с ПК).
Насчет "...отмигиваться каждую секунду..." - мигалку включает программа блинк, установленная при изготовлении платки (в соответствии с версией бутлоадера в нанке или блинк /старая версия/ или вывод кодовой таблицы символов/те, что поновее/) сам "чистый бутлоадер" максимум вспышку при включении выдаст (попытка обмена с ПК).
нет, не каждую секунду, а "какую-то", яимел в виду какое-то непродолжительное время.
Цитата:
"чистый бутлоадер" максимум вспышку при включении выдаст (попытка обмена с ПК).
- вот это "отмигивание" я и имею в виду. Ну у меня не одна вспышка, а несколько кратковременных, а потом уже начинает работать цикличный стабильный неспешный код blink
Это строчка ссылки для автоматического добавления платформы. открываем файл - настройки - дополнительные ссылки для менеджера плат - справа от окошка иконку тыць - откроется окошко со ссылками... Туда и вставляем. Затем "ОК"... Затем закрываем все и запускаем менеджер платформ - в нем появится новая платформа... Жмем установить...
Платформу удалось добавить. И действительно в менеджере плата появилась атмега 328PB. Но вот при записи загрузчика с помощью программатора в логе появляется ошибка Error while burning the bootloader: Property 'bootloader.tool.serial' is undefined. Прошлый загрузчик не портится при этом. Скрин настроек:
Как дела обстоят с инсталляшкой 2.3.2 не скажу - в основном пользуюсь портабле версиями 1.8.9 (ХР х32) или 1.8.19 (win x64). 2.3.2 только как "для ознакомления" стоит. Там (у портабле версий) чуток проще просмотр каталогов - все в одном основном (без запрятанного "скрытого"). У Вас показывает что неопределен (или не установился как положено) bootloader.tool.serial...
Попробую я ее все-таки переустановить, потому что папки с программой по всему компьютеру расплостались. И в документах и в програм файлс, и в пользователях... Такого наверное быть не должно, правильно?
Есть у меня платка с 328РВ, и что-то я на ней делал. Корячилась она вовсю, но после танцев с бубнами всё получилось. Однако в конечном итоге я купил 328Р и поставил её в эту платку вместо 328РВ.
ART_ME но вот у 328PB функционал поинтереснее. Хорошо бы было совладать все-таки с этой мегой. Не, вернее, загрузчик-то записывается, но просто другим способом, нестандартным. А хотелось бы разобраться, в чем петрушка со стандартным способом. У вас какая сейчас версия IDE? С 328PB больше не работаете?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения