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 rechts

    2. 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ärts

    while (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ärts

    while (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!


Anmelden zum Antworten