переменный резистор и сама переменная

ferot7a37
Offline
Зарегистрирован: 25.03.2018

проблема с переменной

всем привет, столкнулся с такой проблемой, вот у меня есть потенциометр (переменный резистор),
и ардуинка или возможно будет ATtiny13 , задача в том что если ардуино замечает что я начал крутить резистор, не важно в какую сторону то например включалась лампочка или какой-то другой цыкл , например от 0 до 1024 (int) , резистор стоит на 564 и когда if(???) замечает что резистор сменился на 567 или наоборот меньше , на 563 то что-то уже там.
мне не подходит это:
int res = 0 // данные с резистора
if(res > 564 ll res < 564)
так как например, я покрутил резистор и только в то время как я кручу этот резистор должна светиться лампочка.
код
int SENSER = 0;
int s = 0;
void setup{pinMode(2,OUTPUT);}
void loop{
s=analogRead(SENSER);
if( как не знаю? ){ то что-то там }
}

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Так, давайте как-то более внятно изложим вашу задачу без отсылки "цыклам" и if-aм

Насколько я понял

- Есть переменный резистор подключенный к ардуино

- Есть выход с ардуино подключенный к светодиоду или чему-то еще.

- Когда резистор вращают - на выходи должен быть высокий уровень (+5V, "лампочка" горит)

- Когда перестают вращать - на выходе должен быть низкий уровень (0V, "лампочка" не горит)

Так?

Когда вставляете свой код, то по правилам форума, надо пользоваться кнопочкой "code" в верхней части окошка воода текста

ferot7a37
Offline
Зарегистрирован: 25.03.2018

да , все верно, только я понятия не имею как это сделать, помогите пожалуйста.

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

А мы понятия не имеем, чего Вы хотите.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

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

#define PotPin  A0    //заменить на то куда на самом деле резистор подключен
#define ledPin  LED_BUILTIN    //Выходной пин где встроенный светодио. Заменить на другой если надо
#define Delta   50   //Если значение считываемо с резистора поменялось меньше чем на это значение, то не реагировать        

 

int PrevPotValue;  

void setup() {
  pinMode(ledPin, OUTPUT);
  PrevPotValue = analogRead(PotPin);
}

void loop() {
  
  int CurrPotVal = analogRead(PotPin); 

  if (abs(CurrPotVal-PrevPotValue)>Delta)
  {
    digitalWrite(ledPin, HIGH);
    PrevPotValue = CurrPotVal;
  }
  else
  {
    digitalWrite(ledPin, LOW);
  }  
  delay(20);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

andriano пишет:

А мы понятия не имеем, чего Вы хотите.

Странный Вы какой-то. Человек же ясно написал

ferot7a37 пишет:
например включалась лампочка или какой-то другой цыкл

А Вы всё понятия не имеете! Может такие вещи, как лампочка и цыкл просто "не входят в круг Ваших понятий"? :)

sadman41
Offline
Зарегистрирован: 19.10.2016

А ежели пот крутить со скоростью 1 оборот в сутки - тоже все должно светится?

nik182
Offline
Зарегистрирован: 04.05.2015

Ну вы тупые! Человек же подробно объяснил что хочет видеть горящую лампочку когда производная значения сопротивления переменного резистора будет отлична от нуля. Значит берём блиньк без делея, с его помощью считываем в цикле значение сопротивления через равные промежутки времени, получаем производную путём вычитания из предыдущего запомненного значения. Если производная больше заданного значения включаем лампочку. Иначе выключаем. 5 строчек кода. Тогда всёравно быстро крутишь, медленно, есть пороговое значение производной, при котором изменение сопротивления будет засчитываться за поворот ручки.

sadman41
Offline
Зарегистрирован: 19.10.2016

Я протестую! Производной в условии не было, нужно применять цыкл!

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

nik182 пишет:
Ну вы тупые! Человек же подробно объяснил что хочет видеть горящую лампочку когда производная значения сопротивления переменного резистора будет отлична от нуля. Значит берём блиньк без делея, с его помощью считываем в цикле значение сопротивления через равные промежутки времени, получаем производную путём вычитания из предыдущего запомненного значения. Если производная больше заданного значения включаем лампочку. Иначе выключаем. 5 строчек кода. Тогда всёравно быстро крутишь, медленно, есть пороговое значение производной, при котором изменение сопротивления будет засчитываться за поворот ручки.

То есть если крутить медленно лампочка не загорится.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

nik182 пишет:
Ну вы тупые! Человек же подробно объяснил что хочет видеть горящую лампочку когда производная значения сопротивления переменного резистора будет отлична от нуля. Значит берём блиньк без делея, с его помощью считываем в цикле значение сопротивления через равные промежутки времени, получаем производную путём вычитания из предыдущего запомненного значения. Если производная больше заданного значения включаем лампочку. Иначе выключаем. 5 строчек кода. Тогда всёравно быстро крутишь, медленно, есть пороговое значение производной, при котором изменение сопротивления будет засчитываться за поворот ручки.

