Topic: Помогите пожалуста. Как сделать плавный поворот серво?
Здравствуйте, никак не могу заставить серво вращаться плавно.
Написал вот такой код:
#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
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 myservo;
Servo motor1;
void setup()
{
RemoteXY_Init ();
myservo.attach(3);
motor1.attach(2);
motor1.writeMicroseconds(1500);
delay(2000);
motor1.writeMicroseconds(800);
delay(6000);
// TODO you setup code
}
void loop()
{
RemoteXY_Handler ();
for (int x = map(RemoteXY.slider_01, -100, 100, 0, 180); x <= 180; x++){
myservo.write(x);
RemoteXY_delay(10);
}
for (int x = map(RemoteXY.slider_01, -100, 100, 0, 180); x >= 0; x--){
myservo.write(x);
RemoteXY_delay(10);}
// TODO you loop code
// используйте структуру RemoteXY для передачи данных
// не используйте функцию delay(), вместо нее используйте RemoteXY_delay()
//int x = map(RemoteXY.slider_01, -100, 100, 0, 180);
//myservo.write(x);
//RemoteXY_delay(1);
int val = map(RemoteXY.slider_02, 0, 100, 800, 1500);
motor1.writeMicroseconds(val);
}
Но с таким кодом серво поварачивается самопроизвольно. Помогите исправить код или подскажите новый пожалуйста.