Hey Danke! Ich hab jetzt noch nichts korrigiert, werde mich aber gleich mal dran setzen. Erstmal hier alles festlich herrichten, ist ja auch Weihnachten
...
Trotzdem hier schonmal das gesamte Programm!
Code:
#include "asuro.h" // Konfigurationsdateien laden
#include <string.h>
#define ENDLOS while(1)
/* Funktionen definieren */
void schlafen(unsigned int t)
{
unsigned int i;
for(i=0; i<t; i++)
{
Sleep(72);
}
}
/* Geradeausfahren */
void GeradeAus()
{
unsigned int i=0;
unsigned int OdoDataInit[2];
unsigned int OdoData[2];
unsigned int n0=0;
unsigned int n1=0;
OdometrieData(OdoDataInit);
float comp;
unsigned int old0=OdoDataInit[0];
unsigned int old1=OdoDataInit[1];
unsigned int spd0=190;
unsigned int spd1=190;
OdometrieData(OdoData);
MotorDir(FWD,FWD);
MotorSpeed(spd0,spd1);
for(i=0; i<=100; i++) // 50 mal Messen für exakteren Wert
{
/* Berechnung der Drehzahl des 0. Odosensors */
if(old0==0){old0=1;} // sonst teilt man nacher durch 0 wenns dunkel ist!
if(OdoData[0]/old0 > 1.4 || OdoData[0]/old0 < 0.6) // Wenn Übergang n erhöht
{
n0++;
StatusLED(YELLOW);
}
old0=OdoData[0];
/* Berechnung der Drehzahl des 1. Odosensors */
if(old1==0){old1=1;} // sonst teilt man nacher durch 0 wenns dunkel ist!
if(OdoData[1]/old1 > 1.4 || OdoData[1]/old1 < 0.6)
{
n1++;
StatusLED(RED);
}
old1=OdoData[1];
}
StatusLED(GREEN);
/* Drehzahlen ins Verhältnis setzen und dann Geschw. ev. Erhöhen */
comp=n0/n1;
if(comp > 1)
{
if(spd0<255)
{
spd0++;
BackLED(ON,OFF);
}
else
{
spd1--;
}
}
else if(comp < 1)
{
if(spd1<255)
{
spd1++;
BackLED(OFF,ON);
}
else
{
spd0--;
}
}
}
/* Beginn des Hauptprogramms */
int main (void){
Init(); //Prozessor initialisieren
ENDLOS // Endlosschleife
{
GeradeAus();
}
/* Schluss ! */
return 0;
}
Heute Nachmittag werde ich vielleicht mal ein Programm schreiben dass mir die Odometerdaten zusendet, aber mit sowas hatte ich bisher immer Probleme weil nur kryptische Daten ankamen, mal schauen!
Lesezeichen