Crysers
06.06.2012, 14:44
Hallo, Ich bin Julian und neu hier im Forum.
Zur Zeit habe ich ein Projekt mit dem Asuro, bei dem ich zwei Ausros untereinander via Bluetooth kommunizieren lassen möchte. Die Verbindung mit Bluetooth steht bereits.
Der eine Asuro soll eine Linie verfolgen und dabei seine Geschwindigkeitswerte an den zweitesch schicken. Dieser soll dann zeitgleich parallel zum ersten Asuro das gleiche Linienmuster fahren. Dies nur mittels der empfangenen Daten.
Die Linienverfolgung klappt recht gut. (ist auch eine sehr einfache Verfolgung^^). Der zweite Asuro jedoch erhält nur manchmal die Richtungsänderung und fährt somit lange im Kreis bzw. völlig falsch....
Hat jemand eine Idee, woran dies liegen könnte? Kann es sein, dass es mit den Sendezeiten Probleme gibt? Also dass der zweite die daten nicht richtig empfängt, weil sich sendung und empfang sich direkt überschneiden?
Hier mal der Quelltext:
Linienverfolger:
#include <asuro.h>
int main() {
Init();
unsigned int data[2];
unsigned int SpeedLinks,SpeedRechts;
char SndBuf[2];
FrontLED(ON);
while(1){
LineData(data);
if (data [0] > 50 ) { // neben der linie
SpeedLinks=33;
SpeedRechts=175;
MotorSpeed(SpeedRechts,SpeedLinks);
SerWrite('R',1);
}
else { // Korrektur, um auf die Linie zurückzukommen
SpeedLinks=175;
SpeedRechts=33;
MotorSpeed(SpeedRechts,SpeedLinks);
SerWrite('L',1);
}
};
return(0);
}
zweiter Asuro:
#include <asuro.h>
int main(void) {
Init();
char RecBuf[1];
int SpeedRechts;
int SpeedLinks;
MotorSpeed(0,0);
MotorDir(FWD,FWD);
while(1) {
StatusLED(RED);
SerRead(RecBuf,1,0);
if (RecBuf[0]=='L') {
SpeedLinks=175;
SpeedRechts=33;
MotorSpeed(SpeedRechts,SpeedLinks);
}
if (RecBuf[0]=='R') {
SpeedLinks=33;
SpeedRechts=175;
MotorSpeed(SpeedRechts,SpeedLinks);
}
}
return (0);
}
Schonmal Danke für eure Hilfe:)
Zur Zeit habe ich ein Projekt mit dem Asuro, bei dem ich zwei Ausros untereinander via Bluetooth kommunizieren lassen möchte. Die Verbindung mit Bluetooth steht bereits.
Der eine Asuro soll eine Linie verfolgen und dabei seine Geschwindigkeitswerte an den zweitesch schicken. Dieser soll dann zeitgleich parallel zum ersten Asuro das gleiche Linienmuster fahren. Dies nur mittels der empfangenen Daten.
Die Linienverfolgung klappt recht gut. (ist auch eine sehr einfache Verfolgung^^). Der zweite Asuro jedoch erhält nur manchmal die Richtungsänderung und fährt somit lange im Kreis bzw. völlig falsch....
Hat jemand eine Idee, woran dies liegen könnte? Kann es sein, dass es mit den Sendezeiten Probleme gibt? Also dass der zweite die daten nicht richtig empfängt, weil sich sendung und empfang sich direkt überschneiden?
Hier mal der Quelltext:
Linienverfolger:
#include <asuro.h>
int main() {
Init();
unsigned int data[2];
unsigned int SpeedLinks,SpeedRechts;
char SndBuf[2];
FrontLED(ON);
while(1){
LineData(data);
if (data [0] > 50 ) { // neben der linie
SpeedLinks=33;
SpeedRechts=175;
MotorSpeed(SpeedRechts,SpeedLinks);
SerWrite('R',1);
}
else { // Korrektur, um auf die Linie zurückzukommen
SpeedLinks=175;
SpeedRechts=33;
MotorSpeed(SpeedRechts,SpeedLinks);
SerWrite('L',1);
}
};
return(0);
}
zweiter Asuro:
#include <asuro.h>
int main(void) {
Init();
char RecBuf[1];
int SpeedRechts;
int SpeedLinks;
MotorSpeed(0,0);
MotorDir(FWD,FWD);
while(1) {
StatusLED(RED);
SerRead(RecBuf,1,0);
if (RecBuf[0]=='L') {
SpeedLinks=175;
SpeedRechts=33;
MotorSpeed(SpeedRechts,SpeedLinks);
}
if (RecBuf[0]=='R') {
SpeedLinks=33;
SpeedRechts=175;
MotorSpeed(SpeedRechts,SpeedLinks);
}
}
return (0);
}
Schonmal Danke für eure Hilfe:)