#include <Servo.h>
#define SERVO 3
const uint8_t start_angle = 0;
const uint8_t end_angle = 180;
uint8_t target_speed = 5;
uint8_t cur_pos = 0;
uint8_t accel = 1;
uint8_t pos = 0;
Servo myservo;
void setup() {
Serial.begin(9600);
myservo.attach(SERVO);
// put your setup code here, to run once:
}
void loop(){
for(int speed = 0 ;speed<=target_speed;speed+=accel){
cur_pos += speed;
Serial.println(cur_pos);
myservo.write(cur_pos);
delay(15);
}
//постоянная скорость
for(int time = 0 ;time<=10;time+=1){
cur_pos += target_speed;
Serial.println(cur_pos);
myservo.write(cur_pos);
delay(15);
}
//замедление
for(int speed = target_speed; speed >= 0; speed -= accel ){
cur_pos += speed;
Serial.println(cur_pos);
myservo.write(cur_pos);
delay(15);
}
}
// void loop() {
// uint8_t target_speed = 5;
// uint8_t cur_pos = 0;
// uint8_t accel = 1;
// uint8_t pos = 0;
// myservo.write(0);
// cur_pos = start_angle;
// uint8_t end_distance = end_angle;
// delay(500);
// int distance = 0;
// int acc_dis = 0;
// if(cur_pos<end_distance){
// distance = end_distance - cur_pos;
// } else {
// distance = end_distance - cur_pos;
// }
// for (int speed = 0;speed<=target_speed;speed += accel ) {
// acc_dis += speed;
// }
// if(acc_dis>distance){
// //ускорение
// for(int speed = 0 ;speed<=target_speed;speed+=accel){
// cur_pos += speed;
// Serial.println(cur_pos);
// myservo.write(cur_pos);
// delay(15);
// }
// //постоянная скорость
// for(int time = 0 ;time<=10;time+=1){
// cur_pos += target_speed;
// Serial.println(cur_pos);
// myservo.write(cur_pos);
// delay(15);
// }
// //замедление
// for(int speed = target_speed; speed >= 0; speed -= accel ){
// cur_pos += speed;
// Serial.println(cur_pos);
// myservo.write(cur_pos);
// delay(15);
// }
// } else {
// myservo.write(cur_pos);
// delay(15);
// }
// }