@Nikitor

Нужна совместить работу фоторезистора и потенциометра. Кто поможет?

Нужна сделать так, чтобы сервоприводом можно было управлять фоторезистором или потенциометром, например, хочу чтобы он поворачивался от света, а не хочу, то от потенциометра.
написал такой код, но движение получается дерганным

# include
Servo nikiServo;
int servoPin=9;
int photoPin = 0; // первый фоторезистор подключен 0-му аналоговому входу
int potPin = 2; // второй фоторезистор
int val1 = 1; // переменные для хранения значения входного напряжения
int val2 = 1; //

void setup()
{
Serial.begin(9600);
nikiServo.attach(servoPin);
}

void loop()
{
val1 = analogRead(photoPin); // считываем значение с фоторезисторов
val2 = analogRead(potPin);
Serial.print("values: "); // выводим их в COM-порт
Serial.print(val1);
Serial.print(" : ");
Serial.println(val2);
delay(500);
if(val1>val2) // если освещённость одного больше - зажигаем
{ // соответствующий светодиод, а второй гасим
int fot=analogRead(photoPin);
int pos=map(fot,490,630,0,180);
nikiServo.write(pos);
}
else
{
int fot=analogRead(potPin);
int pos=map(fot,0,400,0,180);
nikiServo.write(pos);
}
}
  • Вопрос задан
  • 359 просмотров
Пригласить эксперта
Ответы на вопрос 3
antonsosnitzkij
@antonsosnitzkij
студент, житель санкт-петербурга
Расскажите, пожалуйста, подробнее

int potPin = 2; // второй фоторезистор - это все таки фоторезистор? или потенциометр?

Дерганность может быть вполне из-за неравномерного освещения. Т.е. свет попадает на фоторезистор по-разному, сигнал с него идет неравномерный.
Ответ написан
Как насчет варианта, когда значение потенциометра меньше, скажем 5 (т.е. напряжение поступающее от потенциометра близко к нулю) читаем фоторезистор, если на потенциометре от 5 до 1023 на АЦП приходит, то преобразуем данное значение в угол angle = map(potPin, 5, 1023, 0, 180)
Ответ написан
Комментировать
@Emil2014
А как узнать когда Вы хотите перейти на управление от потенциометра и наоборот?
Сейчас у Вас: у кого абс. значение больше - тот и победил.
Возможно, если нужно немного и ненадолго "поправлять" мозги автомату, то можно запоминать значение потенциометра и каждый опрос сравнивать с текущим. Если изменилось - то перешли на ручное управление. Через Н сек бездействия вернуть управление фоторезистору, а плавность перехода управления придумается.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы