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 !!
![]()
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 } }
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 !!
![]()
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 & 0x0
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.
btw, für Programmcode heißt das Metatag 'code' nicht 'list'.Code:#include "asuro.h" int Main(void) { unsigned char sw; Init(); while(1) // Endlosscheife { sw = PollSwitch() ; ... } }
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
Bild hier
Atmel’s products are not intended, authorized, or warranted for use
as components in applications intended to support or sustain life!
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.
Was machen wir falsch?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! } }
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 ""
Lesezeichen