Руслан Шулык
Знаток
(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°.
я плохо разбираюсь и даже если под носом будет не пойму как это сделать