Страница 1 из 1

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

Добавлено: Пт авг 22, 2025 12:32:21
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(); в этом коде?

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

Добавлено: Пт авг 22, 2025 12:41:07
JackSmith
скорее всего cli() - запрет прерываний.

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

Добавлено: Пт авг 22, 2025 12:53:38
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

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

Добавлено: Пт авг 22, 2025 13:07:47
JackSmith
[uquote="electroget",url="/forum/viewtopic.php?p=4740569#p4740569"]Вот ещё фрагмент этого кода:[/uquote]

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

как понял 1 шаг = 1 %

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

Добавлено: Пт авг 22, 2025 13:08:55
veso74
cl() - функция.

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

void cl(){digitalWrite(UD,LOW);for(int i=0;i<100;i++){digitalWrite(INC,LOW);digitalWrite(INC,HIGH);}}
Предложенный источник инфо (найден по фрагменту):
X9Cxxx — электронный потенциометр (Arduino)

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

Добавлено: Пт авг 22, 2025 13:19:03
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 можно вот так запросто объявлять какие угодно функции? Не знал.

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

Добавлено: Пт авг 22, 2025 13:26:32
veso74
Возможно. Главное, чтобы имя не совпадало, например, с именем служебной функции.

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

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

напр. в STM32 SPL:
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
Так как не вижу далеко, долго читаем в очках на мониторе, пока не понимаем, что хотели сказать :).

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

Добавлено: Пт авг 22, 2025 14:05:26
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 наверно.

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

Добавлено: Пт авг 22, 2025 17:48:28
smacorp
Лучше Sony Playstation. Сидишь, гамаешь и никаких мучений. :roll:

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

Добавлено: Сб окт 04, 2025 22:43:46
Мурик
electroget писал(а):Лучше уж тогда какой-нибудь Raspberry Pi наверно.
Думаете там будет проще?
Тоже писать код, но еще и с линью взаимодействовать нужно.

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

Добавлено: Вс окт 05, 2025 00:19:37
ПростоНуб
Не обязательно. Raspberry PI Pico (RP2040) вполне себе обходится без Linux :)

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

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

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

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

Добавлено: Вс окт 05, 2025 03:14:54
OKF
[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4751159#p4751159"]Иначе можно заработать "абдурину головного мозга" со всеми вытекающими.[/uquote]
Ардуино от плюсов чем отличается? Наличием фреймворка? Из за мозг то страдает?

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

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

В общем, суровое такое поражение мозга бесконечной тупизной.

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

Добавлено: Вс окт 05, 2025 10:04:41
OKF
[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4751196#p4751196"]Абдурина - это когда даже документацию не читают, а качают готовый говнокод из интернета.[/uquote]
А потому что Ардуино - это массовость, это просто и доступно, это горы софта. Потому и популярно, и занимаются все кому не лень. Естественно, при такой массовости и таком уровне необдуманно занимающихся всегда будет много мусора и тупизны. Только ничто не мешает писать и с нормальным подходом.
А так да, куда ни плюнь, везде классы, флоаты, ногодрыг. Хотя, во многих случаях, заради простоты и это не имеет особого значения.

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

Добавлено: Вс окт 05, 2025 12:58:34
BOB51
[uquote="linux_rulezz",url="/forum/viewtopic.php?p=4751196#p4751196"]Абдурина - это когда даже документацию не читают, а качают готовый говнокод из интернета....
В общем, суровое такое поражение мозга бесконечной тупизной.[/uquote]
8)
Такой отзыв про пользователей адуринки вызывает только соболезнование его написавшему.
:)

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

Добавлено: Пн окт 06, 2025 00:15:03
Мурик
ПростоНуб писал(а):Не обязательно. Raspberry PI Pico (RP2040) вполне себе обходится без Linux
Только проще от этого не станет. :dont_know:
linux_rulezz писал(а):В линухе гораздо проще
Написал участник форума с ником linux_rulezz. :))) Явно предвзятое отношение к линю. :wink:
linux_rulezz писал(а):потому что "всë есть файл". И основная часть низкоуровневого кода за тебя уже написана.
И код для цифровых резисторов тоже написан и они винды как файл? :wink:
Или предлагаете писать драйвер (модуль) ядра чтобы работать с резисторами?

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

Добавлено: Пн окт 06, 2025 00:55:01
Аlex
[uquote="Мурик",url="/forum/viewtopic.php?p=4751469#p4751469"]Написал участник форума с ником linux_rulezz. :))) Явно предвзятое отношение к линю. :wink:[/uquote] Это же вновь возродившийся Eddy_Em :)))

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

Добавлено: Пн окт 06, 2025 09:07:11
linux_rulezz
Мурик, прикинь, в линуксе уже давно есть готовые модули для цифровых потенциометров!
Набери в гуголе "linux digital potentiometer kernel module". А вы там со своим маздаем - как в каменном веке!

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

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