PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : taster-wackelkontakt



Nighthawk91
19.02.2007, 13:01
ich habe ein programm geschrieben, mit dem der asuro wenn er gegen ein hindernis fährt einfach um dreht, aber manchmal dreht er ohne jeden erkennbaren grund um ich glaube, dass ein wackelkontakt ist, denn das programm sollte eigentlich nur starten, wenn einer der taster gedrückt ist, man kann dafür den asuro aber auch einfach schütteln, ich weiß nur nicht, wo sich dieser wackelkontakt befinden könnte!?

falls es doch am programm liegen könnte:


#include "asuro.h"

int main(void)
{
Init();
FrontLED(ON);
StatusLED(RED);
BackLED(ON,ON);
while(PollSwitch()==0)
{
MotorDir(FWD,FWD);
MotorSpeed(0,0);}
StatusLED(GREEN);
BackLED(OFF,OFF);
FrontLED(OFF);
Msleep(600);
/*________*/
while(1)
{
if(PollSwitch()==0)
{
while(PollSwitch()==0)
{
StatusLED(GREEN);
MotorSpeed(255,255);
MotorDir(RWD,RWD);
}
}

if(PollSwitch() > 0)
{
StatusLED(YELLOW);
MotorSpeed(255,255);
MotorDir(RWD,FWD);
Msleep(600);
MotorSpeed(0,0);

}
}


while (1);
return 0;
}

Mucki
19.02.2007, 13:44
Hi,


ich habe ein programm geschrieben, mit dem der asuro wenn er gegen ein hindernis fährt einfach um dreht, aber manchmal dreht er ohne jeden erkennbaren grund um ich glaube, dass ein wackelkontakt ist, denn das programm sollte eigentlich nur starten, wenn einer der taster gedrückt ist, man kann dafür den asuro aber auch einfach schütteln, ich weiß nur nicht, wo sich dieser wackelkontakt befinden könnte!?

[/code]

ich nehme mal an, dass es sich um das klassische Tasterproblem handelt. Wird mehrmals monatlich angefragt. Einfach mal ins Forum schauen.

Hope it helps,

Mucki

Nighthawk91
19.02.2007, 15:58
ich finde leider nichts, auch nicht mit der boardsuche

radbruch
19.02.2007, 16:31
Die Suche ist echt quälend, versuche mal im Forum "| | |--Asuro" nach "taster AND problem" zu suchen.

damaltor
19.02.2007, 21:42
ja es scheint wirklich das normale tasterproblem zu sein. dieses problem (und das der odometrie) sind wohl die meistdiskutierten im forum.
ausserdem fragst du doppelt ab, ob PollSwitch() = 0 ist. einmal mit der if-schleife und einmal mit der while-schleife. wozu?

Nighthawk91
19.02.2007, 22:09
irgendwie hat das nicht funktioniert:
wen 0 forwärts
also hab ich geschrieben
wenn null vorwärts bis nicht mehr 0

Danjo00
20.02.2007, 02:10
versuch das mal


#include "asuro.h"

/* Um eventuelle Unterschiede zwischen linken und rechtem Motor auszugleichen
* definieren wir 2 Werte für fullspedd links und rechts
*/
#define FULL_L 250 /* Fullspeed linker Motot */
#define FULL_R 220 /* Fullspeed rechter Motor */

/* Motor vorwärts */
void MotorFwd(void)
{
MotorDir(FWD,FWD);
MotorSpeed(FULL_L,FULL_R);
}

/* Motor rückwärts */
void MotorRwd(void)
{
MotorDir(RWD,RWD);
MotorSpeed(FULL_L,FULL_R);
}

/* Motor rückwärts Links */
void MotorRwdL(void)
{
MotorDir(RWD,RWD);
MotorSpeed(FULL_L,0);
}

/* Motor rückwärts Rechts */
void MotorRwdR(void)
{
MotorDir(RWD,RWD);
MotorSpeed(0, FULL_R);
}

/* Motor stop */
void MotorStop(void)
{
MotorSpeed(0,0);
}

int main(void)
{
unsigned char t1, t2;

Init();
while(1)
{
t1 = PollSwitch();
t2 = PollSwitch();
if(t1 == 0 && t2 == 0) /* keine Taste */
{
MotorFwd(); /* vorwärts fahren */
FrontLED(ON);
BackLED(OFF,OFF);
}
else if (t1 && t2 && t1 == t2)
{
MotorStop();
if(t1 & 0x07) /* Tasten links gedrückt? */
{
MotorRwdL(); /* Rückwärtskurve links fahren */
FrontLED(OFF);
BackLED(ON,OFF);
}
if (t1 & 0x38) /* Tasten rechts gedrückt? */
{
MotorRwdR(); /* Rückwärtskurve rechts fahren */
FrontLED(OFF);
BackLED(OFF,ON);
}
Msleep(1000); /* 1 Sekunde fahren */
}
}
return 0;
}

mein linker motor geht leider nicht rückwerts deswegen kann ich es nicht ausprobieren