-
in der anleitung steht ja schon alles was man für den anfang mit c braucht drinn. des weiteren solltest du vieleicht mal ein gutes buch über c durchwälzen. ich empfehle C von A bis Z, das gibts sogar als openbook im internet
http://www.galileocomputing.de/openbook/c_von_a_bis_z/
mfg EDH
-
Wieso ist es nicht möglich && als Operater zu nehmen??
Code:
#include "asuro.h"
int main (void)
{
unsigned int data[2],mittelwert[5],mittelmittel;
unsigned char hell_links,dunkel_links,hell_rechts,dunkel_rechts,fahr_rechts,fahr_links,stop,los;
Init();
while(1)
{MotorDir (RWD,RWD);
fahr_rechts=0; fahr_links=0; los=0; stop=0;
LineData(data);
mittelwert[0]=(data[0]+data[1])/2;
LineData(data);
mittelwert[1]=(data[0]+data[1])/2;
LineData(data);
mittelwert[2]=(data[0]+data[1])/2;
LineData(data);
mittelwert[3]=(data[0]+data[1])/2;
LineData(data);
mittelwert[4]=(data[0]+data[1])/2;
mittelmittel=(mittelwert[0]+mittelwert[1]+mittelwert[2]+mittelwert[3]+mittelwert[4])/4;
if(data[0]>mittelmittel)
{hell_links=1;dunkel_links=0;}
if(data[0]<mittelmittel)
{hell_links=0;dunkel_links=1;}
if(data[1]>mittelmittel)
{hell_rechts=1;dunkel_rechts=0;}
if(data[1]<mittelmittel)
{hell_rechts=0;dunkel_rechts=1;}
if(hell_links=1 && dunkel_rechts=0)
{fahr_rechts=1;}
if(hell_rechts=1 && dunkel_links=0)
{fahr_links=1;}
if(hell_rechts=1 && hell_links=1)
{los=1;}
if(dunkel_rechts=0 && dunkel_links=0)
{stop=1;}
while(fahr_rechts==1)
{MotorSpeed(80,200);}
while(fahr_links==1)
{MotorSpeed(200,80);}
while(los==1)
{MotorSpeed(200,200);}
while(stop==1)
{MotorSpeed(0,0);}
}
}
Das is jetz das Scheu-vor-Licht Prog, ein bischen einfacher, aber er will && nicht als Operator.
Zuerst hatte ich es in der while schleife, da wollte er es nicht kompilieren und jetz so in der if, ich weiss nicht mehr weiter. -.-
edit:
gehört statt den && ein ,?
*mal probier*
edit2: so gehts :)
aber der asuro tut nicht das was ich wollte xD
-
Der &&-Operator ist schon richtig, Dein Fehler liegt beim =
Ein einfaches = ist eine Zuweisung.
Wenn Du in einer If-Abfrage vergleichen möchtest, musst Du == nehmen.
Also
Code:
if(dunkel_rechts==0 && dunkel_links==0)
{stop=1;}
askazo
-
Manchmal musst du beide bedingungen in "unter"klammern setzen:
Code:
if ((Bedingung1)&&(Bedingung2))
zum thema arrays: wenn du eine variable deklarierst, z.b. werte[2], dann gibt es das array "werte" mit 2 elementen. die elemente heissen werte[0] und werte[1] (NICHT werte[1] und werte[2]!!)
zwischen den eckicgen klammern steht ein ausdruck, der ausgerechnet die aktuelle stelle im array zeigt. beispiel:
Code:
werte[1] // Das zweite element
werte[0] // Das erste Element
werte[99-98] // Das (99-98 = 1), also zweite Element
i=12;
werte[i/2-6] // Das (12/2-6 = 0), also erste element
werte[i] // Das i-te Element (Produziert einen Fehler wenn das Array nicht lang genug ist)
du kannst also zwischen die eckigen klammern schreiben was du willst.
sowas z.b. geht:
Code:
int i[50];
//Hier werden irgendwelche Werte in die Variablen des arrays geschreiben...
for(i=0;i<50,i++)
{
PrintInt(werte[i]); // Funktion aus der neuen lib, um integerwerte auszugeben ohne sie vorher umwandel zu müssen)
SerWrite("\n\r",2);
}
Dieser code würde nacheinander Die Werte von 0 bis 49 (also alle 50 werte des arrays), gefolgt von jeweios einem zeilenumbruch ausgeben.
Anmerkung: \n sowie \r werden zwar mit je zwei zeichen getippt, zählen jedoch bei der Übertragung als 1 byte.