mám zařízení viz foto:
Jedná se o laserový efekt stavěný z toho, co bylo doma.
Pomocí encoderu chci sledovat polohu paprsku.
Zatím chci pouze čítat pulzy a po každém otočení - to jest 16 náběžných hran, je chci vynulovat.
Bohužel program nefunguje. i pokud je proměnná tik > 16 tak stále jede dále.
Představa je cca 2000 RPM - aby byl paprsek stabilní a neblikal. To je cca 530 impulzů za sekundu.
mezní frekvence je cca 10 kHz, takže tady by problém být neměl.
Nejsem si jistý kvalitou vstupního signálu, ale i kdyby to byly zákmity, tak by je to mělu nulovat správně.
Zde je blok kódu, který nefunguje.
Kód: Vybrat vše
int interruptPin = 2;
int tik = 0;
void setup()
{
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), blik, FALLING);
Serial.begin(9600);
}
void blik()
{
tik ++;
Serial.println(tik);
return tik;
}
void loop()
{
if (tik > 16) {
tik = 0;
Serial.println(tik);}
}