Asuro morse code lesen
-
Hallo Leute bin neu hier und vielleicht könnt ihr mir helfen
1. mein ziel ist es den asuro über einen morse code fahren zu lassen in erkennt und dann gewisse dinge macht je nach eingelesenen morse code zb. wenn der Buchstabe A und die Zahl 4 gelesen wird dann fahr 100cm gerade aus dann 200cm nach rechts2. mein Problem wie lese ich den morse code aus ?!
3. meine lösung:
#include "asuro.h"
#include "time.h"
#include "stdbool.h"#define CLOCK_ENABLED 1
int status = 0;
bool search = 1;
int sensor;
int sensorAlt;
int Runtime;
int zwZeit;
int Zeit;
int xKor[5];
int yKor[5];
int xPos=0;
int yPos=0;
int xVal;
int yVal;
int i;
int main(void)
{
time_t timer;
unsigned int data[2]; //Speicher bereitstellen
Init();
StatusLED(GREEN);
FrontLED(ON); // Linienbeleuchtung einschalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(84,80); // Beide Motoren auf vorwärtswhile (search == 1);
{
LineData(data);sensor = (data [0]); // Hell dunkel unterscheidung auf Sensor übertragen// Annahme: Schwarz = 1 Weiss = 0
switch (status)
{
case 0: // Initialisieren
{
// Wert von Sensor als logisch 1 oder 0 an Variable übergeben !
sensorAlt = sensor;
status = 10;
break;
}case 10: // Suche X Koordinate
{
if (sensorAlt < sensor)
{
zwZeit = time(&timer);; // zwzeit = Zwischenzeit zur ermitlung der pulsdauer
sensorAlt = sensor;
status = 11;
}
break;
}case 11: // Code X gefunden
{
if (sensorAlt > sensor)
{
Zeit = time - zwZeit;
if ( Zeit > 1000) // Einzufügender Wert (Mittelwert zwischen 1 und 0)
xKor[xPos] = 1;
xPos++;
}else
{
xKor[xPos] = 0;
xPos++;
}if (xPos > 4)
{
status = 20;
}else
{
status = 10;
}
sensorAlt=sensor;
Runtime=0;break;
}case 20: // Suche Y Koordinate
{
if (sensorAlt < sensor)
{
zwZeit = Runtime;
sensorAlt = sensor;
status = 21;
}
break;
}case 21: // Code y gefunden
{
if (sensorAlt > sensor)
{
Zeit = Runtime - zwZeit;
if ( Zeit > 1) // Einzufügender Wert (Mittelwert zwischen 1 und 0)
{
yKor[xPos] = 1;
yPos++;
}else
{
yKor[xPos] = 0;
yPos++;
}if (yPos > 4)
{
status = 30;
}else
{
status = 20;
}sensorAlt=sensor;
Runtime=0;
}
break;
}case 30: // X und Y Koordinate gefunden
{
for ( i=0; i>4;i++)
{
if (xKor[i] == 1)
{
xVal = i;
break;
}
}for ( i=0; i>4;i++)
{
if (yKor[i] == 1)
{
yVal = i;
break;
}
}search=false;
break;
}
}}
Runtime = Runtime + 1;
switch (xVal) // Holt den ausgewerteten Wert von xKor
{
case 0: // Ist der Wert von xKor 0 dann ist ausgabe Wert für X Achse .....
{ MotorDir(FWD,FWD);
MotorSpeed(150,150); //Wert für null einfügen
break;
}case 1:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//Wert für 1 einfügen;
break;
}
case 2:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//Wert für 2 einfügen;
break;
}case 3:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//wert für 3 einfügen;
break;
}case 4:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//Wert für 4 einfügen;
break;
}}
switch (yVal) // Holt den ausgewerteten Wert von yKor
{
case 0: // Ist der Wert von xKor 0 dann ist ausgabe Wert für X Achse .....
{ MotorDir(FWD,FWD);
MotorSpeed(255,255);//Wert für null einfügen
break;
}case 1:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//Wert für 1 einfügen;
break;
}case 2:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//Wert für 2 einfügen;
break;
}case 3:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//wert für 3 einfügen;
break;
}case 4:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//Wert für 4 einfügen;
break;
}}
return 0;
}4. was macht der Asuro mit diesem C code:
Er fährt einfach drüber und danach gahrnichts
-
#include "asuro.h"
#include "stdbool.h"
int status = 0;
bool search = 1;
int sensor;
int sensorAlt;
int Runtime;
int zwZeit;
int Zeit;
int xKor[5];
int yKor[5];
int xPos=0;
int yPos=0;
int xVal;
int yVal;
int i;
int main(void)
{
unsigned int data[2]; //Speicher bereitstellen
Init();
StatusLED(GREEN);
FrontLED(ON); // Linienbeleuchtung einschalten
MotorDir(FWD,FWD); // Beide Motoren auf vorwärts
MotorSpeed(84,80); // Beide Motoren auf vorwärtswhile (search == 1);
{
LineData(data);sensor = (data [0]); // Hell dunkel unterscheidung auf Sensor übertragen// Annahme: Schwarz = 1 Weiss = 0
switch (status)
{
case 0: // Initialisieren
{
// Wert von Sensor als logisch 1 oder 0 an Variable übergeben !
sensorAlt = sensor;
status = 10;
break;
}case 10: // Suche X Koordinate
{
if (sensorAlt < sensor)
{
zwZeit = Runtime; // zwzeit = Zwischenzeit zur ermitlung der pulsdauer
sensorAlt = sensor;
status = 11;
}
break;
}case 11: // Code X gefunden
{
if (sensorAlt > sensor)
{
Zeit = Runtime - zwZeit;
if ( Zeit > 1000) // Einzufügender Wert (Mittelwert zwischen 1 und 0)
xKor[xPos] = 1;
xPos++;
}else
{
xKor[xPos] = 0;
xPos++;
}if (xPos > 4)
{
status = 20;
}else
{
status = 10;
}
sensorAlt=sensor;
Runtime=0;break;
}case 20: // Suche Y Koordinate
{
if (sensorAlt < sensor)
{
zwZeit = Runtime;
sensorAlt = sensor;
status = 21;
}
break;
}case 21: // Code y gefunden
{
if (sensorAlt > sensor)
{
Zeit = Runtime - zwZeit;
if ( Zeit > 1) // Einzufügender Wert (Mittelwert zwischen 1 und 0)
{
yKor[xPos] = 1;
yPos++;
}else
{
yKor[xPos] = 0;
yPos++;
}if (yPos > 4)
{
status = 30;
}else
{
status = 20;
}sensorAlt=sensor;
Runtime=0;
}
break;
}case 30: // X und Y Koordinate gefunden
{
for ( i=0; i>4;i++)
{
if (xKor[i] == 1)
{
xVal = i;
break;
}
}for ( i=0; i>4;i++)
{
if (yKor[i] == 1)
{
yVal = i;
break;
}
}search=false;
break;
}
}}
Runtime = Runtime + 1;
switch (xVal) // Holt den ausgewerteten Wert von xKor
{
case 0: // Ist der Wert von xKor 0 dann ist ausgabe Wert für X Achse .....
{ MotorDir(FWD,FWD);
MotorSpeed(150,150); //Wert für null einfügen
break;
}case 1:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//Wert für 1 einfügen;
break;
}
case 2:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//Wert für 2 einfügen;
break;
}case 3:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//wert für 3 einfügen;
break;
}case 4:
{ MotorDir(FWD,FWD);
MotorSpeed(0,150);//Wert für 4 einfügen;
break;
}}
switch (yVal) // Holt den ausgewerteten Wert von yKor
{
case 0: // Ist der Wert von xKor 0 dann ist ausgabe Wert für X Achse .....
{ MotorDir(FWD,FWD);
MotorSpeed(255,255);//Wert für null einfügen
break;
}case 1:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//Wert für 1 einfügen;
break;
}case 2:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//Wert für 2 einfügen;
break;
}case 3:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//wert für 3 einfügen;
break;
}case 4:
{ MotorDir(FWD,FWD);
MotorSpeed(150,0);//Wert für 4 einfügen;
break;
}}
return 0;
}
-
[code]-Tags fehlen!