Как сделать считывание перемещение потенциометра, если это вообще возможно

Mixail654
Offline
Зарегистрирован: 16.07.2016

         Здравствуйте. Подскажите если это вообще возможно, как сделать считывание перемещение потенциометра. Нужно что бы при повороте потенциометра в сторону увеличения значения, переменная назовем ее X была равна например 1. А при повороте потенциометра в сторону уменьшения значения переменная назовем ее Y была равна например 2. 

          Как я понимаю нужно создать условие, но какое и как не знаю. Задаю вопрос потому что все варианты какие были у меня в голове перепробыл решение не нашел. Если есть у кого какие варианты подскажите хотя бы направление поиска решения данной задачи.  

Клапауций 232
Offline
Зарегистрирован: 05.04.2016
James
Offline
Зарегистрирован: 26.02.2016

создаешь переменную х записываешь туда и когда появляется новое значение сравниваешь со старым, если < то в одну сторону крутим, если > в другую.

Mixail654
Offline
Зарегистрирован: 16.07.2016

Наверное выразил мысль не правильно либо не точно. Попробую объяснить задачу подробней.

Как значение считать с потенциометра и преобразовать в нужный диапазон мне известно

int inVoltage = map(analogRead(AIN_PIN), 0, 1023, 0, 180); 

Задача: при повороте потенциометра в сторону увеличения значение переменной X должно быть равно 1, но в любой момент при повороте назад Y должен быть равен 2. Если опять начинаем поворачивать в сторону увеличения то X опять будет равен 1 и так постоянно. Не обязательно чтобы там было две переменных X Y можно и одну например X. Тоесть при повороте по часовой X равен 1, а против часовой X равен 0.

Тоесть нужно что бы программа отслеживала в какую сторону на данный момент происходит движение потенциометра (по часовой стрелки или против). 

Araris
Offline
Зарегистрирован: 09.11.2012

Если я правильно понял постановку задачи, то решение уже описал уважаемый James, я лишь разовью его мысль:

1. создаём две переменные для предыдущего и текущего значений analogRead, ну и переменную Х конечно же..

2. читаем текущее значение = analogRead()

3. проверяем, если текущее больше предыдущего, то Х = ... , если текущее меньше предыдущего, то Х = ... ,  если текущее равно предыдущему, то Х = ... .

4. сохраняемся,  предыдущее = текущее

 
 

 

 
qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016
int sensorPin = A0; 
int x,sensorValue,sensorValue_old;
void setup() {
sensorValue = analogRead(sensorPin);
}

void loop() {
delay(100);
sensorValue_old = sensorValue;
sensorValue = analogRead(sensorPin);
x = 0;
if (sensorValue > sensorValue_old) x = 1;
}
Mixail654
Offline
Зарегистрирован: 16.07.2016

Всем большое спасибо. Отдельная благодарность за готовый код уважаемого qwone. 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Ну как всегда - самая большая благодарность не автору, а переводчику.

James
Offline
Зарегистрирован: 26.02.2016

Мне не жалко:)