PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro soll die Helligkeitswerte über Hyper terminal ausgeben



Problem
21.11.2010, 10:59
Weis jemand was ich in den roten bereich rein schreiben soll damit Asuro die aktuelle Helligkeit von data[0] ausgibt


SerWrite("---------------",15);

Es wäre sehr hilfreich zu wissen wie groß der Wert auf holzboden ...... ist


Ich habe es jetzt so gemacht aber es ist so umständlich


#include "asuro.h"

int main(void)
{

int x=0,LANG=0,z=0;

unsigned int data[2];
Init();

FrontLED(ON);




while( 1 )
{

LineData(data);
if ( data[0] > 10 )
BackLED(ON,OFF); //BackLED > 10
else
BackLED(OFF,OFF);



if ( data[0] > 30 )
BackLED(OFF,ON); //BackLED > 30
else
BackLED(OFF,OFF);


if ( data[0] > 50 )
StatusLED(RED); //RED > 50
else
StatusLED(OFF);


if ( data[0] > 100 )
StatusLED(YELLOW); //GELB > 100
else
StatusLED(OFF);


if ( data[0] > 150)
StatusLED(GREEN); //GRÜN > 150
else
StatusLED(OFF);

if ( data[0] > 150)
StatusLED(GREEN); //GRÜN > 150
else
StatusLED(OFF);



}
return 0;
}

the.speciali
21.11.2010, 12:07
Hi,

Das Problem dabei ist, das data[0] einen int-Wert zurück liefert, aber SerWrite zum Übertragen einen char-Wert benötigt.

Ich hab das damals mit der C-Funktion "itoa" gelöst, die den int-Wert in ein char-Wert umwandelt.
Meine Funktion sah dann ungefähr so aus:

int LiniensensorDiagnose (void)
{
unsigned int data[2];
char data0[5], data1[5];
int t;

StatusLED (GREEN);
FrontLED (ON);


while (1)
{
LineData (data);

itoa (data[0], data0, 5);
itoa (data[1], data1, 5);

SerWrite (data0, 4);
SerWrite (" links\n\r", 8);

SerWrite (data1, 4);
SerWrite (" rechts\n\r", 9);

for (t=0; t<100; t++)
{
Sleep (72);
}
}
}

Bei irgendwelchen Fehlern wäre ich sehr dankbar mich drauf hinzuweisen :mrgreen:

beste Grüße
the.speciali

Problem
21.11.2010, 13:01
Danke

da kommen sehr viele Fehler meldungen und Warnungen

Problem
21.11.2010, 13:08
#include "asuro.h"

hasst du am anfang vergessen

und itoa kennt er nicht als variabelname

aber wieso?

lg

the.speciali
21.11.2010, 13:10
Hmm du hast es nur rüber kopiert? Und ein Fehler hab ich noch gemacht. Der itoa Befehl steckt in der stdlib die muss man natürlich mit einbinden.

Jetzt sollte das rüber kopieren auch funktionieren ;)

#include "asuro.h"
#include "stdlib.h"

int main(void)
{
unsigned int data[2];
char data0[5], data1[5];
int t;

StatusLED (GREEN);
FrontLED (ON);


while (1)
{
LineData (data);

itoa (data[0], data0, 5);
itoa (data[1], data1, 5);

SerWrite (data0, 4);
SerWrite (" links\n\r", 8);

SerWrite (data1, 4);
SerWrite (" rechts\n\r", 9);

for (t=0; t<100; t++)
{
Sleep (72);
}
}
}

ASUR0
21.11.2010, 13:11
Forensuche!

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=54294

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=36436

Gruß

DL

Problem
21.11.2010, 13:20
Ja stimmt aber ich habe auch geschaut wo der Fehler sein könnte

Problem
21.11.2010, 13:26
eine Frage noch wieso leuchtet das FrontLED nicht

lg

radbruch
21.11.2010, 13:41
Init(); vergessen...

Problem
21.11.2010, 13:49
ja genau danke

was ich auch nicht verstehe ist auf der Anleitung seteht dass der WERT 0 hell ist und 1023 ganz dunkel beide werte können nicht erreicht werden

aber

wenn ich sie sensoren zum fenster halte habe ich den wert von ca. 1000
soll aber eher 0 sein weil es hell ist oder

Täsche ich mich ?

ASUR0
21.11.2010, 13:57
Das ist bei der Odometrie so.

Die Liniensensoren sind genau andersherum, 0 dunkel, 1023 hell

Problem
21.11.2010, 14:20
ok weil in der ANleitung steht es anders

aber egal für mich zählt die realität

mfg

the.speciali
21.11.2010, 18:46
Init(); vergessen...

Ohh entschuldigung, mein fehler :)
Ich hoffe aber das es jetzt mal funktioniert :)

beste Grüße
the.speciali

Problem
21.11.2010, 19:41
ja danke ist voll super zu wissen wo welcher wert ist

mfg