Нужна совместить работу фоторезистора и потенциометра. Кто поможет?
Нужна сделать так, чтобы сервоприводом можно было управлять фоторезистором или потенциометром, например, хочу чтобы он поворачивался от света, а не хочу, то от потенциометра.
написал такой код, но движение получается дерганным
# include
Servo nikiServo;
int servoPin=9;
int photoPin = 0; // первый фоторезистор подключен 0-му аналоговому входу
int potPin = 2; // второй фоторезистор
int val1 = 1; // переменные для хранения значения входного напряжения
int val2 = 1; //
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);
}
}
int potPin = 2; - это потенциометр. От фоторезистора поворачивается боле менее нормально, а вот от потенциометра совсем как-то не понятно: с большими задержками и не в том диапазоне значений, которые я указал. Вообще, может быть у Вас есть похожий код? Я совсем не представляю как можно совместить управление и тем и тем, занимаю ардуино около 2 недель, а программа очень нужна для проекта
Nikitor: к сожалению у меня кода нет. с ардуино побаловался с неделю, но сам больше занимаюсь fpga. Как я понимаю, программа работает следующим образом: есть фоторезистор и потенциометр(переменный резистор - правильно понимаю?). Если значение, приходящее с фоторезистора больше, чем значение с потенциометра - то на серво передавать значение фоторезистора, в противном случае - с потенциометра.
Совместить лучше всего каким нибудь переключателем, который подключен к какой-нибудь ножке:
Nikitor: что касается задержек - попробуйте сначала без фоторезистора отдебажить программу. Возможно библиотеки для серво не такие уж и классные) многие переписывают их под себя как им удобно. А диапазон значений можно смасштабировать и откалибровать
Nikitor: любой тумблер или кнопку) www.beechip.ru/images/1011/pt26.jpg
один контакт подключите к питанию, вторую к цифровой ножке, тумблером будет либо замыкаться либо размыкаться цепь, чем получится либо 0 либо 1 на выбранной цифровой ножке
Как насчет варианта, когда значение потенциометра меньше, скажем 5 (т.е. напряжение поступающее от потенциометра близко к нулю) читаем фоторезистор, если на потенциометре от 5 до 1023 на АЦП приходит, то преобразуем данное значение в угол angle = map(potPin, 5, 1023, 0, 180)
А как узнать когда Вы хотите перейти на управление от потенциометра и наоборот?
Сейчас у Вас: у кого абс. значение больше - тот и победил.
Возможно, если нужно немного и ненадолго "поправлять" мозги автомату, то можно запоминать значение потенциометра и каждый опрос сравнивать с текущим. Если изменилось - то перешли на ручное управление. Через Н сек бездействия вернуть управление фоторезистору, а плавность перехода управления придумается.