-
Ich würde gerne Versuchen, das die räder sich beim vorwärtsfahren anpassen, sodass er exakt geradeausfährt.
Code:
#include "asuro.h"
int main(void){
Init();
int zeit;
while(1) {
MotorDir(FWD,FWD); // Beiden Motoren auf Vorwärts
MotorSpeed(120,150); // Die Motoren arbeiten ungleichmäßig stark, so gehts geradeaus
StatusLED(GREEN); // Status-Leuchtdiode auf grün schalten
while (PollSwitch()==0) { // Kollisionskontakte prüfen und solange keine Kollision erfolgt...
SerWrite("Los gehts!\n",9); // ...weiterfahren
}
MotorSpeed(0,0); // Kollision! sofort anhalten!
StatusLED(RED); // Status-Leuchtdiode auf rot schalten
for(zeit=0;zeit<1000;zeit++){ // Ne pause von 1000 millisekunden
Sleep(72);}
BackLED(ON,ON); // Rückleuchten anschalten
MotorDir(RWD,RWD); // Rückwärtsgang einlegen
MotorSpeed(120,150); // losfahren
SerWrite("Wech hier!\n",10); // "Wech hier!" schicken
for(zeit=0;zeit<1000;zeit++){ // wieder Pause
Sleep(72);}
MotorSpeed(0,0); // Motoren ausschalten
SerWrite("Uff! Das war knapp.\n",16);
StatusLED(GREEN); // StatusLED wieder grün schalten
BackLED(OFF,OFF); // und Rückleuchten wieder aus
for(zeit=0;zeit<1000;zeit++){ // schon wieder Pause
Sleep(72);}
MotorDir(FWD,RWD); // Den linken Motor vorwärts und den rechten Rückwärts schalten,
StatusLED(YELLOW); // StatusLED gelb schalten,
MotorSpeed(100,129); // Beide Motoren einschalten
SerWrite("Drehn! Drehn! Drehn!\n",18); // und sich drehen
for(zeit=0;zeit<1000;zeit++){ // wieder kurz warten...
Sleep(72);}
MotorSpeed(0,0);
for(zeit=0;zeit<1000;zeit++){
Sleep(72);} // ...und dann alles von vorne
}
}
-
zwei magische Zeilen
Hallo!!
Ic habe nicht viel Ahnung von Programmiersprachen, kann mir jeman bitte erklären was diese zwei Zeilen aus dem oberen Programm bedeuten?
void search_left(void); //Funktionsprototyp
void search_right(void); // "
vielen Dank !!
=P~
-
Hi,
Die beiden Zeilen sind Funktionsdeklarationen (Prototypen). Jede Funktion die in einem C-Programm verwendet wird, muß vor der Verwendung deklariert werden (Name der Funktion, Funktionsparameter, Rückgabewert), sonst meckert der Compiler. Näheres siehe auch im C-Tutorial
Gruß m.a.r.v.i.n
-
Einen Wunderschönen guten Morgen.
Also ich bzw wir haben folgendes problem mit unserem Asuro. Wir haben Projektwoche in der Schule und befinden uns beim vorletzen Tag an dem wir efektiv an dem Roboter arbeiten können . Der Robo ist zusammengebaut und funktioniert soweit. Nach kleineren und größeren start problem lief auch das testprogrammm irgend wann. Lämpchen blinken auf er fuhr rückwerts,drehte ich im kreis etc. So dann wollten wir das flashen anfangen ...was aus irgend welchen gründen nicht funktonierte. Bis wir dann herausgefunden haben das wenn wir den Robo beim Flashen aus-an-aus schalten er geflasht wird. Soo test programm von der CD in den Prozzesor geflashed...nix tut sich nur lämpchen blinken auf. Eigen geschriebene Programme...nix funktonier ...kann uns /mir jemand helfen? Ich hab mir auch ma das programm
- #include "asuro.h"
int Main(void)
{
unsigned char sw;
Init();
sw = PollSwitch() ;
MotorDir(FWD,BREAK) ;
MotorSpeed(0, 0) ;
if (sw & 0x01)
MotorSpeed(30, 30) ;
if (sw & 0x02)
MotorSpeed(50, 50) ;
if (sw & 0x04)
MotorSpeed(80, 80) ;
if (sw & 0x08)
MotorSpeed(120, 120) ;
if (sw & 0x10)
MotorSpeed(160, 160) ;
if (sw & 0x20)
MotorSpeed(250, 250) ;
}
aus dem forum geklaut und es probiert aber es tut sich trozdem nix.evtl weis wer rat :)
MFG
-
Hallo Soko,
da hast du dir kein sehr gutes Codebeispiel geklaut. Probier mal alles hinter Init() in eine Endlosschleife zu packen, dann sollte es funktionieren.
Code:
#include "asuro.h"
int Main(void)
{
unsigned char sw;
Init();
while(1) // Endlosscheife
{
sw = PollSwitch() ;
...
}
}
btw, für Programmcode heißt das Metatag 'code' nicht 'list'.
-
Hallo
Dein Progamm sollte in einem "Grundgerüst" sein:
Code:
#include "asuro.h"
int main(void) {
unsigned char sw;
Init();
do{
sw = PollSwitch() ;
MotorDir(FWD,BREAK) ;
MotorSpeed(0, 0) ;
if (sw & 0x01)
MotorSpeed(30, 30) ;
if (sw & 0x02)
MotorSpeed(50, 50) ;
if (sw & 0x04)
MotorSpeed(80, 80) ;
if (sw & 0x08)
MotorSpeed(120, 120) ;
if (sw & 0x10)
MotorSpeed(160, 160) ;
if (sw & 0x20)
MotorSpeed(250, 250) ;
}while (1);
return 0;
}
Ausserdem:
if (sw & 0x01)
sollte besser
if (sw && 0x01)
heisen. Bei einem & wird bitweise und-verknüpft und das Ergebniss in sw gespeichert. Alle weiteren sw-Abfragen funktionieren dann nicht mehr so wie gedacht. Bei && wird wird nur das Ergebnisse eines logischen Und gebildet und ausgewertet, sw bleibt dabei unverändert. (Das gilt natürlich auch für alle anderen IFs in deinem Code!)
Längerer Programmcode sollte in Code-Tags gepostet werden.
Meine asuro dreht die Rädchen erst bei MotorSpeed()-Werten ab ca. 100.
Gruß
mic
-
Mhh okay ich hab nu verschiedenes ausprobiert. Mit einer while endloschleife, mit do er fährt aber immer noch nicht :(...Wir haben uns ne hex ausem i-net geladen die funz aber wir wissen nicht wie die programmiert ist...da sie sich net auslesen läst
-
Also unser Roboter fährt nu vorwärst rückwärts ect ;). Aber die Sensoren wollen nicht wie wir . Funktionieren tun sie haben es mit einer hex ausem i-net getestet.Aber wenn wir nu unser eigene Programme schreiben funktionieren sie nicht.
Code:
#include “asuro.h”
int main(void) {
Init ()
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(120,120); // Beide Motoren etwa halbe Kraft voraus
StatusLED(GREEN); // Status-Leuchtdiode auf grün schalten
while (PollSwitch()==0) { // Solange keine Kollision erfolgte...
SerWrite(“Alles OK!\n”,10); // ... Euphorie verbreiten
}
MotorSpeed(0,0); // Kollision! Sofort anhalten!
StatusLED(RED); // Statusleuchtdiode rot schalten
while (1) {
SerWrite(“Aua!\n”,5); // und weinen!
}
}
Was machen wir falsch?
-
dieses programm habt ihr nicht selbst geschrieben, sondern irgendwo kopiert. wichtig ist, dass das "asuro.h" in normalen anführungszeichen steht (SHIFT+2). wenn man solche quelltexte kopiert, dann wird dieses zeichen oftmals zerstört, in eurem codefenster oben sieht man deshalb nur nich solche blöcke. das gilt natürlich für sämtliche anführungszeichen im code.
-
Der code ist ausem manual vom Asuro kopiert...und in der ver in der wirs getestet haben waren die "" auch ""