Приведение типов

Реально очень хорошая идея прицепить хук на Тамер0, который миллис отсчитывает и для иных целей неприменим, без разрушения самой концепции Ардуино. Дальше может автору и стоило сделать знакомый каждому Джава-программеру интерфейс тикеров, просто ради узнаваемости, но уж что сделано, то сделано.
Это лучшая в Ардуино реализация независимых от вызова в loop() таймеров. Причем не в русскоязычном, а вообще в Ардуино для АВР.

КэмелКейс с венгерскими префиксами - привычный, но не самый лучший стиль. Поскольку его многие работодатели требуют, то меня он как раз бесит! :wink:

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


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();
}
1 лайк

Кэмэл - это ведь С++ стиль, это нормально. А венгерская нотация вредна для Ардуино - это просто пудрит мозги. Я так считаю.
ПС. Возможно, это имеет смысл для больших проектов.

Извиняюсь, конечно. Но, если бы писал с пробелами (как учили в школе) было бы красивше.(

for (uint8_t idx = 0; idx < FSize; ++idx) {

И индекс, обычно через i задаётся.)

Скорее всего кто как привык. У меня первый язык был Delphi (начиная с 4, по моему, уже стал языком, ранее паскаль…) Для меня он самый красивый и понятный. Но это для меня. :slight_smile: Я не говорю, что это так и есть.
Но как радует глаз:

:slight_smile:

Форматирует нормальная ИДЕ, даже Ардуино ИДЕ уж это умеет, причем в ЛЮБОМ стиле. В стиле и описываешь все пробелы и отступы и новые строки, как тебе нравится. Программист уже давно сам ничего не форматирует.


(как и куда написать файл настройки форматирования в Ардуино ИДЕ 2.х - могу рассказать, если будут слушатели и у меня минутка свободная, там этого в меню нет)

2 лайка

Ну, как это тебе нравится? Это пофигизм называется. Жалею что в Си нет таких правил как в Пайтоне.

Иногда бесит, когда переносит на новые строки. Но возможно такое не настроишь))

типа
x = 10; y = 50; а она делает:
x = 10;
y = 10;

Есть два стиля основных.
Например спор о том, где ставить скобку после ИФ - в той же строке или в новой.
Меня новые - бесят, я в той же люблю. И мне важно так настроить среду.
И таких мелочей много.

1 лайк

Два оператора на одной строке - харам. Строго харам. :wink: Не настроишь… и слава Б…гу!

Да, из мелочей всё складывается. И два оператора на одной строке иногда приемлемо. Всё для наглядности.

Ну это я что в голову пришло сразу…
Хотя в си очень понравились всякие плюшки типа ++, +=, ? :, ну или так присваивать 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 лайк

спалил хату?
Только я собрался попонтоваться, а тут ты, с неуместной осведомленностью! :wink:

Я бы делал по школьному учебнику физики.
Правильно сделанный алгоритм подойдет всегда (кроме тех случаев, когда он окажется слишком ресурсоемким), неправильный алгоритм - может подойти лишь к каким-то частным случаям.

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

Вот для начал нужно определиться с этим: что же Вам нужно - целые Амперы, десятые доли Ампера или сотые доли Ампера. Причем, именно “или”, а не “и”. Т.е. или Амперы, или десятые или сотые.

Он просто не может сообразить, что такое “в десятых/сотых ампера”.

Для ТС - имеем ток 1,2А.
В амперах это будет 1;
В десятых долях ампера это будет 12;
В сотых долях ампера это будет 120;

И т.д.

Т.е. если вам нужна точность 1,20А, то и делайте в сотых - 120. А если это надо выводить на экран: выводите амперы - 120/100, выводите десятичную точку, выводите сотые ампера - 120%100

:slight_smile:
Да все я сообразил. Да, хорошо, мне нужно в сотых ампера…))). т.е. если я получу с датчика 120, то это будет 1.2 ампера. Ну я же вроде уже говорил об этом, но может не так формально как у вас, ну да ладно))

Ну так если у меня будет получено с датчика 120, и я знаю, что это амперы*100 т.е. по вашему в сотых, то я уж из этого получу то что мне нужно 120 / 100 = 1 и 120 % 100 = 20 а на экран выведу sprintf(_str, “%d.%d”, 120 / 100, 120 % 100) - типа такого.
Вы лучше алгоритм подскажите или саму функцию))) А там разберемся… в сотых или в десятых… Главное чтобы результат был в целых числах

Вот. Бедные педагоги. Им памятник нужно ставить. У меня психики на всё это не хватает.(

Педагоги, да согласен… Но при чем тут они??? Или я как-то не ясно объясняю? ))) Уверен на 10000 процентов, что все уже все давно поняли, просто нужно повыпендриваться… тут на этом форуме так принято… это факт)))