- Labornetzteil AliExpress         
Ergebnis 1 bis 4 von 4

Thema: Linienverfolgung mit Stopp bei Kollision

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Linienverfolgung mit Stopp bei Kollision

    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

Berechtigungen

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

12V Akku bauen