PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mal wieder Asuro und die Taster



daandi
11.03.2006, 19:37
Hallo bin neu hier im Forum und habe folgendes Problem:

Bei laufendem Motor geben die Taster ständig 1 zurück.

Ich benutze folgendes, hier im Forum gefundenes, Testprogramm:



#include "asuro.h"
#include <stdio.h>
#include <string.h>

int main(void)
{
unsigned char sw_event;
char comment[10];

Init();
MotorDir(FWD,FWD);
MotorSpeed(200,200);
StatusLED(GREEN);

SerWrite("Hau auf die Taster\r\n", 20);

while(1){
sw_event = PollSwitch();
if (sw_event > 0){
(void)sprintf(comment, "%i\n\r", sw_event);
SerWrite(comment, strlen(comment));
}
/*
if(sw_event & 0x01) SerWrite("S 6\r\n",5);
if(sw_event & 0x02) SerWrite("S 5\r\n",5);
if(sw_event & 0x04) SerWrite("S 4\r\n",5);
if(sw_event & 0x08) SerWrite("S 3\r\n",5);
if(sw_event & 0x10) SerWrite("S 2\r\n",5);
if(sw_event & 0x20) SerWrite("S 1\r\n",5);
*/
}

return 0;
}


alles funktioniert wunderbar wenn der Motor nicht läuft.

Habe auch schon versucht die sagenumwobene "63" zu ändern. Verhaut mir aber nur die Werte von K1 bis K3.

Dank im voraus.

Archi
12.03.2006, 09:51
Hallo!

Probier' doch mal die Taster drei Mal hintereinander auszulesen, zu vergelichen, und wenn alle drei mal das gleiche kommt, den Wert zu verwenden.

CU, Robin

daandi
12.03.2006, 14:19
Funktioniert leider immer noch nicht richtig. :(

Asuro reagiert so als ob immer Taster 6 (also Rückgabewert 1) aktiviert wäre.

Blockiere ich nun den rechten Motor reagiert Asuro als ob K5 gedrückt worden wäre (also Rückgabewert 2).

Woran könnte es denn liegen?

Falsche Batterien? Kalte Lötstellen?

Fehler im Programm ?



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

while (1)
{
int poltest1 = PollSwitch();
int poltest2 = PollSwitch();
int poltest3 = PollSwitch();

if (poltest1 == poltest2 && poltest1 == poltest3)
{
if (poltest1==0) /*Keine Kollision, volle Kraft nach vorn*/
{
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(220,220);
}
else if (poltest1==32) /*Hinderniss, vorne links*/
{
StatusLED(YELLOW);
BackLED(ON,OFF);
MotorDir(FWD,RWD);
MotorSpeed(200,150);
for(count=0;count<=100;count++) {Sleep(216);};
}
else if (poltest1==1) /*Hinderniss, vorne rechts*/
{
StatusLED(YELLOW);
BackLED(OFF,ON);
MotorDir(RWD,FWD);
MotorSpeed(150,200);
for(count=0;count<=100;count++) {Sleep(216);};
}
else if (poltest1==16) /*Hinderniss, mehr vorne, weniger links*/
{
StatusLED(GREEN);
BackLED(ON,OFF);
MotorDir(RWD,RWD);
MotorSpeed(100,200);
for(count=0;count<=100;count++) {Sleep(216);};
}
else if (poltest1==2) /*Hinderniss, mehr vorne, weniger rechts*/
{
StatusLED(GREEN);
BackLED(OFF,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,100);
for(count=0;count<=100;count++) {Sleep(216);};
}
else if (poltest1==18) /*Hinderniss, vorne 90°, nach rechts abdrehen*/
{
StatusLED(YELLOW);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(200,170);
for(count=0;count<=200;count++) {Sleep(216);};
}
else
{
StatusLED(RED);
MotorDir(RWD,RWD);
MotorSpeed(170,170);
for(count=0;count<=150;count++) {Sleep(216);};
MotorDir(FWD,RWD);
MotorSpeed(170,170);
for(count=0;count<=25;count++) {Sleep(216);};
};
}
else {BackLED(OFF,OFF);}
};
return 0;
}
[/code]

daandi
16.03.2006, 14:44
Jetzt funktionierts.
Die Batterien warn schwach *schäm*.