Энкодер из мышки.
- Войдите на сайт для отправки комментариев
Чт, 23/06/2016 - 22:07
Пытаюсь считать кол-во прерываний. Вот время одного препятствия происходит множество ложных срабатываний.
А как заставить программу увеличить переменную на 1 и ОЖИДАТЬ,пока не уберу препятствие?
Код:
#include <SoftwareSerial.h> int pin = 3; unsigned int encoder = 0;//начальное значение шагов энкодера int X; void setup() { pinMode(pin, INPUT); attachInterrupt(1,Probeg,CHANGE); Serial.begin(9600); } void loop() { } void Probeg() //пробег { X=digitalRead(pin); if (X == LOW){ encoder = encoder+1; Serial.println(encoder); Serial.println("LOW"); } else if (X == HIGH) { encoder = encoder+1; Serial.println(encoder); Serial.println("HIGH"); } else { Serial.println("ERROR"); } }
Куча значений вывелось во время одного и того же препятствия. Может это аппаратный вопрос?
Приведённый код можно сократить, убрав ненужные условия:
Теперь, если с этим разобрались - какие именно проблемы? Вам надо, чтобы прерывание срабатывало по изменению фронта? Чтобы срабатывало однократно? Чтобы вообще не срабатывало? Что значит "пока не уберу препятствие"? Постарайтесь донести свою мысль в более понятной форме, пожалуйста.
Куча значений вывелось во время одного и того же препятствия. Может это аппаратный вопрос?
Нет, куча значений вывелось во время многократного срабатывания прерывания по изменению фронта. Почему фронт менялся так часто? Так это уже аппаратный вопрос ;)
Спасибо! Изменения с High на Low происходили многократно только во время препятствия. Потом отключил пин от Ардуинки,и COM порт стал выдавать значения постоянно,без остановки. Я думаю,что фототранзистор от комп. мышки слишком чувствительный и стоит поискать ему замену.
+ иногда выводятся 2 раза подряд Low или High(а бывает,что и по 10 раз подряд!)
Если есть варианты,посоветуйте пожалуйста,какой приемник подходит для этой задачи.
слишком чувствительный и стоит поискать ему замену.
зачем же сразу к хирургу, сначала к терапевту сходите. подтяжку резистора к ноге пин включите записав туда 1 между 10 и 11 строками. или внешнее подтягивающее можно 4,7K куды хотите +- но правьте тогда прерывания по спаду или возрастанию.