А это разве не производная?
 

 if (abs(CurrPotVal-PrevPotValue)>Delta)
  ...
  delay(20);

 

AlexanderNO
Offline
Зарегистрирован: 08.11.2018

Нет. Это разность. Производная  - это скорость изменения, а здесь просто изменение значения. И размерности будут разные. Но производная здесь и не нужна. Если значение АЦП меняется, значит есть вращение, если нет, то нет. А какой ТС поставит потенциометр и какое у него будет изменение напряжения и сл-но АЦП - это его дело. И пусть ТС сам подумает какой критерий ему установить по времени изменения (т.е. какое время после последнего изменения считать окончанием изменения) - час, минуту, секунду миллисекунду...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

asam пишет:

То есть если крутить медленно лампочка не загорится.

А если шибко быстро, то тоже не загорится. 

Не, тут явно цыкл надо!

AlexanderNO
Offline
Зарегистрирован: 08.11.2018

Тогда в инструкции надо написать:<шибко медленно и шибко быстро не крутить>.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

asam пишет:

То есть если крутить медленно лампочка не загорится.

А если шибко быстро, то тоже не загорится. 

Не, тут явно цыкл надо!


 

А вообще, если без троллинга, нормальная таки задача, которую б выделить в функцию и, даже знаю где применить )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

А вообще, если без троллинга, 

то ТС для начала неплохо бы почитать первую тему в песочнице.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

ua6em пишет:

А вообще, если без троллинга, нормальная таки задача, которую б выделить в функцию и, даже знаю где применить )))

А зачем "без троллинга"? Ты не знаешь, как такое написать в три строчки? Верю, что знаешь. Нужно ли помогать тому, кто не знает? Для меня однозначный ответ - НЕТ. Потому, что человек должен показать намерения, чтобы быть достойным помощи. Если человек просит научить его, напрмер, водить машину, то знать, для чего руль - нужно заранее.

А косноязычие стартового сообщения - это самый, что ни на есть замечательный повод поглумиться. Никогда не следует отвечать на такие вопросы по существу. Человек показал, что НЕ В СОСТОЯНИИ даже спросить, так зачем он нужен? По большому счету.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

в принципе знаю ))) но будет ли этот код оптимальным...
для меня выделение в функцию видится как вариант перехода от автоматического управления к ручному и, крутёлок там не одна а поболее...
А пока пытаюсь реализовать три проекта, всё в стадии перевода к законченным конструкциям, еще три зависли...времени не хватает...
тут еще и стенку оштукатурить к НГ надо )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

тут еще и стенку оштукатурить к НГ надо )))

Вот честно, я бы лучше пошёл в раздел "ищу исполнителя" форума штукатуров :)

А по поводу Ваших идей про функцию, замечу, что тема цыкла не раскрыта ни разу!

sadman41
Offline
Зарегистрирован: 19.10.2016

ЕвгенийП пишет:

Вот честно, я бы лучше пошёл в раздел "ищу исполнителя" форума штукатуров :)

Представляю себе тамошний срач за голдбанд с фюгенфюллером.

ferot7a37
Offline
Зарегистрирован: 25.03.2018

все!!! Получилось! код в полное отлично мне подходит
СПАСИБО БОЛЬШОЕ

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

С Победой!

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

тут еще и стенку оштукатурить к НГ надо )))

Вот честно, я бы лучше пошёл в раздел "ищу исполнителя" форума штукатуров :)

А по поводу Ваших идей про функцию, замечу, что тема цыкла не раскрыта ни разу!

там объёмы нужны, а мне 10-ток метров квадратных...
 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

С Победой!

Ну Евгений Петрович, а с сообществом поделиться, что именно ТС сказал???

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

ЕвгенийП пишет:
А по поводу Ваших идей про функцию, замечу, что тема цыкла не раскрыта ни разу!

Та нормально. ВКЛ, ВЫКЛ,ЦЫКЛ . и чего тут не понятно. И да не путать с цикл.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ua6em пишет:

что именно ТС сказал???

дык

ferot7a37 пишет:
все!!! Получилось! код в полное отлично мне подходит СПАСИБО БОЛЬШОЕ

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

ЕвгенийП пишет:

ua6em пишет:

что именно ТС сказал???

дык

ferot7a37 пишет:
все!!! Получилось! код в полное отлично мне подходит СПАСИБО БОЛЬШОЕ

 и так кручу и так - моя твоя нипонимайт )))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Чего сразу злые? Человек написал, что у него получмлось, я его с победойпоздравил. Где злость-то? Чужое дело шьёшь, начальник :)))