Search
Write a publication
Pull to refresh

Comments 35

long duration; // Объявление переменной duration типа long, которая будет хранить длительность эхо-сигнала от датчика

Ну, комментарии от Кэпа можно и не писать.

Это скорее всего чатбот пишет. Т.е. мне уже неоднократно попадались листинги, где было к каждому объявлению приписано "объявляем переменную ... типа ...".

"комплекс ардуинщика" (в начале) - это опечатка или новое слово в психиатрии? :)

По любому новое слово в психиатрии. А если серьезно то я имел ввиду набор ардуино. Спасибо что указали мою ошибку

Комплекс - несколько отдельных самостоятельных изделий, решающих общую задачу (зенитно-ракетный комплекс). Комплект - набор деталей или узлов, не соединённых производителем в одно целое.

Домашка-тудушка:

  • Выяснить "накладные расходы" на выполнение digitalwrite/read и выполнение деления пополам;

  • По документации HC-SR04 - выяснить максимальную частоту отправки зондирующих импульсов;

  • Разобраться, как снизить "накладные расходы" на отправку данных к ПК;

  • Выяснить необходимость "delay(100)";

  • Математически показать минимальную и максимальную дистанции работы (пренебрегая затуханием сигнала) и разрешение по дальности.

Выяснить "накладные расходы" на выполнение digitalwrite/read и выполнение деления пополам

А умножение на 0.0344 нам бесплатно досталось? ;) Как для этого проекта - важна только точность измерения. Судя по по тому что дёргается функция из API - там аппаратный таймер (я надеюсь).

Как эту программу не оптимизируй, хоть на ассемблере перепиши - она все равно влезет в память ардуины ;)

Начнём с простых вещей - с двойки, которую видел в кошмаре Бендер. А там уж и до точечных чисел доберёмся.

Ооо. Ну тут для меня уже начинается темный лес. Но я постараюсь в этом разобраться

Вам тут намекают, что ардуиновские функции медленные и лучше писать на ассемблере. Не ведитесь ;) Они сделаны умными людьми и достаточно быстрые.

Грамотно переписав их на Си - можно получить значимый прирост в скорости работы и/или плотности кода.

Грамотно переписав их на Си

Хе-хе. Как вы думаете, на каком языке они написаны? ;)

(Пожимает плечами)

Все знают, где лежат исходники Arduino core. Но форкнуть и переписать грамотно, почему то, нет желающих.

А что там неграмотного? Например.

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

Тут вообще-то такая задача обсуждается, для которой ЛЮБЫЕ тормоза - это потеря точности. Вот конкретно тут идея упарываться в скорость совершенно не выглядит плохой.

Что-то можно победить калибровками, но в целом "пишите как можно быстрее - тормозить будет само".

так то оно да. только 1 мкс это 0.7мм, в этой физической модели. такое разрешение этот датчик не думаю что сможет выдать.

Упарываться в такты процессора имеет смысл, например, в светодиодной ленте. И в либах для rgb светодиодов критичные функции на ассемблере, интерфейс на плюсах, вызывается все это из обычного ардуиновского скетча, ичсх работает как надо.

Вся ошибка из-за тормозов будет очевидно суммироваться с ошибкой датчика....

Следите за руками. На какой частоте работает тот ультразвуковой датчик? Какая у него рабочая длина волны? Стоит ли от него ожидать точности большей чем длина волны? Лишние микросекунды от оверхедов в digitalWrite ничего не испортят.

Можно конечно и в даташите посмотреть.. ;)

Точности много не бывает, бывает только мало.

Риторику "и так сойдёт" понимаю, но извинить не могу :(.

Прикладная задача для этого сетапа неясна, поэтому любые разговоры "в цифрах" бесполезны. Полезно понимать чем и где жертвуешь и как можно по-другому. Потому как если не понимаешь, то когда точность понадобится ты ее обеспечить не сможешь. Ты даже никогда не поймешь что не так и почему точности нету.

А говнокодить или нет в конкретном случае - вопрос к ТЗ в общем-то...

Точности много не бывает

Ещё как бывает. Если датчик выдает погрешность в 5% - глупо показывать 6 цифр после запятой, несмотря на то что double вам достался бесплатно вместе с компилятором.

говнокодить

Говнокод - это то сложно читать и изменять. Не тот случай ;) Тут даже начинающему всё понятно. А вот битово-регистроваяи магия - это и есть тот самый говнокод.

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

И есть куча случаев, когда при точности 1% имеет смысл показывать хоть пятый хоть десятый знак. Лишь бы повторяемость была...

Delay - зло, надо отвыкать)

Ещё в большинстве плат есть вотчдог, для долго работающих устройств не повредит:

include <avr/wdt.h> // Библиотека Watchdog таймера - в начале кода

wdt_enable (WDTO_8S); // Включаем watchdog, время 8с (максимальное) - в setup

wdt_reset(); // Обнуляем таймер вотчдога - регулярно в бесконечном цикле

Delay - зло

Всё зло, если нет понимания зачем оно.

Ну, путь в тысячу миль начинается с первого шага.

Упорства в развитии и успехов

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

Вместо этого "узнал" что если крутить подстроечный резистор меняется яркость.

Разочарован :(

Зачем что-то ожидать от первого проекта. Ну хоть не резистором помигали, уже что-то.

Я от статьи на хабре ожидал вообще-то...

У меня такой на бочке стоит ,насос включает и выключает для наполнения водой ,в коде я не силен ,Дипсек всё написал 🤗

Sign up to leave a comment.

Articles