PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler im Programm, einfache "if" bedingung( Motor



InRoDeMS
10.03.2007, 15:03
Hallo,
kannmir jemand sagen, wo hier der Fehler liegt.
möchte, daß das Display den Abstand vom Infrarotsensor anzeigt und bei einem bestimmten Wert (hier 70) den Motor startet bzw anhält.
Ich benutze ein Handyboard und einen Motortreiber über i2c schnittstelle.
Infrarotsensor ist am Eingang 16 angeschlossen.
Hier das Programm.

Ps: sind meine ersten Programmierversuche,also net lache ](*,)



// Motortest
#use "i2c-treiber.ic"
void main()
{
i2c_init();

while(1)
{
int spannung;
spannung = analog(16);
spannung = spannung -135/1,5;
spannung = spannung *(-1);
printf( "\n %s%d","spannung", spannung );

if (spannung <70);
{
i2c_init();

i2c_write_2byte(176,0,01);//Vorwaerts
i2c_write_2byte(176,2,150);//Beschleunigen
i2c_write_2byte(176,3,150);//Drehzahl
}

if (spannung >70);
i2c_write_2byte(176,0,00);//Stop

sleep (.1);
}
}

SprinterSB
10.03.2007, 15:36
Vielleicht erzählst du was über den Fehler, bevor wir hier die Kristallkugel auspacken... Meckert der Compiler, stürzt das Programm ab, ...?

Falsch ist auf jeden Fall das "1,5", es muss heissen "1.5".

Wenn printf puffert, ist es zweckmässig, den Zeilenumbrüch *nach* der AUsgabe zu machen. Sonst hängt das Zeug im Puffer rum bis das nächste '\n' kommt.

Aisserdem ist deine if-Anweisung leer, da meckert normalerweise ein Compiler. Das if enthält nur einen ;

bL1nK
10.03.2007, 18:57
du hast nach der if ein ; das macht keinen sinn nimm das semicolon mal weg, sonst hast du eine if bedingung aber keine anweisung.

InRoDeMS
14.03.2007, 19:08
super, eure hilfe hat mir voll geholfen. einfach das semikolon weg und schon tuts, wie einfach...muß man erst drauf kommen

danke euch, =D>