![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
mbed with Nintendo DS touchpad, accelerometer & touchpad.
Diff: filters.h
- Revision:
- 0:0a76ae27065b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filters.h Wed May 05 12:10:15 2010 +0000 @@ -0,0 +1,62 @@ +/* +mbed touchpad & accelerometer experiments. + +CPV, 14/09/2009 +*/ + + +#ifndef __FILTERS_H__ +#define __FILTERS_H__ + +#define FILTER_MAX_SIZE 16 + +class FilterBoxF +{ +public: + FilterBoxF(void) { initialise(FILTER_MAX_SIZE); } + void initialise(unsigned int size); + float tick(float in); + float get() { return m_out; } + float operator()(void) { return m_out; } + +protected: + float m_history[FILTER_MAX_SIZE]; + unsigned int m_size; + unsigned int m_index; + float m_out; +}; + + +class FilterBoxI +{ +public: + FilterBoxI(void) { initialise(FILTER_MAX_SIZE); } + void initialise(unsigned int size); + int tick(int in); + int operator()(void) { return m_out; } + +protected: + int m_history[FILTER_MAX_SIZE]; + unsigned int m_size; + unsigned int m_index; + int m_out; +}; + + +class FilterIirI +{ +public: + FilterIirI(void) { initialise(); } + void initialise(int tau=1, int limit=0xffff); + int tick(int in); + int operator()(void) { return m_out; } + +protected: + int m_out; + int m_remainder; + int m_limit; + int m_tau; +}; + + +#endif // __FILTERS_H__