-         

Ergebnis 1 bis 2 von 2

Thema: programmfrage

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.09.2006
    Ort
    Hameln
    Beiträge
    15

    programmfrage

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    wie würdet ihr folgende beiden programme miteinander verschmelzen?

    PROGRAMM 1
    #include "asuro.h"

    #define SPEED 0x8F

    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;

    void LineLeft (void)
    {
    speedLeft += 1;
    if (speedLeft > 0xFE) speedLeft = 0xFF;
    }

    void LineRight (void)
    {
    speedRight += 1;
    if (speedRight > 0xFE) speedRight = 0xFF;
    }

    void LineDemo(void)
    {
    int i;
    unsigned char j;

    Init();

    FrontLED(ON);
    for (j = 0; j < 0xFF; j++) LineData(lineData);
    LineData(lineData);
    ADOffset = lineData[0] - lineData[1];
    speedLeft = speedRight = SPEED;
    for(;;) {
    LineData(lineData);
    i = (lineData[0] - lineData[1]) - ADOffset;
    if ( i > 4) {
    StatusLED(GREEN);
    LineLeft();
    }
    else if ( i < -4)
    StatusLED(RED);
    LineRight();
    }
    else {
    StatusLED(OFF);
    speedLeft = speedRight = SPEED;
    }
    MotorSpeed(speedLeft,speedRight);
    }
    }

    Dieses Programm ist ein Kollisionsprogramm, stößt Asuro auf einen Gegenstand, fährt er entweder rückwärtskurve links bzw. rückwärtskurve rechts und fährt dann wieder geradeaus...


    PROGRAMM 2:
    #include "asuro.h"

    #define SPEED 0x8F

    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;

    void LineLeft (void)
    {
    speedLeft += 1;
    if (speedLeft > 0xFE) speedLeft = 0xFF;
    }

    void LineRight (void)
    {
    speedRight += 1;
    if (speedRight > 0xFE) speedRight = 0xFF;
    }

    void LineDemo(void)
    {
    int i;
    unsigned char j;

    Init();

    FrontLED(ON);
    for (j = 0; j < 0xFF; j++) LineData(lineData);
    LineData(lineData);
    ADOffset = lineData[0] - lineData[1];
    speedLeft = speedRight = SPEED;
    for(;;) {
    LineData(lineData);
    i = (lineData[0] - lineData[1]) - ADOffset;
    if ( i > 4) {
    StatusLED(GREEN);
    LineLeft();
    }
    else if ( i < -4)
    StatusLED(RED);
    LineRight();
    }
    else {
    StatusLED(OFF);
    speedLeft = speedRight = SPEED;
    }
    MotorSpeed(speedLeft,speedRight);
    }
    }

    Dies ist das typische Linienverfolgungsprogramm...

    Ich möchte jetzt beide miteinander verschmelzen... wenn asuro seine linie verfolgt und auf einen gegenstand stößt, soll er, je nachdem welcher schalter betätigt wird, entweder rückwärtskurve links oder rückwärtskurve rechts ca. 5cm fahren und dann geradeaus weiter und sobald er wieder die linie findet diese weiterverfolgen!
    bitte helft mir hab da arge probleme mein selbstgeproggtes funzt einfach net!

    mfg the-boon-

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    01.11.2006
    Beiträge
    433
    also schreib halt einfache iene funktion check_sensors, bei der er
    (1) die linienenroen ausliest und
    (2) die taster ausliest
    die ergebnisse schreibst du in eine globales arrey sensor_status. dann kannst du das ergebnis auswerten und dementsprechend handeln.

    mfg EDH

    ps nim für code den du hoier postest bitte den code button

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •