Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h> // подключаем библиотеку Servo.h для управления сервоприводом
- int sensorPin = A0; // пин, к которому подключен аналоговый датчик
- int servoPin = 9; // пин, к которому подключен сервопривод
- int sensorValue = 0; // переменная для хранения значения, полученного с аналогового датчика
- int servoGrad = 90; // начальный угол сервопривода, установлен на 90 градусов (среднее положение)
- int tolerance = 40; // допустимый диапазон отклонений для показаний датчика, чтобы учитывать погрешности
- Servo myservo; // создаем объект myservo для управления сервоприводом
- void setup() {
- pinMode(sensorPin, INPUT); // устанавливаем пин с датчиком как входной, чтобы считывать данные
- myservo.attach(servoPin); // привязываем объект myservo к пину для управления сервоприводом
- myservo.write(servoGrad); // устанавливаем начальное положение сервопривода на 90 градусов
- }
- void loop() {
- sensorValue = analogRead(sensorPin); // читаем текущее значение с аналогового датчика (от 0 до 1023)
- // если значение с датчика меньше (512 - tolerance), нужно повернуть сервопривод вправо
- if (sensorValue < (512 - tolerance)) {
- if (servoGrad < 180) { // проверяем, что текущий угол меньше 180 градусов, чтобы не выйти за пределы
- servoGrad++; // увеличиваем угол на 1 градус
- myservo.write(servoGrad); // обновляем положение сервопривода
- }
- }
- // если значение с датчика больше (512 + tolerance), нужно повернуть сервопривод влево
- if (sensorValue > (512 + tolerance)) {
- if (servoGrad > 0) { // проверяем, что текущий угол больше 0 градусов, чтобы не выйти за пределы
- servoGrad--; // уменьшаем угол на 1 градус
- myservo.write(servoGrad); // обновляем положение сервопривода
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement