tagtool mit arduino uno

hallo,

ich baue mir zur zeit ein tagtool und habe mir als grundlage das arduino uno bestellt.

nun gibt es eine vorgefertigte “Tagtool Arduino Sketch” die ich auf das uno hochladen müsste.

doch leider funktioniert das jetzt nicht mehr, da das das wort “BYTE” in der neuen firmware nicht mehr unterstützt wird.

ich habe die alte “Tagtool Arduino Sketch” mal als anhang beigefügt.

hat sich vielleicht von euch schonmal jemand ein tagtool mit dem uno gebaut und hat vielleicht die richtige sketch datei rumfliegen. oder mag sich vielleicht jemand die angehängte mal anschauen und mir einen tip geben, was ich wie ändern könnte?

ich danke schonmal im vorraus.

lg kay

Tagtool Arduino Sketch (2.75 KB)

BYTE ist in den älteren Arduino IDEs in der Datei print.h definiert, in der 1.0 fehlt diese Definition.

Wenn es nur daran liegen sollte, füge einfach folgende Zeile an den Anfang Deines Sketch (nach den Includes) ein:

define BYTE 0

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

Da:

// (c) 2009 Thomas Pintaric (thomas@pintaric.org)

#define BYTE 0

template <typename T>

Und zum Anzeigen von Sorcecode solltest Du das Code-Tag und nicht das Quote-Tag verwenden.

okay merke es mir für die zukunft. danke dir auf jeden fall und werde es mal ausprobieren ^^

Du kannst auch Serial.print(((int)des_slider1.predict_t0())/4, BYTE); in Serial.write(((int)des_slider1.predict_t0())/4); umändern, sollte auch gehn soweit ich mit meinen 2 wochen arduino Kenntnissen weiß.

cu