Прошу помощи с сервоприводом
- Войдите на сайт для отправки комментариев
Здравствуйте,
прошу помощи в синхронизации сервопривода с датчиком шума. Задача: заставить поворачиваться сервопривод на 90 градусов если шум превышает допустимую норму. Датчик шума прекрасно работает с пьезопищалкой, но с серваком он просто игнорирует наличие датчика шума и проварачиватся на 90 градусов с интервалом. В чем может быть проблема? Вот код.
#include <Servo.h>
Servo servo;
int threshold = 600;
int volume;
void setup()
{
Serial.begin(9600); // For debugging
pinMode(A0, INPUT); // вход
pinMode(10, OUTPUT);// выход
servo.attach (10); // моторчик из порта 10
}
void loop()
{
volume = analogRead(A0);
Serial.println(volume);
delay(45);
if(volume>=threshold){
servo.write (90); // если звук громкий то поворот на 90 градусов
delay ( 1000);
}
else{
servo.write (0) ; // если нет звука то находится в нуле
}
}
Сперва это . Не глумитесь над людьми. Далее с каким интервалом поворачивается и чему при этом равно volume?
Когда все прекрасно работало с пьезопищалкой идеальными значениями threshold были 600-750. При значениях около 200 пищалка издавала звук не переставая, а при значениях свыше 1000 была очень низка чувствительность.
Cервомашинка проворачивается даже в абсолютной тишине. И вообще периодически живет своей жизнью, например меняет угол. То есть весь этот цикл происходит без участия микрофона, как подключаешь питание так и сервомашинка вертится туда обратно без перерыва. В этом и заключается проблема.
10 нан на аналоговый вход не пробовали?
А как у вас серва подключена?
Да у ТС видно аналог пляшет от нуля до бесконечности. Фильтрануть и забыть. Или программно, но я бы не заморачивался....
Всё так лениво происходит..... Быстрая реакция не нужна..... И даже вредна.....
Судя по скрину, если код тот-же, должно было сработать 4 раза, остальное стоять в нулях. Боюсь не серва ли напрямую в дуину сунута, от и колбасит ее бедную.