Upgrade servo-скетча
- Войдите на сайт для отправки комментариев
Arduino UNO (оригинал), MG90S (похож на оригинал)
Работающий скетч, который нужно дополнить новыми параметрами:
#include <Servo.h>
Servo myservo;
const int max_stops = 3; //количество временных точек
unsigned long_[max_stops] = {500, 2000, 5000}; //временные точки в миллисекундах
const int servo_speed_delay = 2; //задержка в шагах при повороде (2 - быстро, 100 - медленно, 0 - нельзя)
const int angle = 90; //угол поворота (градусы от 0 до 170)
bool started = false;
int val;
int count;
unsigned long timer_delta;
void goto_(int pos) {
for (int i=0; i<pos; i++) {
myservo.write(i);
delay(servo_speed_delay);
}
for (int i=pos; i>0; i--) {
myservo.write(i);
delay(servo_speed_delay);
}
}
void setup() {
Serial.begin(9600);
Serial.println("Arduino started !");
myservo.attach(9);
myservo.write(0);
pinMode(13, OUTPUT);
}
void loop() {
if (started) {
//если наступило время поднятия лапы сервы
if (millis() - timer_delta >= time_[count] - 1 && millis() - timer_delta <= time_[count] + 1) {
digitalWrite(13, LOW);
goto_(angle);
digitalWrite(13, HIGH);
count++;
if (count == max_stops) {
delay(1000);
started = false;
digitalWrite(13, LOW);
Serial.println("finished");
}
}
}
if (Serial.available() && !started) { //если есть что принять и не было начато работы с мотором
val = Serial.read();
if (val == '1') {
Serial.println("started");
digitalWrite(13, HIGH);
started = true;
timer_delta = millis();
count = 0;
}
}
}
Нужно добавить:
1) программируемую паузу (в мс) перед возвратом сервы
2) возврат сервы должен быть на максимальной скорости, а не как сейчас, когда она возвращается со скоростью указанную с строке "const int servo_speed_delay = X"
Нужно что бы в одну сторону она шла со скоростью как стоит в (вышеуказанном) параметре, а назад с максимально возможной.
"Лить воду" про гугл, ютуб и прочее не нужно, цену-сроки прошу на мыло prsrpst(цобако)mail.ru связь для оперативности, желательно держать через телеграм, но и другие способы возможны.
Сразу после доработки и проверки этого скетча, обсудим еще одну модернизацию, все то же самое , но работа только из крайних положений без мгновенного возврата и соответственно паузы из п.1.
voidgoto_(intpos) {15for(inti=0; i<pos; i++) {16myservo.write(i);17delay(servo_speed_delay);18}19delay(1000*back_delay);20myservo.write(0);22}23}Ну и в начале скетча нужно добавить переменную
int back_delay = 10; // (например 10мс)
Ну и в начале скетча нужно добавить переменную
int back_delay = 10; // (например 10мс)
Спасибо, будем проверять.
Скетч в работе, просьба пока не беспокоиться, об изменениях сообщу.
Скетч в работе, просьба пока не беспокоиться ...
Улыбнуло :) Оч черьезный проект ! Там в исправлениях скобочка лишняя :)
arduino.maingroup@mail.ru
Господа и дамы. всем спасибо, работа выполнена.
Господа и дамы. всем спасибо, работа выполнена.
Этот раздел - не за СПАСИБО.
Это так, на будущее.
Господа и дамы. всем спасибо, работа выполнена.
Взял этого "клиента" себе на заметку. Это не бесплатный раздел.
Этот раздел - не за СПАСИБО.
Это так, на будущее.
Взял этого "клиента" себе на заметку. Это не бесплатный раздел.
1. Я читать умею.
2. Спасибо сказал всем тем, кто уделил внимание моему топику, согласно правил хорошего тона.
3. С тем кто первый откликнулся и предложил наиболее приемлемые условия, расчет был произведен незамедлительно и в полном объеме.