PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie Programmiere ich PollSwitch



giftzwerg95
05.02.2010, 18:09
Hallo
Ich habe mir letztens den Asuro Roboter gekauft und zusammengebaut. Beim Programmieren kriege ich eigentlich alles hin, bis auf das mit den Tastern. Bitte helft mir!!

Gruß Giftzwerg

Thund3r
06.02.2010, 01:48
Hallo

Wie genau soll denn die Hilfe aussehen?
Bitte formuliere die Frage etwas genauer damit man dir helfen kann ;)

Gruß Thund3r

giftzwerg95
06.02.2010, 11:43
Ich würde es gern mal hin kriegen das wenn er irgendwo gegen fährt, dreht und dann wieder weiter grade aus fährt. Das würde mir schon reichen.

Thund3r
06.02.2010, 11:51
Hallo

Hier ein Kollisionsprogramm ist eig. selbsterklärend:



#include <asuro.h>
int main (void)
{
Init();
int p;
while(1){
MotorDir(FWD,FWD);
MotorSpeed(125,125); // Fahre geradeaus
if(PollSwitch()>=8 ) //Wenn eine Seite der Taster berügrung meldet
{
MotorDir(RWD,RWD);
MotorSpeed(125,125); //Fahre ein Stück zurück
for(p=0;p<300;p++)
{Sleep(72);}

MotorDir(BREAK,RWD); //Und dreh dann von der getasteten Seite weg
MotorSpeed(0,125);
for(p=0;p<1000;p++)
{Sleep(72);}
}
if((PollSwitch()<8 && PollSwitch()>1)) // Gleiches wie oben nur für die andere Seite
{
MotorDir(RWD,RWD);
MotorSpeed(125,125);
for(p=0;p<300;p++)
{Sleep(72);}

MotorDir(RWD,BREAK);
MotorSpeed(125,0);
for(p=0;p<1000;p++)
{Sleep(72);}
}
}
while(1){}
return 0;
}

Ein Taster wurde bewusst "igoriert" da hin und wieder mal 1 zurückgegeben auch wenn der zugehörige Taster nicht gedrückt wurde.

Gruß Thund3r

giftzwerg95
07.02.2010, 20:22
danke das ist das was gern haben wollte

josua
08.02.2010, 14:33
du kannst auch die taster mehrfach abfragen, dann musst du den einen taster nicht ignorieren.

gruß josua

giftzwerg95
08.02.2010, 17:02
ich hab noch eine Frage
was ist an diesem Text falsch

#include "asuro.h"

int main(void);
{
unsigned char taste;

Init();
taste = pollswitch();
StatusLED(OFF);
MotorDir(FWD,FWD);
MotorSpeed(100,100);

while(1);

if(taste>0){MotorSpeed(0,0);}
StatusLED(RED);
MotorDir(RWD,FWD);
MotorSpeed(100,70);
else(taste=0){MotorSpeed(100,100);}

return 0;
}

Thund3r
08.02.2010, 17:51
Hallo

Auf den ersten Blick 2 Sachen.
Zum ersten muss die Hauptwhile Schleife nciht so while(1); aussehen sondern while(1){ hie dein quellcode bis return0} return 0; muss außerhalb der klamemr stehen und 2tens ist das else (taste==0) nicht =0

Gruß Thund3r

giftzwerg95
08.02.2010, 18:12
geht leider troßdem nicht

gruß giftzwerg

Thund3r
08.02.2010, 18:13
Hallo

Zeig mal wie dein Programm jetz aussieht

Gruß Thund3r

giftzwerg95
08.02.2010, 18:33
[/code]#include "asuro.h"

int main(void)
{
unsigned char taste;

Init();
taste=PollSwitch;
StatusLED(OFF);
MotorDir(FWD,FWD);

while(1){

if(taste>0){
MotorSpeed(0,0);
StatusLED(OFF);}

else{
MotorSpeed(200,200);
}
}
return 0;
}

Thund3r
08.02.2010, 18:35
Hallo
taste=PollSwitch; musst du in die while schleife packn sonst wird nur einmal der Wert genommen und mit dem wird immer verglichen da kein neuer ermittelet wird.

Gruß Thund3r

asurofreak.
08.02.2010, 18:38
also so:


#include "asuro.h"

int main(void)
{
unsigned char taste;

Init();
taste=PollSwitch;
StatusLED(OFF);
MotorDir(FWD,FWD);

while(1){

if(taste>0){
MotorSpeed(0,0);
StatusLED(OFF);}

else{
MotorSpeed(200,200);
}
}
return 0;
}


du musst am anfang und am ende auf "code" klicken

giftzwerg95
08.02.2010, 18:40
Jetzt sieht es so aus, aber es geht leider immer noch nicht

gruß giftzwerg


#include "asuro.h"

int main(void)
{
unsigned char taste;

Init();

StatusLED(OFF);
MotorDir(FWD,FWD);

while(1){
taste=PollSwitch;

if(taste>0){
MotorSpeed(0,0);
StatusLED(OFF);}

else{
MotorSpeed(200,200);
}
}
return 0;
}

Thund3r
08.02.2010, 18:48
Hallo

Init() muss immer als allererstes und hinter pollswitch muss n ()

Gruß Thund3r

giftzwerg95
08.02.2010, 18:57
danke jetzt gehts O:) O:)

gruß giftzwerg

Valen
08.02.2010, 18:57
Jetzt sieht es so aus, aber es geht leider immer noch nicht

gruß giftzwerg

...Was genau geht nicht. Oder besser, was macht er schon? Deine anderungen mussen doch irgendeiner auswirkung haben. Oder hattest du compilier/make fehler meldungen bekommen. Bitte etwes weiter erklären.

Thund3r
08.02.2010, 18:57
Hallo

Gern geschehn ;)

Gruß Thund3r

Valen
08.02.2010, 18:59
Nah ,3 berichten innerhald einer minute. Das ist schnell!

asurofreak.
08.02.2010, 19:27
kann mir vielleicht jemand ebend den hex-file davon schicken, hab nähmlich probleme mit dem notepad (windo(o)ws 7 :( )

MfG