-         

Ergebnis 1 bis 4 von 4

Thema: Linienverfolgung mit Stopp bei Kollision

  1. #1

    Linienverfolgung mit Stopp bei Kollision

    Anzeige

    Servus!

    Ich arbeite gerade an einem Programmcode bei dem der Asuro erst die Linienverfolgung fahren soll und wenn ein Taster, durch eine Kollision, betätigt wird soll der Asuro komplett stoppen.
    Leider läuft mein Programm nicht, kann mir eventuell jemand helfen?
    Ich habe Probleme mit den If/Else Schleifen, ich denke da liegt der Fehler.

    Hier der Programmcode:

    Code:
    /*******************************************************************************
    *
    * File Name:   LineDemo.c
    * Project  :   Demo
    *
    * Description: This file contains LineDemo features
    *
    * Ver.     Date         Author           Comments
    * -------  ----------   --------------   ------------------------------
    * 1.00     14.08.2003   Jan Grewe   build
    * 2.00     22.10.2003   Jan Grewe        angepasst auf asuro.c Ver.2.10
    *
    * Copyright (c) 2003 DLR Robotics & Mechatronics
    *****************************************************************************/
    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   any later version.                                                    *
     ***************************************************************************/
    #include "asuro.h"
    
    #define SPEED  0x8F
    
    int speedLeft,speedRight;
    unsigned int lineData[2];
    int ADOffset;
    
    void LineLeft (void)
    {
      speedLeft  += 1;      /* links mehr Gas geben */
      if (speedLeft > 0xFE) speedLeft = 0xFF;
    }
    
    void LineRight (void)
    {
      speedRight  += 1;     /* rechts mehr Gas geben */
      if (speedRight > 0xFE) speedRight = 0xFF;
    }
    
    int main(void)
    {
      int i;
      unsigned char j;
      unsigned char t1, t2;
    
      Init();
      while (1)
      
       t1 = PollSwitch();
       t2 = PollSwitch();
       if (t1 == 0 && t2 == 0)         /* keine Taste */
           {
      FrontLED(ON);
      for (j = 0; j < 0xFF; j++) LineData(lineData);
      LineData(lineData);
      ADOffset = lineData[LEFT] - lineData[RIGHT];     
      speedLeft = speedRight = SPEED;
      for(;;) {
        LineData(lineData);
        i = (lineData[LEFT] - lineData[RIGHT]) - ADOffset;
    	      }
      {
        if ( i > 4) {
          StatusLED(GREEN);
          LineLeft();
        }
    	else if ( i < -4) {
          StatusLED(RED);
          LineRight();
        }
        else {
          StatusLED(OFF);
          speedLeft = speedRight = SPEED;
        }
        MotorSpeed(speedLeft,speedRight);
      
      	if (t1 && t2 && t1 == t2)
        {
    	  MotorDir(BREAK,BREAK);
    	}
       }
      return 0;
    }
    }
    Angehängte Dateien Angehängte Dateien

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Code:
    ...
    for(;;) { 
        LineData(lineData); 
        i = (lineData[LEFT] - lineData[RIGHT]) - ADOffset; 
             }
    ...
    Das funktioniert wie ein Endlöss-schleife. Er kommt nicht mehr raus. Die letzte "}" steht dort nicht in dem originale Datei linedemo.c von das Asuro Selftest Projekt. Hast du die selbe zugefügt?

    Hier ist die originale quelcode:

    http://arexx.com/downloads/asuro/asuro_src.zip

  3. #3
    Trotz des Versetzens der Klammer fährt er immernoch nicht los.

    Ich habe versucht die vorgefertigte Linedemo mit teilen aus dem Kollisionstest zu verbinden. Aber leider immernoch ohne Erfolg.

    Hat jemand vielleicht noch einen Tipp?

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.167
    Wie genau hast du dein Programm geändert? Wo steht den Klammer nun?

Berechtigungen

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