PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : frage zu IR fernseuerung für ASURO



Nicolai
26.04.2007, 18:32
Hallo,
ich bin noch ein totaler Anfänger in Robotik und im Programieren.
Und ich wollte fragen ob man den ASURO mit den Grundkentnissen aus
der Anleitung fernsteuern kann.
Ich hab mal nur zum Spaß was geschrieben,
und leider (wie zu erwarten) funktioniert es nicht.


#include "asuro.h"

char text[2],w[2],s[2],a[2],d[2];//Variablen für forwärts, rückwärts, rechts, links, und steuerung.

char i[2]; //Variable für die Motorsynkronisation

unsigned int b; // Variable fürs zählen

char o[2]; //Variable für die Motorsynkronisation

int main(void){ //Start der main funktion

Init();

Synkronisation(); //Synkronisieren

while(1){ //endlosschleife

SerRead(text,1,1);{ //einlesen der variable fürs steuern

if (text[2] == w[2]){MotorDir(RWD,RWD);MotorSpeed(255,255);for(b=0;b<1000;b++)Sleep(72);} //wenn text gleich variable für forwärts dann motor auf follspeed

else if (text[2] == s[2]){MotorDir(FWD,FWD);MotorSpeed(225,225);}//wenn text gleich variable für rückwärts dann motor auf follrückwärtsspeed

else if (text[2] == a[2]){MotorDir(FWD,RWD);MotorSpeed(100,200);}

else if (text[2] == d[2]){MotorDir(RWD,FWD);MotorSpeed(200,100);}

else {MotorDir(FREE,FREE);MotorSpeed(0,0);}}

}

while(1);

return 0;}

int Synkronisation(){

StatusLED(GREEN);for(b=0;b<400;b++)Sleep(72);StatusLED(OFF);

SerWrite("\n\rSynkronisation\n\r",16);

SerWrite("\n\rTasten\n\r",8);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rbitte drucken sie nacheinander die Steuerungstasten fur:\n\r",57);

for(b=0;b<500;b++)Sleep(72);

SerWrite("\n\rforwerts , ruckewerts , links und rechts.\n\r",46);

SerRead(w,1,0);

SerWrite("\n\rOK \n\r",5);

SerRead(s,1,0);

SerWrite("\n\rOK \n\r",5);

SerRead(a,1,0);

SerWrite("\n\rOK\n\r",5);

SerRead(d,1,0);

SerWrite("\n\rOK \n\r",5);

SerWrite("\n\ruberprufung der Tasten\n\r",25);

for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rforwarts \n\r",13);

SerWrite(w,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rruckwarts \n\r",14);

SerWrite(s,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rlinks \n\r",10);

SerWrite(a,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rrechts \n\r",11);

SerWrite(d,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rFalls eine der Taste nicht richtig ist bitte Neustarten\n\r",57);

for(b=0;b<5000;b++)Sleep(72);

SerWrite("\n\rSynkronisation abgeschlossen\n\r",30);

return 0;}

bitte kann mir jemand sagen was da falsch ist.
danke

Nicolai

nicolainessenius@arcor.de

damaltor
27.04.2007, 01:30
zuerst einmal: du solltest kleiner anfangen. hast du dich mal mit der programmiersprache c auseinandergesetzt? die funktion synkronisieren (was man übrigens mit ch anstelle von k schreibt) exisitiert in deinem programm nichz.. ausserdem sind viele andere fehler drin.

Nicolai
30.04.2007, 14:59
sorry kein wunder das is das alte programm :|
ich hab das schon überarbeitet hab aber im moment meinen pc nicht zur
verfügung und kann deshalb die aktuelle version nicht reinstellen
sorry

](*,)


Nicolai

Nicolai
04.05.2007, 13:03
Das is jetzt die (vieleicht 8-[ ) richtige Version:


#include "asuro.h"

char text[2],w[2],s[2],a[2],d[2];

unsigned int b;

int main(void){

Init();

Synkronisation();

while(1){

SerRead(text,1,1);{

if (text[2] == w[2]){MotorDir(RWD,RWD);MotorSpeed(255,255);for(b=0;b<1000;b++)Sleep(72);}

else if (text[2] == s[2]){MotorDir(FWD,FWD);MotorSpeed(225,225);}

else if (text[2] == a[2]){MotorDir(FWD,RWD);MotorSpeed(100,200);}

else if (text[2] == d[2]){MotorDir(RWD,FWD);MotorSpeed(200,100);}

else {MotorDir(FREE,FREE);MotorSpeed(0,0);}}

}

while(1);

return 0;}

int Synkronisation(){

StatusLED(GREEN);for(b=0;b<400;b++)Sleep(72);StatusLED(OFF);

SerWrite("\n\rSynkronisation\n\r",16);

SerWrite("\n\rTasten\n\r",8);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rbitte drucken sie nacheinander die Steuerungstasten fur:\n\r",57);

for(b=0;b<500;b++)Sleep(72);

SerWrite("\n\rforwerts , ruckewerts , links und rechts.\n\r",46);

SerRead(w,1,0);

SerWrite("\n\rOK \n\r",5);

SerRead(s,1,0);

SerWrite("\n\rOK \n\r",5);

SerRead(a,1,0);

SerWrite("\n\rOK\n\r",5);

SerRead(d,1,0);

SerWrite("\n\rOK \n\r",5);

SerWrite("\n\ruberprufung der Tasten\n\r",25);

for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rforwarts \n\r",13);

SerWrite(w,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rruckwarts \n\r",14);

SerWrite(s,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rlinks \n\r",10);

SerWrite(a,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rrechts \n\r",11);

SerWrite(d,1);for(b=0;b<800;b++)Sleep(72);

SerWrite("\n\rFalls eine der Taste nicht richtig ist bitte Neustarten\n\r",57);

for(b=0;b<5000;b++)Sleep(72);

SerWrite("\n\rSynkronisation abgeschlossen\n\r",30);

return 0;}


Oder sag mir mal jemand ne gescheite seite wo C von anfang an erklärt wird.

Nicolai

damaltor
04.05.2007, 16:01
c wird hier ganz gut erklärt:

http://www.pronix.de/pronix-4.html

ansonsten fällt mir spontan auf: die funktion Synkronisation() (die man immer noch mit ch schreibt) muss deklariert werden, BEVOR sie benutzt wird. das bedeutet, sie muss über der main-funktion stehen.

was funktioniert denn nicht? der ablauf? dann beschreibe was nicht geht. das kompilieren? dann poste im code-fenster den output vom compiler.

Nicolai
11.06.2008, 16:35
Danke das wars son leichtsinsfehler ..
den hab ich echt net gesehen
8-[
Nicol@i