Hallo Damaltor
Ich hab das gemacht hat abber immer noch nicht funkionirt Vieleicht hab ich es ja falch verstanden Köntest du diesen teil ( nicht alles ) mir mal zeigen wie du das meints
Gruß
Chief 2
Druckbare Version
Hallo Damaltor
Ich hab das gemacht hat abber immer noch nicht funkionirt Vieleicht hab ich es ja falch verstanden Köntest du diesen teil ( nicht alles ) mir mal zeigen wie du das meints
Gruß
Chief 2
hier ist das problem:
Code:uint8_t objekt_sichtbar(uint8_t distance)
{
uint16_t j,z;
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
OCR2 = 254-distance; // wenn OCR2=0xFE dann Objekt sehr nahe
z=0;
for(j=0;j<30;j++); // loop time: 5ms
{
if (PIND & (1 << PD0))z++;
Sleep(6); // 6*Sleep(6)=1ms
}
if (z>=29) return FALSE; // Objekt nicht gefunden
else return TRUE;
} /* Du beendest hier die funktion objekt_sichtbar(). ab hier darf nichts weiter kommen.*/
{ /*aber hier kommt wieder was, eine öffnende klammer ohne funktionsbezeichnung. wohin gehört der restliche code hier?*/
uint8_t k,n; /***<<<***/ /***<<<***/ /***<<<***/
k=255;
for(n=0;n<8;n++)
Der restliche code ist dafür da wass er machen solll wen ein objekt sichtbar ist
das ist klar. aber in welche funktion gehört er? er steht mitten in der datei, ungefähr so:
er muss aber irgendwo dazu, entweder mit in die main klammern oder in eine eigene funktion.. irgendwohin muss er.Code:int main(){
hier steht der ganze main quelltext
}
int objektsichtbar(){
hier steht der objekt sichtbar code
}
{ und hier steht der code der nirgendwo dazugehört
}
Ich hab jetz das programm geändert dass es jetz irgendwo hinzu gehört abber es gibt dan neue probleme das ganze sieht jetz so aus
und die fehlermeldung jetz so:Code:#include "asuro.h"
#include <stdlib.h>
#define LIMIT 20 // Helligkeitsveraenderung, bei der eine Linie detektiert wird
#define TIEFPASS 50 // grosser Wert=grosse Zeitkonstante
// globale Variablen
uint16_t HellLinks;
uint16_t HellRechts;
void Msleep(int dauer)
{
int z;
for(z=0;z<dauer;z++) Sleep(72);
}
unsigned char testhell(void)
{
uint8_t ergebnis=0;
uint16_t lineData[2];
LineData(lineData);
HellLinks=(HellLinks*TIEFPASS+lineData[0])/(TIEFPASS+1);
HellRechts=(HellRechts*TIEFPASS+lineData[1])/(TIEFPASS+1);
StatusLED(YELLOW);
if((lineData[0]+LIMIT)<(HellLinks)) ergebnis|=1;
if((lineData[1]+LIMIT)<(HellRechts)) ergebnis|=2;
Msleep(10);
return ergebnis;
}
int main(void)
{
int n;
Init();
StatusLED(RED);
FrontLED(ON);
// mittlere Helligkeit im Stand ermitteln
for(n=0;n<300;n++)
{
testhell();
}
StatusLED(YELLOW);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
while(1)
{
n=testhell();
BackLED(n&0x01,n&0x02);
StatusLED(YELLOW);
if(n!=0) // Falls Linie erkannt, dann drehen und zurück
{
StatusLED(GREEN);
MotorDir(RWD,RWD);
MotorSpeed(150,100);
Msleep(600);
MotorDir(RWD,FWD);
MotorSpeed(200,200);
Msleep(600);
MotorDir(FWD,FWD);
MotorSpeed(150,150);
}
Msleep(10);
}
return(0);
}
uint8_t objekt_sichtbar(uint8_t distance)
{
uint16_t j,z;
DDRD |= (1 << DDD1); // Port D1 als Ausgang
PORTD &= ~(1 << PD1); // PD1 auf LOW
OCR2 = 254-distance; // wenn OCR2=0xFE dann Objekt sehr nahe
z=0;
for(j=0;j<30;j++); // loop time: 5ms
{
if (PIND & (1 << PD0))z++;
Sleep(6); // 6*Sleep(6)=1ms
}
if (z>=29) return FALSE; // Objekt nicht gefunden
else return TRUE;
}
uint8_t abstand()
{ /***<<<***/ /***<<<***/ /***<<<***/
uint8_t k,n;
k=255;
for(n=0;n<8;n++)
{
if (!objekt_sichtbar(n)) k=n; // solange kein Objekt, Distanz erhoehen
}
return k;
uint8_t n;
Init();
while(1)
{
n=abstand();
StatusLED(OFF);
BackLED(OFF,OFF);
if(n!=255)
{
if (n<6) MotorDir (FWD,FWD);MotorSpeed(220,220);
if (n<4) MotorDir (FWD,FWD);MotorSpeed(220,220);
if (n<3) MotorDir (FWD,FWD);MotorSpeed(220,220);
if (n<2) MotorDir (FWD,FWD);MotorSpeed(220,220);
Msleep(10);
}
}
}
test.c:106:error:redeclaration of 'n' with no linkage
test.c:97:error:previous declaration of 'n' was here
vielleicht solltest du es so ändrn dass es nicht "irgendwo" dazugehört.
bist du sicher das programm selbst entworfen zu haben? dann solltest du auch wissen wo er dazugehört...
ich hab das programm mit den sumo programm und den infrarot test pogramm von robofreak entworfen ich hab die sumo datei genommen und dann mir die IR test programm genommen und geguckt wie es gehen könnte die sumo datei ist komplett drinn die Ir teils
dann versuche nich einfach code hinten anzuhängen sondern achte darauf, ihn an passender stelle einzufügen. so einfach klappt es selten.
an welcher stellle könte ich es den einsetzen
ich weiss nicht was das endziel ist, und ich weiss nicht woher die codeschnipsel kommen. da kann ch dir nicht helfen.
aber entwirf doch mal so ein programm selbst, das wäre doch ein gutes projekt für die nächsten tage...