1

Topic: код для бесколлекторного моторчика

Здравствуйте, создаю проект включающий серво и бесколлекторный мотрчик. Есть 3 вопроса.
1. Какую формулу для серво использовать со слайдером от -100 до 100?
2. Какую формулу использовать для бесколлекторного мотрчика со слайдером от 0 до 100?
3. Как вычесляется эта формула для сервы /int ms = RemoteXY.slider_1*20+500;/ из примера по подключению сервопривода

2 (edited by Айдар 2024-06-11 08:32:10)

Re: код для бесколлекторного моторчика

Вот код для бесколлектоного моторчика если кому надо:
#include <Servo.h>

/*
   -- New project1 --
   
   This source code of graphical user interface
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 3.1.13 or later version
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/                   
     - for ANDROID 4.13.13 or later version;
     - for iOS 1.10.3 or later version;
   
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.   
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// можете включить вывод отладочной информации в Serial на 115200
//#define REMOTEXY__DEBUGLOG   

// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__HARDSERIAL


// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600


#include <RemoteXY.h>

// конфигурация интерфейса RemoteXY 
#pragma pack(push, 1) 
uint8_t RemoteXY_CONF[] =   // 45 bytes
  { 255,2,0,0,0,38,0,17,0,0,0,13,2,106,200,200,84,1,1,2,
  0,4,16,22,27,81,17,53,78,14,176,94,26,4,18,152,73,24,150,2,
  17,71,0,37,26 };
 
// структура определяет все переменные и события вашего интерфейса управления
struct {

    // input variables
  int8_t slider_02; // oт 0 до 100

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0

} RemoteXY;   
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////

Servo motor1;

void setup()
{
  RemoteXY_Init ();

  motor1.attach(2);
  motor1.writeMicroseconds(2300);
  delay(2000);
  motor1.writeMicroseconds(800);
  delay(6000);

}

void loop()
{
  RemoteXY_Handler ();

  int val = map(RemoteXY.slider_02, 0, 100, 800, 2300);
  motor1.writeMicroseconds(val);

}
Все воросы до этого исчерпаны. Но появиля новый, как заставить серво поварачиватся плавно?

3

Re: код для бесколлекторного моторчика

Формулы про которые вы говорите - есть функция map которая за вас решит эту задачу. https://arduino.ru/Reference/Map
Что касается "плавно поворачиваться", это немного сложнее. Если в кратко, то ваш микроконтроллер умеет производить вычисления как минимум несколько раз в секунду. Вы должны в каждом цикле получать текущее время, и далее вычислять нужное положение сервопривода для этого момента времени и отправлять это положение в серво. 10-20 раз в секунду думаю будет достаточно. Таким образом вы можете заставить ваш сервопривод вращаться настолько плавно на сколько захотите.

4

Re: код для бесколлекторного моторчика

я не совсем понял о чем вы говорите, попробовал найти по отдельности действия о которых вы говорите нашёл подобный код и переделал под себя. но не заработало(


код:

#include <Servo.h>

/*
   -- New project1 --
   
   This source code of graphical user interface
   has been generated automatically by RemoteXY editor.
   To compile this code using RemoteXY library 3.1.13 or later version
   download by link http://remotexy.com/en/library/
   To connect using RemoteXY mobile app by link http://remotexy.com/en/download/                   
     - for ANDROID 4.13.13 or later version;
     - for iOS 1.10.3 or later version;
   
   This source code is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.   
*/

//////////////////////////////////////////////
//        RemoteXY include library          //
//////////////////////////////////////////////

// можете включить вывод отладочной информации в Serial на 115200
//#define REMOTEXY__DEBUGLOG   

// определение режима соединения и подключение библиотеки RemoteXY
#define REMOTEXY_MODE__HARDSERIAL


// настройки соединения
#define REMOTEXY_SERIAL Serial
#define REMOTEXY_SERIAL_SPEED 9600


#include <RemoteXY.h>

// конфигурация интерфейса RemoteXY 
#pragma pack(push, 1) 
uint8_t RemoteXY_CONF[] =   // 45 bytes
  { 255,2,0,0,0,38,0,17,0,0,0,13,2,106,200,200,84,1,1,2,
  0,4,16,22,27,81,17,53,78,14,176,94,26,4,18,152,73,24,150,2,
  17,71,0,37,26 };
 
// структура определяет все переменные и события вашего интерфейса управления
struct {

    // input variables
  int8_t slider_01; // oт -100 до 100


    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0

} RemoteXY;   
#pragma pack(pop)

/////////////////////////////////////////////
//           END RemoteXY include          //
/////////////////////////////////////////////
unit32_t myTimer;
Servo myservo;

void setup()
{
  RemoteXY_Init ();
  myservo.attach(3);




  // TODO you setup code
 
}

void loop()
{
  RemoteXY_Handler ();
  if (millis() - myTimer >=100){
    myTimer = millis();
    int x = map(RemoteXY.slider_01, -100, 100, 0, 180);
    myservo.write(x);
  }


}

Можете сказать этот код далёк от того, что вы имели ввиду?  Если да можете пожалуйста привести пример один из описсаных вами циклов.