Tobias Stosius
25.05.2011, 15:28
Schönen guten Nachmittag,
ich habe ein Programm geschrieben (Tischkante erkennen) und wollte nun eure Meinung dazu hören
- was haltet ihr allgemein von dem Code
- lässt sich daraus was machen
- was könnte besser sein
- was ist bereits in ordnung
-- Außerdem brauche ich eure Hilfe bei einer Fehlermeldung--:
test.c:4: error: expected identifier or '(' before '{' token
bestimmt kennen einige von euch die schon und wissen was zu tun ist.
Hier nun der Code(Ich hab sehr viele Kommentare verwendet nicht wundern):
#include "asuro.h"
#define STOP 80
int main(void);
{
unsigned int lineData[2];
int ergAL,ergBL,eL;
int ergAR,ergBR,eR
Init();
unsigned char running = TRUE;
//------------------------------------------------------------------------//
{StatusLED(GREEN);
FrontLED(ON); //LED wird eingeschaltet|ASURO steht auf dem Tisch
Msleep(10); //Pause bis LED an ist
lineData(lineData); //Speicher bereitstellen
Konf0L= (lineData[0]); //Ergebnis T9 (Links)
Konf0R= (lindData[1]); //Ergebnis T10 (Rechts)
//------------------------------------------------------------------------//
{StatusLED(RED); //Zur Prüfung ob ASURO auf hier misst
FrontLED(OFF); //LED ausschalten|ASURO steht auf dem Tisch
Msleep(10); //Wieder eine kurze Pause
lineData(lineData); //Bereitstellen des Speichers
Konf1L= (lineData[0]); //Ergebnis T9 (Links)
Konf1R= (lindData[1]); //Ergebnis T10 (Rechts)
}
//------------------------------------------------------------------------//
/*
Jetzt berechnen wir aus dem beiden eben ermittelten
Werten einen Zwischenwert. Dieser gibt an, wann der
ASURO auf dem Tisch ist.
*/
Konf01 = (Konf0-Konf1);
//------------------------------------------------------------------------//
/*
Im nächsten Schritt wird ein Wert ermittelt,
für den Fall, dass der ASURO sich über der
Tischkante befinden. Im Prinzip ist es
der gleiche Code wie eben.
*/
//------------------------------------------------------------------------//
{StatusLED(YELLOW); //Einfach zur Unterscheidung, dass der ASURO HINTER dem Tisch misst
FrontLED(ON); //LED wird eingeschaltet|ASURO steht über der Kante
Msleep(10); //Pause bis LED an ist
lineData(lineData); //Speicher bereitstellen
Konf2L= (lineData[0]); //Ergebnis T9 (Links)
Konf2R= (lindData[1]); //Ergebnis T10 (Rechts)
//------------------------------------------------------------------------//
{StatusLED(RED); //Zur Prüfung ob ASURO auch hier misst
FrontLED(OFF); //LED ausschalten|ASURO steht über der Kante
Msleep(10); //Wieder eine kurze Pause
lineData(lineData); //Bereitstellen des Speichers
Konf3L= (lineData[0]); //Ergebnis T9 (Links)
Konf3R= (lindData[1]); //Ergebnis T10 (Rechts)
//------------------------------------------------------------------------//
/*
Berechnung einiger Zwischenwerte
*/
ZW01l= (Konf0L-Konf1L); //ASURO auf dem Tisch| Zwischenwert für Links
ZW01r= (Konf0R-Konf1R); //ASURO auf dem Tisch| Zwischenwert für Rechts
ZW23l= (Konf2L-Konf3L); //ASURO über der Kante| Zwischenwert für Links
ZW23r= (Konf2R-Konf3R); //ASURO über der Kante| Zwischenwert für Rechts
do {
MotorSpeed (150,150);
MotorDIR (FWD,FWD);
if ((ZW01l < ZW23l) || (ZW01r < ZW23R))
{
MotorDir(RWD,RWD);
MotorSpeed(225,225);
Msleep(500);
MotorSpeed(0,0);
BackLED(ON,ON);
}
}
while(1);
return 0;
}
ich habe ein Programm geschrieben (Tischkante erkennen) und wollte nun eure Meinung dazu hören
- was haltet ihr allgemein von dem Code
- lässt sich daraus was machen
- was könnte besser sein
- was ist bereits in ordnung
-- Außerdem brauche ich eure Hilfe bei einer Fehlermeldung--:
test.c:4: error: expected identifier or '(' before '{' token
bestimmt kennen einige von euch die schon und wissen was zu tun ist.
Hier nun der Code(Ich hab sehr viele Kommentare verwendet nicht wundern):
#include "asuro.h"
#define STOP 80
int main(void);
{
unsigned int lineData[2];
int ergAL,ergBL,eL;
int ergAR,ergBR,eR
Init();
unsigned char running = TRUE;
//------------------------------------------------------------------------//
{StatusLED(GREEN);
FrontLED(ON); //LED wird eingeschaltet|ASURO steht auf dem Tisch
Msleep(10); //Pause bis LED an ist
lineData(lineData); //Speicher bereitstellen
Konf0L= (lineData[0]); //Ergebnis T9 (Links)
Konf0R= (lindData[1]); //Ergebnis T10 (Rechts)
//------------------------------------------------------------------------//
{StatusLED(RED); //Zur Prüfung ob ASURO auf hier misst
FrontLED(OFF); //LED ausschalten|ASURO steht auf dem Tisch
Msleep(10); //Wieder eine kurze Pause
lineData(lineData); //Bereitstellen des Speichers
Konf1L= (lineData[0]); //Ergebnis T9 (Links)
Konf1R= (lindData[1]); //Ergebnis T10 (Rechts)
}
//------------------------------------------------------------------------//
/*
Jetzt berechnen wir aus dem beiden eben ermittelten
Werten einen Zwischenwert. Dieser gibt an, wann der
ASURO auf dem Tisch ist.
*/
Konf01 = (Konf0-Konf1);
//------------------------------------------------------------------------//
/*
Im nächsten Schritt wird ein Wert ermittelt,
für den Fall, dass der ASURO sich über der
Tischkante befinden. Im Prinzip ist es
der gleiche Code wie eben.
*/
//------------------------------------------------------------------------//
{StatusLED(YELLOW); //Einfach zur Unterscheidung, dass der ASURO HINTER dem Tisch misst
FrontLED(ON); //LED wird eingeschaltet|ASURO steht über der Kante
Msleep(10); //Pause bis LED an ist
lineData(lineData); //Speicher bereitstellen
Konf2L= (lineData[0]); //Ergebnis T9 (Links)
Konf2R= (lindData[1]); //Ergebnis T10 (Rechts)
//------------------------------------------------------------------------//
{StatusLED(RED); //Zur Prüfung ob ASURO auch hier misst
FrontLED(OFF); //LED ausschalten|ASURO steht über der Kante
Msleep(10); //Wieder eine kurze Pause
lineData(lineData); //Bereitstellen des Speichers
Konf3L= (lineData[0]); //Ergebnis T9 (Links)
Konf3R= (lindData[1]); //Ergebnis T10 (Rechts)
//------------------------------------------------------------------------//
/*
Berechnung einiger Zwischenwerte
*/
ZW01l= (Konf0L-Konf1L); //ASURO auf dem Tisch| Zwischenwert für Links
ZW01r= (Konf0R-Konf1R); //ASURO auf dem Tisch| Zwischenwert für Rechts
ZW23l= (Konf2L-Konf3L); //ASURO über der Kante| Zwischenwert für Links
ZW23r= (Konf2R-Konf3R); //ASURO über der Kante| Zwischenwert für Rechts
do {
MotorSpeed (150,150);
MotorDIR (FWD,FWD);
if ((ZW01l < ZW23l) || (ZW01r < ZW23R))
{
MotorDir(RWD,RWD);
MotorSpeed(225,225);
Msleep(500);
MotorSpeed(0,0);
BackLED(ON,ON);
}
}
while(1);
return 0;
}