PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neu in der Roboterwelt---> Ausuro



A.v. Taube
02.07.2006, 21:34
Hallo zusammen,
ich hab von meinem Physiklehrer einen Bausatz vom Asuro bekommen, da wir den für unser Wahlfach bekommen haben. Nun hab ich ihn mal zusammengebaut, und auch den Selbsttest gemacht, alles bestens.
Nun komm ich zum meinem Problem, ich kenn mich in C überhaupt nicht aus:( würde aber natürlich gerne bisserl was rumprobieren und programmieren. Programierneuling bin ich nicht, ich kann PHP und HTML und bisserl Mysql. Nun wollte ich euch fragen ob ihr irgendwelche Tutorials kennt wo man sich langsam in C bezogen auf den Asuro einarbeiten kann. Oder habt ihr sonst irgendwelche Tipps wie man sich in dieses Gebiet einarbeitet?
Gruß Fabian

schneemann99
02.07.2006, 22:35
Es gibt einige gute C-Tutorials im Internet. Es reicht, wenn du die einfachen Befehle kannst. Die Funktionen der ASURO-Lib sind alle im Handbuch beschrieben und es gibt jede Menge Programme für den ASURO im Internet. Einfach mal anschauen.

A.v. Taube
03.07.2006, 17:03
Ich hab jetzt mal dieses kleine Programm geschrieben:

#include"asuro.h"
int main(void)
{
MotorDir(FWD,FWD);
MotorSpeed(120, 120);
while(PollSwitch()==0)
{
StatusLED(RED);
}
MotorSpeed(0,0);
}
Und eig. dachte ich das er jetzt immer fahren müsste, außer er stößt irgendwo an, dann sollte er stehen bleiben. Nur leider macht mein Asuro gar nichts:(
ein Programm hat er schon gemacht, das hat aber auch nur verändert, das die Statuslampe Rot statt Grün leuchtet.
Einen Fehler beim Compilieren gabs auch nicht, ich weiß einfach nicht was los is...
Gruß Fabian, der hofft geholfen zu werden*g*

m.a.r.v.i.n
03.07.2006, 17:14
Der Aufruf der Funktion Init() fehlt. Sonst wird die Hardware nicht richtig initialisiert.


#include"asuro.h"
int main(void)
{
Init();
MotorDir(FWD,FWD);
MotorSpeed(120, 120);
while(PollSwitch()==0)
{
StatusLED(RED);
}
MotorSpeed(0,0);
}


Gruß m.a.r.v.i.n

A.v. Taube
03.07.2006, 17:57
danke das war schonmal sehr hilfreich, nun hab ichs bisserl abgeändert:

#include"asuro.h"
int main(void)
{
Init();

if(PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(120, 120);
StatusLED(GREEN);
}
else
{
MotorSpeed(0, 0);
}
}

Leider reagiert er aber nicht auf die Taster vorne.. An was kann denn das nun wieder liegen?
Gruß Fabian

izaseba
03.07.2006, 18:12
Hallo, ist das jetzt alles am Programm?

Du machst nur eine Abfrage nach den Taster und Ende, die Hauptschleife wird beendet und der Kontroller arbeitet irgendwas ab, was garnicht zum Programm gehört.

Mach mal sowas:



while(1){

while (Pollswitch() == 0){
MotorDir(FWD,FWD);
MotorSpeed(120, 120);
StatusLED(GREEN);
}
MotorSpeed(0,0);

}


Mach Dir den Unterschied zwischen if und while klar.

Gruß Sebastian

A.v. Taube
03.07.2006, 19:51
super danke! tolles Forum!

Wie kann ich denn einzellne Taster abfragen?
einfach die Nummer in den Pollswitch(1) z.B.
Gruß Fabian

izaseba
03.07.2006, 20:13
Wie kann ich denn einzellne Taster abfragen?


einfach die Nummer in den Pollswitch(1)
Nein, die Funktion Pollswich erwartet keinen Parameter deswegen hast Du oben Pollswitch() geschrieben.
Mit Pollswich(1) würdest Du einen Parameter an die Funktion übergeben,
aber Pollswich liefert Dir was zurück (ob es ein int oder char ist weiß ich jetzt auf die schnelle nicht genau, müßte mal nachgucken)
wenn Du geschrieben hast


while (Pollswitch() == 0){
fahr gerade aus
}

heißt es dann kein Taster -> Pollswitch liefert null zurück.
Wenn ein Taster gedrückt wird kriegst Du halt eine andere Zahl.
Das kannst Du selber rauskriegen weil:

ich kenn mich in C überhaupt nicht aus:( würde aber natürlich gerne bisserl was rumprobieren und programmieren.

und es macht viel mehr Spaß, wenn man selber drauf kommt.

Als Anhaltspunkte werfe ich hier ein paar Begriffe in den Raum:
pollswitch, serwrite, itoa, terminal.
Durchsuch mal das Forum danach, Du wirst schon was brauchbares finden, wenn nicht, kannst Du immer noch nachfragen.

Gruß Sebastian