hmm habe das erste mal mit arduino zu tun und blicke da nicht durch.
das ist mein sketch:
// (c) 2009 Thomas Pintaric (thomas@pintaric.org)
template
class double_exponential_filter
{
public:
double_exponential_filter(const T _alpha = 1.0) :
alpha(_alpha),
has_observations(false)
{}
void reset() { has_observations = false; }
void observe(const T &x)
{
if(!has_observations)
{
S = x;
S_prime = x;
has_observations = true;
}
else
{
S = (x * alpha) + (S * (1.0-alpha));
S_prime = (S * alpha) + (S_prime * (1.0-alpha));
}
}
bool can_predict() const
{
return(has_observations);
}
T predict_t0(const T _min = 0, const T _max = 1023) const
{
if(!has_observations) return(0);
T x0 = (2.0/(1.0-alpha)) * S - (1.0/(1.0-alpha)) * S_prime;
if(x0 < _min) x0 = _min;
if(x0 > _max) x0 = _max;
return(x0);
}
protected:
T S, S_prime, alpha;
bool has_observations;
};
#define DES_ALPHA 0.05f
double_exponential_filter des_slider1(DES_ALPHA);
double_exponential_filter des_slider2(DES_ALPHA);
double_exponential_filter des_slider3(DES_ALPHA);
double_exponential_filter des_slider4(DES_ALPHA);
double_exponential_filter des_slider5(DES_ALPHA);
double_exponential_filter des_slider6(DES_ALPHA);
bool button_pressed = false;
#define SLIDER1 0
#define SLIDER2 1
#define SLIDER3 2
#define SLIDER4 3
#define SLIDER5 4
#define SLIDER6 5
#define BUTTON 7
void sample_inputs()
{
des_slider1.observe((float) analogRead(SLIDER1));
des_slider2.observe((float) analogRead(SLIDER2));
des_slider3.observe((float) analogRead(SLIDER3));
des_slider4.observe((float) analogRead(SLIDER4));
des_slider5.observe((float) analogRead(SLIDER5));
des_slider6.observe((float) analogRead(SLIDER6));
button_pressed |= (digitalRead(BUTTON) == HIGH);
}
void setup()
{
Serial.begin(9600);
sample_inputs();
}
void loop()
{
if(Serial.available() > 0)
{
byte request = Serial.read();
if(request == ‘A’)
{
//delay(10);
// Slider 1…6
Serial.print(((int)des_slider1.predict_t0())/4, BYTE);
Serial.print(((int)des_slider2.predict_t0())/4, BYTE);
Serial.print(((int)des_slider3.predict_t0())/4, BYTE);
Serial.print(((int)des_slider4.predict_t0())/4, BYTE);
Serial.print(((int)des_slider5.predict_t0())/4, BYTE);
Serial.print(((int)des_slider6.predict_t0())/4, BYTE);
// Button
Serial.print((button_pressed ? 255:0), BYTE);
button_pressed = false;
}
else if(request == ‘N’)
{
Serial.print(“Tagtool.Controller”);
}
}
else
{
sample_inputs();
}
}
wo soll ich das " #define BYTE 0 " genau einfügen?
edit// habe es jetzt mal mit einer älteren arduino software hochgeladen und da ging es. werd mal testen