Контроль скорости бесщеточного двигателя постоянного тока

Я не могу понять код управления скоростью бесщеточного двигателя постоянного тока с помощью WiFi-модуля ESP8266.

Я нашел его на https://ubidots.com. /блог/управление-скоростью-для-бесщеточных-двигателей-с-ан-esp8266-2/

То, что я не могу понять, это-

float btof(byte * payload, unsigned int length) {

char * demo = (char *) malloc (sizeof (char) * 10);

for (int i = 0; i < длина; i++) {

демо[i] = полезная нагрузка[i];

}

плавающее значение = atof (демо);

бесплатно (демо);

возвращаемое значение;
}

// Обратный вызов для обработки подписки

обратный вызов void (тема char*, полезная нагрузка byte*, длина беззнакового целого числа)

{

значение = btof (полезная нагрузка, длина);

значение = карта (значение, 0, 1023, 0, 180);

// Сопоставьте значения 0-100 с ползунка с 0-180, чтобы использовать библиотеку сервоприводов.

ESC.записать (значение);

//Отправляем значение (PWM) в ESC

}

Пожалуйста, помогите мне с кодом!

, 👍0

Обсуждение

Какой аспект кода вы не можете понять? Без конкретики трудно вам помочь., @MichaelT

Вся созданная функция btof и обратного вызова. Зачем они были созданы, какова полезная нагрузка и длина, почему мы создаем btof и функцию обратного вызова, какова логика, лежащая в основе этого, и как они связаны с управлением скоростью бесщеточного двигателя постоянного тока., @laks929


1 ответ


Лучший ответ:

1
  1. Функция обратного вызова должна передавать данные с сервера на ESP.
  2. Полезная нагрузка – это байт данных, отправленный с сервера.
  3. Длина – это размер данных в байтах.
  4. BTOF — это преобразователь байтов в числа с плавающей запятой, который преобразует все полученные байты данных в одну переменную с плавающей запятой и возвращает это значение с плавающей запятой.
  5. ECS.write должна быть функцией, которая записывает значение в микросхему Н-моста контроллера серводвигателя. Он принадлежит сервобиблиотеке.
  6. Диапазон значений, которые можно сопоставить с этим файлом ECS.write, находится в диапазоне от 0 до 180, поэтому функция map будет использовать его для преобразования данных с плавающей запятой, полученных от . функция btof.
  7. Основное определение функции map():

Функция сопоставления сопоставляет число из одного диапазона с другим. То есть значение fromLow будет сопоставлено с toLow, значение fromHigh — с toHigh, промежуточные значения — с промежуточными значениями и т. д.

Не ограничивает значения в пределах диапазона, поскольку значения вне диапазона иногда являются предполагаемыми и полезными. Функцию constrain() можно использовать до или после этой функции, если желательны ограничения диапазонов.

Обратите внимание, что «нижние границы» любого диапазона могут быть больше или меньше «верхних границ», поэтому функцию map() можно использовать для обращения диапазона чисел.

Синтаксис:

map(value, fromLow, fromHigh, toLow, toHigh)

Затем ECS.write(value) запишет сопоставленное значение в H-Bridge контроллера сервопривода.

,

Хорошо, большое спасибо, что прояснили большую часть этого. Тем не менее, у меня мало сомнений- 1)char * demo = (char *) malloc(sizeof(char) * 10); Значение этой строки. 2) Является ли полезная нагрузка определенной функцией? Какой библиотеке он принадлежит? (3) Также я хотел бы узнать о функции подписки и клиенте в коде: client.begin(callback); client.ubidotsSubscribe(DEVICE_LABEL, VARIABLE);, @laks929

В этом случае вам нужно поделиться своим полным эскизом здесь. 1. char * demo = (char *) malloc(sizeof(char) * 10); **Значение этой строки**. Вам следует прояснить свои основные понятия C. При этом вы назначаете некоторое пространство памяти этому указателю char размером 10 байт;, @Vaibhav

Полный эскиз здесь по ссылке- https://ubidots.com/blog/speed-control-for-brushless-motors-with-an-esp8266-2/, @laks929

Полезная нагрузка — это указатель массива байтового типа. Это объявлено в библиотеке ESP8266. Остальное — это особенности протокола связи TCP. Вам следует изучить, как работает протокол TCP. Концепция клиентского сервера, что такое публикация и подписка, а также HTTP-запрос Post and Get. Тогда вы будете знать об этих функциях лучше., @Vaibhav

Хорошо, спасибо большое!!, @laks929

Было бы здорово с вашей стороны, сэр, если бы вы также предоставили несколько полезных ресурсов, если они у вас есть?, @laks929

это простой документ, в котором рассказывается об esp8266 и содержится ссылка на другие протоколы, а также [документ](https://tttapa.github.io/ESP8266/Chap05%20-%20Network%20Protocols.html)., @Vaibhav

Большое спасибо, сэр, за помощь! :), @laks929