mathbot
13.07.2006, 10:35
Hallo,
Ich bin fange gerade erst mit der Programmierung des Asuros an. Ich versuche ein Programm für den Asuro zu schreiben, mit dem es möglich ist, 4 verschiedene Signale (für je 4 verschiedene Fahrtrichtungen) einer Fernbedienung zu speichern und auf diese später richtig zu reagieren. Leider funktionert dieses Programm noch nicht ganz. Kann mir vielleicht jemand helfen und mir sagen, was ich falsch gemacht habe?
/*
NAME: Fernbedinung.c
Autor: Matthias Hüther
Beschreibung: Programm zur Steuerung der Asuros mittels einer TV-Fernbedienung.
Es werden 4 Signale für je 4 Fahrtrichtungen gespeichert.
Anschließend soll der Asuro auf die 4 Signale entsprechend reagieren.
*/
#include "asuro.h"
unsigned char right[20], left[20], fwd[20], back[20], signal[20];
int i, a;
void pre(void){
for(i=0;i<=100;i++) Sleep(255); //vorbeireiten auf neues signal
MotorDir(BREAK,BREAK);
StatusLED(RED);
}
void checkok(void){ //bei erhalt des Signals blinken
a = 3;
while(a<=3){
StatusLED(GREEN);
BackLED(ON,ON);
FrontLED(ON);
for(i=0;i<=40;i++)
Sleep(255);
BackLED(OFF,OFF);
FrontLED(OFF);
for(i=0;i<=40;i++)
Sleep(255);
a++;
}
}
int main(void)
{
Init();
//lerne Signal für rechts
MotorDir(FWD,RWD);
MotorSpeed(250,250);
pre();
SerRead(right,20,0);
checkok();
//lerne Signal für links
MotorDir(RWD,FWD);
MotorSpeed(250,250);
pre();
SerRead(left,20,0);
checkok();
//lerne Signal für vor
MotorDir(FWD,FWD);
MotorSpeed(250,250);
pre();
SerRead(fwd,20,0);
checkok();
//lerne Signal für back
MotorDir(RWD,RWD);
MotorSpeed(250,250);
pre();
SerRead(back,20,0);
checkok();
while(1){
//fahre auf signal
pre();
SerRead(signal,20,0);
if(signal==right){
StatusLED(GREEN);
MotorDir(FWD,RWD);
MotorSpeed(250,250);
for(i=0;i<=100;i++) Sleep(255);
}
if(signal==left){
StatusLED(GREEN);
MotorDir(RWD,FWD);
MotorSpeed(250,250);
for(i=0;i<=100;i++) Sleep(255);
}
if(signal==fwd){
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(250,250);
}
if(signal==left){
StatusLED(GREEN);
MotorDir(RWD,RWD);
MotorSpeed(250,250);
}
}
return 0;
}
Gruß Mathbot
Ich bin fange gerade erst mit der Programmierung des Asuros an. Ich versuche ein Programm für den Asuro zu schreiben, mit dem es möglich ist, 4 verschiedene Signale (für je 4 verschiedene Fahrtrichtungen) einer Fernbedienung zu speichern und auf diese später richtig zu reagieren. Leider funktionert dieses Programm noch nicht ganz. Kann mir vielleicht jemand helfen und mir sagen, was ich falsch gemacht habe?
/*
NAME: Fernbedinung.c
Autor: Matthias Hüther
Beschreibung: Programm zur Steuerung der Asuros mittels einer TV-Fernbedienung.
Es werden 4 Signale für je 4 Fahrtrichtungen gespeichert.
Anschließend soll der Asuro auf die 4 Signale entsprechend reagieren.
*/
#include "asuro.h"
unsigned char right[20], left[20], fwd[20], back[20], signal[20];
int i, a;
void pre(void){
for(i=0;i<=100;i++) Sleep(255); //vorbeireiten auf neues signal
MotorDir(BREAK,BREAK);
StatusLED(RED);
}
void checkok(void){ //bei erhalt des Signals blinken
a = 3;
while(a<=3){
StatusLED(GREEN);
BackLED(ON,ON);
FrontLED(ON);
for(i=0;i<=40;i++)
Sleep(255);
BackLED(OFF,OFF);
FrontLED(OFF);
for(i=0;i<=40;i++)
Sleep(255);
a++;
}
}
int main(void)
{
Init();
//lerne Signal für rechts
MotorDir(FWD,RWD);
MotorSpeed(250,250);
pre();
SerRead(right,20,0);
checkok();
//lerne Signal für links
MotorDir(RWD,FWD);
MotorSpeed(250,250);
pre();
SerRead(left,20,0);
checkok();
//lerne Signal für vor
MotorDir(FWD,FWD);
MotorSpeed(250,250);
pre();
SerRead(fwd,20,0);
checkok();
//lerne Signal für back
MotorDir(RWD,RWD);
MotorSpeed(250,250);
pre();
SerRead(back,20,0);
checkok();
while(1){
//fahre auf signal
pre();
SerRead(signal,20,0);
if(signal==right){
StatusLED(GREEN);
MotorDir(FWD,RWD);
MotorSpeed(250,250);
for(i=0;i<=100;i++) Sleep(255);
}
if(signal==left){
StatusLED(GREEN);
MotorDir(RWD,FWD);
MotorSpeed(250,250);
for(i=0;i<=100;i++) Sleep(255);
}
if(signal==fwd){
StatusLED(GREEN);
MotorDir(FWD,FWD);
MotorSpeed(250,250);
}
if(signal==left){
StatusLED(GREEN);
MotorDir(RWD,RWD);
MotorSpeed(250,250);
}
}
return 0;
}
Gruß Mathbot