Как посчитать прерывания на энкодере из мышки?

Евгений 79
Евгений 79 аватар
Offline
Зарегистрирован: 15.06.2014

Всем доброго времени суток!

Хочу посчитать колличество оборотов колеса велосипеда (пробег).

На тормозном диске колеса по обе стороны излучатель и приемник из старой компьютерной мыши.

Тормозной диск не полнотелый, а разделен на 4 одинаковых сегмента перегородками 1см шириной.

Как посчитать количество внешних прерывания на энкодере?

Вот первоначальный скетч:

#include <SoftwareSerial.h>

int pin = 3;                                                
int encoder = 0; //начальное значение шагов энкодера
 
void setup()
{
  pinMode(pin, INPUT);
  attachInterrupt(1, Probeg, CHANGE);
  Serial.begin(9600);
}
 
void loop()
{
  Serial.println(encoder);
}
 
void Probeg() //пробег
{
  encoder = encoder+1;
}
Jatixo
Offline
Зарегистрирован: 13.01.2016

Это же все будет в пыли, грязи, возможно, через время перестанет работать, надо будет протирать, если еще заметите, что перестало считать. В "магазинных" велокомпьютерах используется магнит на спицу и геркон, грязи можно сказать не бояться, главное заизолировать, чтобы вода и т.п. не попадало на контакты геркона и зачищенной проводки к нему, а то окислится и может пропасть контакт.