Вопрос по чужому коду

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

Есть вот такой код (фрагмент кода управления цифровым потенциометром):


#define CS 4
#define INC 5
#define UD 6
#define STEP 5

LiquidCrystal_I2C lcd(0x27, 20, 4);

volatile bool intFlag = false;
unsigned long delayFront;
unsigned long previousMillis;
unsigned long currentMillis;
const long interval;
int pop, dat = 0, dat_old;
bool w = 1;
volatile bool startDelay = false;

void setup() {
interrupts();
delayFront == 0;
Serial.begin(57600);
pinMode(2, INPUT);
pinMode(3, OUTPUT);
pinMode(CS, OUTPUT);
cl();
attachInterrupt(0, event, RISING);
}

void event() {
intFlag = true;
}


Что такое cl(); в этом коде?
Реклама
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 333
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

скорее всего cli() - запрет прерываний.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

Вот ещё фрагмент этого кода:

void cl() {
digitalWrite(UD, LOW);
for (int i = 0; i < 100; i++) {
digitalWrite(INC, LOW);
digitalWrite(INC, HIGH);
}
}
void up(byte data) {
digitalWrite(UD, HIGH);
for (int i = 0; i < data; i++) {
digitalWrite(INC, LOW);
digitalWrite(INC, HIGH);
}
}
void dw(byte data) {
digitalWrite(UD, LOW);
for (int i = 0; i < data; i++) {
digitalWrite(INC, LOW);
digitalWrite(INC, HIGH);
}
}


Пояснение к этому фрагменту кода.

блок void cl()... это выполнять все 100 шагов изменения сопротивления цифрового потенциометра.

блок void up... это увеличивать сопротивление потенциометра на количество шагов задаваемых переменной data
блок void dw.. это уменьшать сопротивление потенциометра на количество шагов задаваемых переменной data
Последний раз редактировалось electroget Пт авг 22, 2025 13:13:36, всего редактировалось 1 раз.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 333
Зарегистрирован: Ср мар 09, 2016 08:07:41

Сообщение JackSmith »

[uquote="electroget",url="/forum/viewtopic.php?p=4740569#p4740569"]Вот ещё фрагмент этого кода:[/uquote]

cl(); // сбросить на минимум (потенциометр)
up(50); // установить 50%
dw(25); // уменьшить на 25 %

как понял 1 шаг = 1 %
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

cl() - функция.

Код: Выделить всё

void cl(){digitalWrite(UD,LOW);for(int i=0;i<100;i++){digitalWrite(INC,LOW);digitalWrite(INC,HIGH);}}
Предложенный источник инфо (найден по фрагменту):
X9Cxxx — электронный потенциометр (Arduino)
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

[uquote="JackSmith",url="/forum/viewtopic.php?p=4740573#p4740573"][uquote="electroget",url="/forum/viewtopic.php?p=4740569#p4740569"]Вот ещё фрагмент этого кода:[/uquote]

cl(); // сбросить на минимум (потенциометр)
up(50); // установить 50%
dw(25); // уменьшить на 25 %

как понял 1 шаг = 1 %[/uquote]

Понял, спасибо.

Добавлено after 1 minute 25 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4740574#p4740574"]cl() - функция.[/uquote]

Благодарю вас за информацию.
В языке Arduino C можно вот так запросто объявлять какие угодно функции? Не знал.
Реклама
Поставщик валерьянки для Кота
Сообщения: 1916
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

Возможно. Главное, чтобы имя не совпадало, например, с именем служебной функции.

Функция с таким коротким именем - комментарий обязателен :).
А однострочная функция с таким количеством операторов в нем нечитабельна, но автор так решил. Для компилятора это то же самое.

Другая крайность: стиль CamelCase code - напр. 10 см функция, с 10 существительными, прилагательными и глаголами ...

напр. в STM32 SPL:
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
Так как не вижу далеко, долго читаем в очках на мониторе, пока не понимаем, что хотели сказать :).
Последний раз редактировалось veso74 Пт авг 22, 2025 13:37:07, всего редактировалось 2 раза.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 4651
Зарегистрирован: Ср сен 30, 2020 16:51:47
Откуда: РФ

Сообщение electroget »

veso74,

Понял, спасибо.
Не знал этого, так как не программист ни разу.

Добавлено after 35 minutes 5 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4740580#p4740580"]Другая крайность: стиль CamelCase code - напр. 10 см функция, с 10 существительными, прилагательными и глаголами ...
напр. в STM32 SPL:
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
Так как не вижу далеко, долго читаем в очках на мониторе, пока не понимаем, что хотели сказать :).[/uquote]

Для меня это всё другая планета. Про стили программирования я только слышал, а STM32 лишь на картинках видел. Я себе вообще не представляю как с ними люди мучаются. Лучше уж тогда какой-нибудь Raspberry Pi наверно.
Друг Кота
Аватара пользователя
Сообщения: 3487
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Сообщение smacorp »

Лучше Sony Playstation. Сидишь, гамаешь и никаких мучений. :roll:
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

