Перейти к содержанию
    

juvf

Свой
  • Постов

    1 571
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

juvf стал победителем дня 13 марта

juvf имел наиболее популярный контент!

Репутация

9 Обычный

Информация о juvf

  • Звание
    Профессионал
    Профессионал

Контакты

  • Сайт
    Array
  • ICQ
    Array

Посетители профиля

6 824 просмотра профиля
  1. Моё цитирование говорит, что jcxz речь ведёт про электротранспорт. Весь мой пост - это обращение к ТС. Прочитайте весь мой пост, а не одну строчку. Замените слово "Вы" на "Вы, dimir,".
  2. Я процитировал jcxz-а. Я обращался к dimir-у, процитировал jcxz-а. Я хотел процитировать не кого попало, а именно jcxz и не кому попало а именно топикастеру, Что не так? jcxz привел пример про электротранспорт. dimir стал говорить в ответ про какой-то карбюратор. Я dimir-у процитировал jcxz-а, показав ему dimir-у, что jcxz говорить об электротранспорте. В чем ко мне претензия? Что не так? тс, разбери любую мышку старую мышку с шаром (или с не очень старую с центральным колёсиком). Там эти колёсики... и там же ИКашками можно разжиться.
  3. Это ТС-у (типикастиру), т.е. dimir-у. Тему создал dimir. Какие проблемы?
  4. да Нажимая на педаль, в контроллер двигателя попадает информация "Педаль нажата на 57,76%". Всё! Больше педаль ни чего не делает. Педаль - это просто датчик перемещения. Вы можете с телефона передать эту информацию в контроллер, а можете вообще через интернет, можете смс-кой..... Контроллер управления двигателя получив эту информацию задает ток в тяговом двигателе. В электродвигателе крутящий момент прямо пропорционален току. Если у вас двигатель может ток от 0 до 100А, то 57,76% педали соответствует 57,76А тока. При этом автомобиль может ехать 40 км/час (в горку, груженный), а может 140 км/ч (с горки, пустой). КАРБЮРАТОР!? - а что такое карбюратор? Ещё раз.... в ЭЛЕТРОТРАНСПОРТЕ!!! Вы тему создали про электродвигатель. В вашем 24-х вольтовом моторчике есть карбюратор и заслонка? Если Вам нужно контролировать крутящий момент - делайте ПИД через контроль тока. Но по току, Вы не сможете контролировать скорость вращения. ps есть ещё методики EMF Back-EMF и Current Back-EMF. Может они Вам помогут. Но гораздо проще смострячить тахометр, нежели реализовать Back-EMF. ИМХО.
  5. в данном случае это именно так.
  6. ps Ваш вердикт, уважаемые гуру. На сколько качественный код? Можно для старта/шаблона использовать подобный код/чат/бот?
  7. в телеге бот. попробуйте. всего 2 минуты и картина маслом. бомбите его уточняющими вопросами. вполне годные ответы дает. https://t.me/gpturbo_bot
  8. вот от куда ноги спора диалога растут.
  9. а причем тут строгая типизация? Вы, прежде чем кидаться словами, поймите, о чем речь идет, а потом уже будете обвинять других. Сбавьте обороты.
  10. это Вы не в ту степь ушли. А теперь напишите enum class En {FROST } и попробуйте тоже самое - int temp = FROST; 🙂 я сказал "int temp = FROST; нет ни какой разницы FROST - это дефайн или енум.". При чем тут различия между enum и enum class? Речь шла о том, что имя "FROST" писать как eFROST или как FROST? Разницы нет.
  11. Это Вы немного не поняли о чем я говорил. И причем тут проблемы енума и понимание того, каким методом была задана константа?
  12. что-то я действительно не понял. но я понял то, что Вы это сами не писали 😉 Написал. Компилятор выдал ошибку Error[Pe101]: "EN0" has already been declared in the current scope (�Hat line 32�h) myFile.cpp 36 Error[Pe101]: "EN1" has already been declared in the current scope (�Hat line 32�h) myFile.cpp 36 написал. И что? Что с этим дальше делать? Вы предлагаете int инициализировать типом A. А зачем? Теперь то, о чем я говорил. Допустим есть некий порог температуры. Автор программы библиотеки задает эту константу так: #define FROST 10 либо так enum {FORST = 10}; Сделал, отдал в продакшин. Теперь прикладной программист пишет свой код с использованием вашей библиотеки int temperature = FORST; //вот тут какая разница как в FORST попала 10? Тут прогер должен понимать, что создалась переменная типа int, и она инициализировалась значением 10. Это Эквивалент записи int temperature = 10; ps даже если очень жжет использовать enum class, очень хочется, но не хотите при каждом использовании кастовать, то закастуйте дефайном enum class A { EN0 = 10, EN1 = 20 }; #define FORST (static_cast<int>(A::EN0)) //так const int FORST2 = static_cast<int>(A::EN1); //ну или даже так int temp = FORST2 - FORST; //вот тут какая разница, как 10 и 20 попали/заменились на FORST и FORST2? эквивалент int temp = 10; Тут нужно понимать что в temp ляжет 10, которая вычислилась на этапе компиляции pps #define asd(m) (do(0){return 5*m;}) #define EN1 true #define TEMP2 asd(5) const int pi1 = 3; enum { ANGLE1 = pi1*10 + (EN1 ? TEMP2: 13)}; enum class A{ASD = ANGLE1, ASD2 = ANGLE1 + 6}; enum {QWE0 = static_cast<int>(A::ASD2), QWE1, QWE2}; #define POIU (QWE2 - 31) int angleOfHor = POIU; //в конечном счете это тоже самое, что и int angleOfHor = 32; Разворачивай хоть что, хоть в чем.
  13. плюсую. int temp = FROST; нет ни какой разницы FROST - это дефайн или енум. нет ни какой разницы, с точки зрения конечного пользователя этой функции - она макрос, инлайн или обычная функция. Автор my_macro_func() принимает решение, как максимально эффективно её определить и решает сделать её макросом или функцией. Пользователя это не должно волновать. (более того, она вообще может быть и на асме определена, а может быть и из библиотеки взята, исходного кода которой у вас нет.) Тем более автор этой функции, может в любой момент переоформить её из макроса, в обычную функцию. Тогда Вам придется my_macro_func() переименовывать в my_func() - а это смена API. У пользователей посыпется сборка. мне казалось, что общепринятые правила, это имена функций и методов - с маленькойБуквы. см printf(), strlen(), open(), .... мне мешают нотации/префиксы/постфиксный. Я делаю все имена переменных/функцый - с маленькой, все имена типов/классов с большой. Наверно из Qt и FreeRTOS подчерпнул. Разделение слов - кэмл, без '_'.
  14. Тут скорее всего объявление не переменной, а переменных. Зачем в таком коде индекс у i? С логической точки зрения кода, что делается в case 1: - объявляется переменная i - определяется значением р[1] - Вычисляется r = a*i; С точки зрения читаемости кода индекс не нужен. Попробуйте собрать так int Tst1(int a, int *p) { int r = -1; switch (a) { case 0: int i; i = p[0]; r = a + i; break; case 1: int i; i = p[1]; r = a * i; break; case 2: int i; i = p[2]; r = a << i; break; } return r; } Получите ошибку: Error[Pe101]: "i" has already been declared in the current scope. Скобочки решают эту проблему. Можно конечно без скобок и без индексов так сделать int Tst1(int a, int *p) { int r = -1; switch (a) { case 0: int i; i = p[0]; r = a + i; break; case 1: i = p[1]; r = a * i; break; case 2: i = p[2]; r = a << i; break; } return r; } Соберётся и будет работать. Но это вообще какой-то зашквар. Под case 0: объявляется переменная, а под case 2: определяется.
  15. STM32CubeIDE

    typedef struct { uint8_t family; uint8_t code[MAXDEVICES_ON_THE_BUS]; uint8_t crc; } RomCode; // RomCode romCode;//можно проинициализировать вот так = {.family = 1, .crc = 0xCA}; void main(void) { for(;;) { asm("nop"); } }
×
×
  • Создать...