Hallo Martin,
wahrscheinlich sind bei deinem Asuro ein paar Widerstände vertauscht, oder ein Schalter kurzgeschlossen.
Ich habe mal das Testprogramm soweit geändert, daß der Tastenwert über die IR Schnittstelle zum PC gesendet wird.
Dieses Programm bitte übersetzten und flashen.
Danach den Asuro am besten aufbocken, damit er nicht wegfährt.
Ein Terminalprogramm starten, z.B HyperTerminal.
Den IR Transceiver über den Asuro halten.
Die Ausgaben auf dem Terminalfenster beobachten.
Wenn keine Taste gedrückt wurde, sollte auch keine Ausgabe erfolgen.
Tasten drücken -> entsprechende Zahlen sollten erscheinen:
K1 -> 32
K2 -> 16
K3 -> 8
K4 -> 3
K5 -> 2
K6 -> 1
Das ganze mehrmals wiederholen. Es kann sein, daß anstelle K1 ->32, K1 ->33 ausgegeben wird. Das hat dann aber mit Widerstandstoleranzen zu tun, und kann per Software korrigiert werden.
Gruß PeterCode:#include <string.h>
#include "asuro.h"
void PrintInt(int wert)
{ char text[33];
itoa(wert,text,10);
SerWrite(text,strlen(text));
}
void Msleep(int dauer)
{
int z;
for(z=0;z<dauer;z++) Sleep(36);
}
int main(void)
{
unsigned char taste;
Init();
while(1)
{
taste = PollSwitch();
if(taste == 0) /* keine Taste */
{
MotorDir(FWD,FWD);
MotorSpeed(150,150); /* vorwaerts fahren */
}
else /* irgendeine Taste gedrueckt */
{
MotorSpeed(0,0); /* anhalten */
PrintInt(taste); /* Tastenwert senden */
SerWrite("\r\n", 2); /* Zeilenvorschub */
Msleep(500); /* halbe Sekunde warten */
/* todo: ein Stück rueckwarts fahren, nach rechts oder links ausweichen */
}
}
}