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.
void
goto_(
int
pos) {
15
for
(
int
i=0; i<pos; i++) {
16
myservo.write(i);
17
delay(servo_speed_delay);
18
}
19
delay(1000*back_delay);
20
myservo.write(0);
22
}
23
}
Ну и в начале скетча нужно добавить переменную
int back_delay = 10; // (например 10мс)
Ну и в начале скетча нужно добавить переменную
int back_delay = 10; // (например 10мс)
Спасибо, будем проверять.
Скетч в работе, просьба пока не беспокоиться, об изменениях сообщу.
Скетч в работе, просьба пока не беспокоиться ...
Улыбнуло :) Оч черьезный проект ! Там в исправлениях скобочка лишняя :)
arduino.maingroup@mail.ru
Господа и дамы. всем спасибо, работа выполнена.
Господа и дамы. всем спасибо, работа выполнена.
Этот раздел - не за СПАСИБО.
Это так, на будущее.
Господа и дамы. всем спасибо, работа выполнена.
Взял этого "клиента" себе на заметку. Это не бесплатный раздел.
Этот раздел - не за СПАСИБО.
Это так, на будущее.
Взял этого "клиента" себе на заметку. Это не бесплатный раздел.
1. Я читать умею.
2. Спасибо сказал всем тем, кто уделил внимание моему топику, согласно правил хорошего тона.
3. С тем кто первый откликнулся и предложил наиболее приемлемые условия, расчет был произведен незамедлительно и в полном объеме.