отключение сервоприводов
- Войдите на сайт для отправки комментариев
Втр, 04/04/2017 - 22:01
Друзья, помогите начинающему ардуинщику.
Пытаюсь впихнуть в код отключение сервопривода после установки на заданный угол. Но почему-то после отработки, и паузы в 3 секунды больше не работает((( И так пытался и сяк.... Ниже скетч управления жалюзями.
[code]
/*Управляем сервой в зависимости от освещенности
Используем фотосопротивление, может быть любой аналоговый сенсор
*/
#include <Servo.h> //Подключаем библиотеку Servo
Servo motor1;
//Servo motor2;
int sensePin1 = 0;//Обьявляем 0 аналоговый пин
//int sensePin2 = 1;//Обьявляем 1 аналоговый пин
void setup()
{
analogReference(DEFAULT); //Объявляем диапазон чтения с аналогового порта.Необязательное
/* Будем смотреть вывод на сериальном мониторе с Ардуино, для чего его инициализируем
Заодно можно посмотреть диапазон работы датчика чтобы в этом диапазоне поворачивать серву*/
Serial.begin(9600);
motor1.attach(10); // Подключаем серву на 10 пин
//motor2.attach(9); // Подключаем серву на 10 пин
}
void loop()
{
motor1.attach(10);
// Печатаем на монитор
Serial.println(analogRead(sensePin1));
//Serial.println(analogRead(sensePin2));
int val1 = analogRead(sensePin1);// Создаем переменную val1 для чтения analogRead
//int val2 = analogRead(sensePin2);// Создаем переменную val2 для чтения analogRead
val1 = constrain(val1, 0 , 1023); // Ограничиваем диапазон работы датчика посмотрев его на мониторе
// (200 - что бы свет из комнаты не мешал,
// 900 чтобы и в пасмурную погоду жалюзи были открыты на полную)
//val2 = constrain(val2, 400 , 900); // Ограничиваем диапазон работы датчика посмотрев его на мониторе
int motor1Angl = map(val1, 0, 1023, 150, 0); //Преобразуем диапазон выдаваемый датчиком в диапазон углов сервы
//int motor2Angl = map(val1, 900, 400, 5, 170); //Преобразуем диапазон выдаваемый датчиком в диапазон углов сервы
motor1.write(motor1Angl);// Устанавливаем серву на угол который получаем через преобразование
//motor2.write(motor2Angl);// Устанавливаем серву на угол который получаем через преобразование
//motor1.detach();
delay (3000); //делаем задержку 300000 - 5 минут (что бы сервы не трещали)
motor1.detach();
}
[/code]
Если Вам нужно просто пеиодически устанавливать сервопривод а различные положения без удержания, проще отказаться от servo.h и работать непосредственно с сервоприводом.
Нет мне необходимо что бы сервопривод удерживал положение жалюзей постоянно и раз в 5 минут корректировал их наклон в зависимости от осещения. Как мне лучше реализовать свою задумку? вы можете мне помочь?
Сервопривод удерживает, когда работает, а вот когда отключен, он не удерживает. Как вам помочь я не знаю. Может сходите к специалистам,врачу например.
Нет мне необходимо что бы сервопривод удерживал положение жалюзей постоянно и раз в 5 минут корректировал их наклон в зависимости от осещения. Как мне лучше реализовать свою задумку? вы можете мне помочь?
Сделать так.