PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro erlernt Signal einer Fernbedienung



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

mathbot
13.07.2006, 17:14
Hat denn keiner eine Idee?????
Soweit funzt das Programm ja. Er speichert die 4 verschiedenen Signale ab.. und ... naja dann kommt das eigentliche Problem: Er erkennt anscheinend kein Signal wieder. Woran kann das liegen?

m.a.r.v.i.n
14.07.2006, 10:14
Hallo mathbot,

ich glaub nicht, dass das so funktionieren kann. Eine Fernbedienung sendet ja keine UART Signale sondern z.B. RC5 Code. Wenn dir diese Begriffe nichts sagen, solltest du mal danach googlen oder hier im Forum oder im Wiki danach suchen.

Hast du dir den Beispielcode 'IRDemo.c' auf der Asuro CD mal angeschaut?
Das Programm könnte man entsprechend anpassen, um damit dem Asuro Fernbedien Codes anzulernen.

Hier gibt es auch einen Thread (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=13478) zu dem gleichen Thema.

Gruß m.a.r.v.i.n

mathbot
14.07.2006, 10:23
Oh supa O:)
Vielen dank.. ich kenn mich damit noch nicht so besonders aus.
Werde mich jetzt mal genauer informieren