Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как назначить максимальный угол для поворота сервопривода

Хамзат Шадиев Ученик (88), открыт 1 неделю назад
есть такой код нужно чтобы у сервопривода максимальный поворот был 45 градусов в одну сторону и 45 в другую
я плохо разбираюсь и даже если под носом будет не пойму как это сделать
 #include <Servo.h>  
Servo servo1;
Servo servo2;
int x =0;
int y =0;


void setup() {

servo1.attach(3);
servo2.attach(7);

}

void loop() {
y = analogRead(1);
x = analogRead(0);

if (x>700) { servo1.write(180);}
if (x<300) { servo1.write(0);}
if (x>300 && x<600) { servo1.write(90);}
if (y<300) {servo2.write(0); }

if (y>700) {servo2.write(180);}
if (y>300 && y<600) { servo2.write(90);

}

}
5 ответов
nanakorobiyaoki ?? Ученик (217) 1 неделю назад
101304100243
Хамзат ШадиевУченик (88) 1 неделю назад
спасибо храни тебя господь ??????????????????
nanakorobiyaoki ?? Ученик (217) Хамзат Шадиев, не зна что
zxc timoxa2012 Ученик (183) 1 неделю назад
это ваще ужас
Хамзат ШадиевУченик (88) 1 неделю назад
да blyat poxuy мне что ужас не я код писал
Мео Меоч Гуру (2541) 1 неделю назад
360 градусов
Хамзат ШадиевУченик (88) 1 неделю назад
чег о360 градусов
Мео Меоч Гуру (2541) Хамзат Шадиев, вкном
Руслан Шулык Знаток (257) 1 неделю назад
chatGPT

Для того чтобы ограничить максимальный угол поворота сервопривода в диапазоне **от 45° влево до 135° вправо** (то есть -45° до +45° относительно центра), можно использовать функцию `map()`.

### **Измененный код с ограничением углов:**
```cpp
#include <Servo.h>

Servo servo1;
Servo servo2;

int x = 0;
int y = 0;

void setup() {
servo1.attach(3);
servo2.attach(7);
}

void loop() {
y = analogRead(1);
x = analogRead(0);

// Преобразуем диапазон 0-1023 в 45-135 градусов (ограниченный угол поворота)
int angle1 = map(x, 0, 1023, 45, 135);
int angle2 = map(y, 0, 1023, 45, 135);

servo1.write(angle1);
servo2.write(angle2);

delay(20); // Задержка для стабильной работы сервоприводов
}
```

### **Как работает этот код?**
1. `map(x, 0, 1023, 45, 135)`:
- При **x = 0**, угол будет **45°** (минимальный поворот).
- При **x = 1023**, угол будет **135°** (максимальный поворот).
- При **x = 512** (середина), угол будет **90°** (нейтральное положение).

2. То же самое применяется для **servo2**.

3. Теперь сервопривод не будет выходить за пределы **от 45° до 135°**.

### **Почему `map()` лучше?**
- Нет необходимости вручную прописывать условия `if`.
- Плавное управление сервоприводом без резких скачков.
- Код компактнее и проще.

Теперь ваш сервопривод будет двигаться **в пределах 45-135°**, а не во всем диапазоне 0-180°.
Vov4ik Мастер (1505) 1 неделю назад
Читать за тебя методичку (которую ты не дал), никто не будет.
Хамзат ШадиевУченик (88) 1 неделю назад
ny u udu naxyu
Похожие вопросы