Датчик препятствия. как реализовать.
- Войдите на сайт для отправки комментариев
Ср, 14/10/2020 - 11:18
Подскажите пожалуйста, кто на опыте. как более верно реализовать.
имеется датчик препятствия.
нужно что бы он мог различать начало предмета и конец. то есть.
сначала датчик не чего не видит, потом видит ставит переменную и как только снова не видит => предмет закончился.
в моем коде что то не так,
так как когда он только заметил предмет, он через несколько ходов перестает его видеть хотя предмет еще стоит.
мой код:
const int datchik_pin = 9; byte v; byte x,y,k,L1,z; void setup() { pinMode(datchik_pin, INPUT); Serial.begin(9600); } void loop() { v = digitalRead( datchik_pin); if (v==0) { Serial.println("ДАТЧИК ВИДИТ ПРИПЯТСВИЕ"); x=1; k=1; Serial.println("X="); Serial.println(x); Serial.println("k="); Serial.println(k); } if (v==1&&k==1) { Serial.println("ДАТЧИК ПОТЕРЯЛ ПРИПЯТСВИЕ"); y=1; k=0; Serial.println("Y="); Serial.println(y); Serial.println("k="); Serial.println(k); } if (x==1&&y==1) { Serial.println("выполнено условие x=1 and y=1"); x=0; y=0; L1=++L1; z=1; Serial.println("L="); Serial.println(L1); } }
Интересная конструкция в 43 строке ))
Попробуйте перестроить логику в таком ключе:
т.е. примерно так
Глюк-трюк - поясните, в какой ситуации, по задумке, должно выводится: "выполнено условие x=1 and y=1
"
v258 - ну раз уж сами про L1 = ++L1; сделали замечание - зачем сами оставили это в коде?
v258 - ну раз уж сами про L1 = ++L1; сделали замечание - зачем сами оставили это в коде?
Исправил. Хотя эта строка к его проблемам отношения все равно не имеет ))
Хотя эта строка к его проблемам отношения все равно не имеет ))
ее :) Это девушка, давно известная на форуме :)))
ее :) Это девушка, давно известная на форуме :)))
Упс.... Не знал, извиняюсь )))
Хотя эта строка к его проблемам отношения все равно не имеет ))
ее :) Это девушка, давно известная на форуме :)))
"ты проверяй какого пола твой сосед...как проверить? лезть под платье, так схлопочешь по мозгам..." В.Высоцкий )))
спасибо большое, сейчас я пришла к выводу что хоть что делай но все равно появится 1 на доли секунды, думаю подтянуть пин 9, с датчика на землю, вроде проблема решилась. мнимый плюс пропал.
код такой получился
условие такое если предмет закончился значит и нужно повернуть сервопривод на угол(1-3)=) выше описала и код , а по сути этот не нужно. такак проблема была в мнимом плюсе появляющемся неоткуда, хотела решить этим проблему в итоге только код усложнила
Писать надо правильно: "Припяцтвие"
Извиняюсь за грамматику, прошу не вызывать грамматическую полицию
задонная частота , дон река
Докладываю, резистор не помог, мнимая единица все равно выскакивает в программе. раз в 10-20 шагов. применила Медианный фильтр , держу руку на пульсе.
А вы уверены, что там проскакивает какая-то единица? При исправном датчике это невозможно. Я же вам предлагал переделать логику работы
В этом случае обработка потери препятствия будет проводиться только при условии, что с датчика действительно пришла единица. А вы валите все проверки в одну кучу, а потом жалуетесь на какие-то паразитные сигналы ))
а что мне говорить в иначе? вот что то не соображу. у меня если коробочка, что бы не задавать время за сколько она пройдет, оно может быть разное. я отслеживаю его начало и конец. тем самым начинаю прибавлять переменную L1. для углов сервопривода. в иначе у меня всегда будет считывай значение с датчика, то есть вернуться к началу луп.
Еще сервоприод дергается как ненормальный трясется. приходится отключать его порт.
не знаю, что там за датчик, но если на просвет, то зацепить его за прерывание по фронтам и всех делов
а что мне говорить в иначе?
Все, что должно происходить в случае отсутствия препятствия перед датчиком. Что конкретно - вам виднее, это ваша программа. В посте #2 я привел пример в ответ на ваш код