electroget писал(а):Лучше уж тогда какой-нибудь Raspberry Pi наверно.
Думаете там будет проще?
Тоже писать код, но еще и с линью взаимодействовать нужно.
Собутыльник Кота
Аватара пользователя
Сообщения: 2723
Зарегистрирован: Пт сен 07, 2018 20:20:02
Откуда: деревня в Тульской губернии

Сообщение ПростоНуб »

Не обязательно. Raspberry PI Pico (RP2040) вполне себе обходится без Linux :)
Вымогатель припоя
Аватара пользователя
Сообщения: 682
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Сообщение linux_rulezz »

В линухе гораздо проще, потому что "всë есть файл". И основная часть низкоуровневого кода за тебя уже написана. Да и ресурсов куда больше, чем 4к оперативки и 20к флеша…
Что до STM32, ничего сложного. Надо просто начинать с чтения документации, разбора сниппетов от ST и написания своих. А пользоваться всякой дрянью вроде SPL/HAL/opencm3 не стоит. А еще хуже - генерировать убогие портянки кода всякими "генераторами".

Ну, а аврку советую сменить на вменяемый микроконтроллер. И ни в коем случае не углубляться в "абдуринщичество". Иначе можно заработать "абдурину головного мозга" со всеми вытекающими.
Windows must die!
Контактная информация:
OKF
Это не хвост, это антенна
Сообщения: 1417
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4751159#p4751159"]Иначе можно заработать "абдурину головного мозга" со всеми вытекающими.[/uquote]
Ардуино от плюсов чем отличается? Наличием фреймворка? Из за мозг то страдает?
Вымогатель припоя
Аватара пользователя
Сообщения: 682
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Сообщение linux_rulezz »

Абдурина - это когда даже документацию не читают, а качают готовый говнокод из интернета.
Я не против плюсов на МК: без аллокаторов он очень хорош за счёт шаблонов, констэкспров и многого другого. Идеальный HAL для МК возможно написать исключительно на С++.
Но писать такую жесть, что вытворяют абдуринщики...
Загонять флоаты на 8-битку, их не умеющую; i2c ногодрыгом, аллокаторы, принтфы всякие... Да и сам подход: как будто у них там конкурс на самый бессмысленный код!

В общем, суровое такое поражение мозга бесконечной тупизной.
Windows must die!
Контактная информация:
OKF
Это не хвост, это антенна
Сообщения: 1417
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4751196#p4751196"]Абдурина - это когда даже документацию не читают, а качают готовый говнокод из интернета.[/uquote]
А потому что Ардуино - это массовость, это просто и доступно, это горы софта. Потому и популярно, и занимаются все кому не лень. Естественно, при такой массовости и таком уровне необдуманно занимающихся всегда будет много мусора и тупизны. Только ничто не мешает писать и с нормальным подходом.
А так да, куда ни плюнь, везде классы, флоаты, ногодрыг. Хотя, во многих случаях, заради простоты и это не имеет особого значения.
Друг Кота
Аватара пользователя
Сообщения: 15615
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4751196#p4751196"]Абдурина - это когда даже документацию не читают, а качают готовый говнокод из интернета....
В общем, суровое такое поражение мозга бесконечной тупизной.[/uquote]
8)
Такой отзыв про пользователей адуринки вызывает только соболезнование его написавшему.
:)
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

ПростоНуб писал(а):Не обязательно. Raspberry PI Pico (RP2040) вполне себе обходится без Linux
Только проще от этого не станет. :dont_know:
linux_rulezz писал(а):В линухе гораздо проще
Написал участник форума с ником linux_rulezz. :))) Явно предвзятое отношение к линю. :wink:
linux_rulezz писал(а):потому что "всë есть файл". И основная часть низкоуровневого кода за тебя уже написана.
И код для цифровых резисторов тоже написан и они винды как файл? :wink:
Или предлагаете писать драйвер (модуль) ядра чтобы работать с резисторами?
Модератор
Аватара пользователя
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля

Сообщение Аlex »

[uquote="Мурик",url="/forum/viewtopic.php?p=4751469#p4751469"]Написал участник форума с ником linux_rulezz. :))) Явно предвзятое отношение к линю. :wink:[/uquote] Это же вновь возродившийся Eddy_Em :)))
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 682
Зарегистрирован: Пн сен 15, 2025 08:43:23
Откуда: Маленький СССР посреди шариатской республики

Сообщение linux_rulezz »

Мурик, прикинь, в линуксе уже давно есть готовые модули для цифровых потенциометров!
Набери в гуголе "linux digital potentiometer kernel module". А вы там со своим маздаем - как в каменном веке!
Windows must die!
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 61
Зарегистрирован: Ср июн 18, 2025 07:20:55

Сообщение sc0rpy »

linux_rulezz писал(а):Абдурина - это когда даже документацию не читают, а качают готовый говнокод из интернета.
[uquote="linux_rulezz"]В линухе гораздо проще, потому что "всë есть файл". И основная часть низкоуровневого говнокода за тебя уже написана..[/uquote]
ты не понимаеш, это другое :)))
глаза баяца, руки из жопы, но я не здаюсь
Ответить

Вернуться в «Arduino»