PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmierfehler ode was?



kungfuman
22.06.2006, 10:13
hallo alle miteinander :)

Ich habe ein Programm geschrieben, welches auf einem weißen tisch fahren soll und wenn es an die kante kommt dann soll er drehen(auf ne bestimmte weiss, ist aber irrelevant für mein problem) und weiterfahren.

Mein quellcode ist folgender:


#include "asuro.h"
#include "Zusammenfassung.h"

int main()
{
Init();
int i;

BackLED(OFF,OFF);
StatusLED(RED);
for (i=288 ; i>0 ; i--) {Sleep(250);}
StatusLED(GREEN);
for (i=288 ; i>0 ; i--) {Sleep(250);}
StatusLED(OFF);


int tischprogramm();
return 0;
}







Die LEDs hab ich eingefüht um zu sehen ob er überhaupt anfaängt. er kommt bis zu dem befehl " StatusLED(OFF); und dann hört er auf (!!!), das ist mir ein rätsel !
ich geb noch die funtkion "tischprogramm()" an :


#include "asuro.h"
#include "Zusammenfassung.h"



int tischprogramm()
{
Init();


unsigned int data[2];


FrontLED(ON);
MotorDir(FWD,FWD);
MotorSpeed(150,150);


while(1)
{
LineData(data);

if (data[0] || data[1] < 600) {rand();}

MotorDir(FWD,FWD);
MotorSpeed(150,150);
}


return 0;
}

Ich hab es extra so gemacht dass er erst losfährt und dann in ne schleife kommt damit ich seh woran es hängt aber er fährt nicht einmal los :cry: :cry: :cry:
bitte, bitte, bitte helft mir !
ich weiss einfach nicht wo mein fehler liegt weil beim compilieren meldet er keine fehler mehr. wahrscheinlich mach ich ein dummen anfängerfehler aber bitte helft mir.
Es wäre echt nett wenn ich ne schnelle antwort kriegen würde weil ich morgen ein wettbewerb in der schule bestreite und es soll nicht an sowas scheitern bitte...

MfG kungfuman

Radian
22.06.2006, 10:42
Ich tippe mal auf folgendes in deiner main Methode :

int tischprogramm();

Das int muss weg, du willst doch hier die Methode selber aufrufen.

kungfuman
22.06.2006, 11:06
danke radian =D>

er fährt jetzt wenigstens ;)
kennst du dich auhc mit der LineData aus ? also ob ich es prinzipiell richtig geschrieben habe ? weil bei mir reagiert er nicht auf das dunkel werden.
und ich hab noch ne frage: um die LineData-werte zu bekommen, muss da die FrontLED an sein ?
bin noch ein anfänger deswegen sind die fragen auch so blöd :(
es kann aber auch sein dass der wert 600 zu niedrig ist.... wäre nett wenn ich ne antwort kriegen würde ,danke ;)

MfG kungfuman

Radian
22.06.2006, 12:08
Das Problem wird hier ran liegen :

if (data[0] || data[1] < 600) {rand();}

Ich schätze mal du willst hier testen ob data[o] ODER data[1] kleiner als 600 ist, right?

Dann musst du das aber so schreiben : if( data[0]< 600 || data[1] < 600)

Ansonsten hießt das soviel wie if( TRUE || data[1]<600) und er läuft sofort in rand().
Außer data[0] liefert direkt 0, dann wäre das ein false.

kungfuman
22.06.2006, 12:39
danke danke danke !!!! :)

ich werde es sofort verbessern ;) ich freu mich dass du mir geholfen hast :)

ist echt nett von dir !

danke nochmal

MfG kungfuman