Die delay(500) kan ook de schuldige zijn. Delay stop tijdelijk program executie en legt veel plat. Interrupts lopen wel door, maar ik denk dat het rekenwerk stopt.
Je kan beter milis() voor de timing gebruiken, net zoals je dat voor de meting doet.
En alles behalve de essentie uit de interrupt routines halen is ook belangrijk (maar dat heb je al gedaan toen ik dit schreef), want zolang je in een interrupt routine bezig bent komen er geen andere interrupts binnen. Ook serial is volgens mij op interrupt basis, bij Arduino gebeurt er vaak meer dan je denkt. Daarom programmeer ik vaak liever dichter op de hardware.
Ik ben zelf geen voorstander van het gebruik van floats, het kost veel rekentijd en de precisie is beperkt. Rekenen kan ook prima met integers of longs als je ze als fixed point representatie gebruikt, bijvoorbeeld 1000=1. Dat scheelt heel veel tijd.
Je kan beter milis() voor de timing gebruiken, net zoals je dat voor de meting doet.
En alles behalve de essentie uit de interrupt routines halen is ook belangrijk (maar dat heb je al gedaan toen ik dit schreef), want zolang je in een interrupt routine bezig bent komen er geen andere interrupts binnen. Ook serial is volgens mij op interrupt basis, bij Arduino gebeurt er vaak meer dan je denkt. Daarom programmeer ik vaak liever dichter op de hardware.
Ik ben zelf geen voorstander van het gebruik van floats, het kost veel rekentijd en de precisie is beperkt. Rekenen kan ook prima met integers of longs als je ze als fixed point representatie gebruikt, bijvoorbeeld 1000=1. Dat scheelt heel veel tijd.
Fietser en knutselaar en eventjes niet in vorm. Roets, FlevoRacer en diverse (carbon) zelfbouwers voor 1 of 2 personen