Реально очень хорошая идея прицепить хук на Тамер0, который миллис отсчитывает и для иных целей неприменим, без разрушения самой концепции Ардуино. Дальше может автору и стоило сделать знакомый каждому Джава-программеру интерфейс тикеров, просто ради узнаваемости, но уж что сделано, то сделано.
Это лучшая в Ардуино реализация независимых от вызова в loop() таймеров. Причем не в русскоязычном, а вообще в Ардуино для АВР.
КэмелКейс с венгерскими префиксами - привычный, но не самый лучший стиль. Поскольку его многие работодатели требуют, то меня он как раз бесит!
просто я с ним не знаком.
Счас у меня таймеры сами ничего не вызывают, просто кладут сообщение в очередь.
void TCustomTimers::Tick()
{
if (!FActive) return;
for (uint8_t idx=0; idx<FSize; ++idx){
if (FItems[idx] == NULL) continue;
if ((*FItems[idx])--) PostMessage(msg_TimerEnd, idx);
}
}
да, и millis теперь не врёть
ISR(TIMER0_COMPA_vect) {
OCR0A += TIMER_ONE_MS;
if (TimersSingleton != NULL) TimersSingleton->Tick();
}
Кэмэл - это ведь С++ стиль, это нормально. А венгерская нотация вредна для Ардуино - это просто пудрит мозги. Я так считаю.
ПС. Возможно, это имеет смысл для больших проектов.
Извиняюсь, конечно. Но, если бы писал с пробелами (как учили в школе) было бы красивше.(
for (uint8_t idx = 0; idx < FSize; ++idx) {
И индекс, обычно через i задаётся.)
Скорее всего кто как привык. У меня первый язык был Delphi (начиная с 4, по моему, уже стал языком, ранее паскаль…) Для меня он самый красивый и понятный. Но это для меня. Я не говорю, что это так и есть.
Но как радует глаз:
Форматирует нормальная ИДЕ, даже Ардуино ИДЕ уж это умеет, причем в ЛЮБОМ стиле. В стиле и описываешь все пробелы и отступы и новые строки, как тебе нравится. Программист уже давно сам ничего не форматирует.
(как и куда написать файл настройки форматирования в Ардуино ИДЕ 2.х - могу рассказать, если будут слушатели и у меня минутка свободная, там этого в меню нет)
Ну, как это тебе нравится? Это пофигизм называется. Жалею что в Си нет таких правил как в Пайтоне.
Иногда бесит, когда переносит на новые строки. Но возможно такое не настроишь))
типа
x = 10; y = 50; а она делает:
x = 10;
y = 10;
Есть два стиля основных.
Например спор о том, где ставить скобку после ИФ - в той же строке или в новой.
Меня новые - бесят, я в той же люблю. И мне важно так настроить среду.
И таких мелочей много.
Два оператора на одной строке - харам. Строго харам. Не настроишь… и слава Б…гу!
Да, из мелочей всё складывается. И два оператора на одной строке иногда приемлемо. Всё для наглядности.
Ну это я что в голову пришло сразу…
Хотя в си очень понравились всякие плюшки типа ++, +=, ? :, ну или так присваивать x = y = z = 0;
настраивайте как хотите))
https://clang.llvm.org/docs/ClangFormatStyleOptions.html
про настройки по умолчанию, читать тут
https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-customize-auto-formatter
спалил хату?
Только я собрался попонтоваться, а тут ты, с неуместной осведомленностью!
Я бы делал по школьному учебнику физики.
Правильно сделанный алгоритм подойдет всегда (кроме тех случаев, когда он окажется слишком ресурсоемким), неправильный алгоритм - может подойти лишь к каким-то частным случаям.
Вообще-то это не “делей”, а анализ сигнала на протяжении трех периодов. Если достаточен “индикатор”, можно уменьшить до одного периода.
Вот для начал нужно определиться с этим: что же Вам нужно - целые Амперы, десятые доли Ампера или сотые доли Ампера. Причем, именно “или”, а не “и”. Т.е. или Амперы, или десятые или сотые.
Он просто не может сообразить, что такое “в десятых/сотых ампера”.
Для ТС - имеем ток 1,2А.
В амперах это будет 1;
В десятых долях ампера это будет 12;
В сотых долях ампера это будет 120;
И т.д.
Т.е. если вам нужна точность 1,20А, то и делайте в сотых - 120. А если это надо выводить на экран: выводите амперы - 120/100, выводите десятичную точку, выводите сотые ампера - 120%100
Да все я сообразил. Да, хорошо, мне нужно в сотых ампера…))). т.е. если я получу с датчика 120, то это будет 1.2 ампера. Ну я же вроде уже говорил об этом, но может не так формально как у вас, ну да ладно))
Ну так если у меня будет получено с датчика 120, и я знаю, что это амперы*100 т.е. по вашему в сотых, то я уж из этого получу то что мне нужно 120 / 100 = 1 и 120 % 100 = 20 а на экран выведу sprintf(_str, “%d.%d”, 120 / 100, 120 % 100) - типа такого.
Вы лучше алгоритм подскажите или саму функцию))) А там разберемся… в сотых или в десятых… Главное чтобы результат был в целых числах
Вот. Бедные педагоги. Им памятник нужно ставить. У меня психики на всё это не хватает.(
Педагоги, да согласен… Но при чем тут они??? Или я как-то не ясно объясняю? ))) Уверен на 10000 процентов, что все уже все давно поняли, просто нужно повыпендриваться… тут на этом форуме так принято… это факт)))