Programming limitswitch

Hey guys,
can u please tell why the limit switch isn’t working?
It should be just activated during the preautonom phase and should use a if then funktion. Thanks!
Here is the code:

/*----------------------------------------------------------------------------*/
/*                                                                            */
/*    Module:       main.cpp                                                  */
/*    Author:       Vex                                                       */
/*    Created:      1/21/2025, 5:38:31 PM                                     */
/*    Description:  V5 project                                                */
/*                                                                            */
/*----------------------------------------------------------------------------*/

#include "vex.h"

using namespace vex;

//Brain
brain Brain;

// A global instance of competition
competition Competition;

// define your global instances of motors and other devices here
// Motoren definieren (an Ports 1, 2, 3, 4 für die Fahrt)
motor Motor1(PORT20, gearSetting::ratio18_1, false);  // Motor 1 (links vorne)
motor Motor2(PORT19, gearSetting::ratio18_1, false);  // Motor 2 (links hinten)
motor Motor3(PORT11, gearSetting::ratio18_1, false);  // Motor 3 (rechts vorne)
motor Motor4(PORT17, gearSetting::ratio18_1, false);  // Motor 4 (rechts hinten)

// Motoren für das Band (Ports 5 und 6)
motor BandMotor1(PORT16, gearSetting::ratio18_1, false);  // Motor 5 für Band vorwärts
motor BandMotor2(PORT9, gearSetting::ratio18_1, true);  // Motor 6 für Band rückwärts

// Motoren für den Arm (Ports 7 und 8)
motor ArmMotor1(PORT15, gearSetting::ratio36_1, false);  // Motor 7 für Arm (bewegt in eine Richtung)
motor ArmMotor2(PORT13, gearSetting::ratio36_1, false);  // Motor 8 für Arm (bewegt in die andere Richtung)

// Pneumatik-Setup (Solenoide für Kolben)
digital_out upone = digital_out(Brain.ThreeWirePort.A);
digital_out arm = digital_out(Brain.ThreeWirePort.B);

// limitswitch Zaehler
limit limitSwitch(Brain.ThreeWirePort.C);

// Controller definieren
controller Controller1;
/*---------------------------------------------------------------------------*/
/*                          Pre-Autonomous Functions                         */
/*                                                                           */
/*  You may want to perform some actions before the competition starts.      */
/*  Do them in the following function.  You must return from this function   */
/*  or the autonomous and usercontrol tasks will not be started.  This       */
/*  function is only called once after the V5 has been powered on and        */
/*  not every time that the robot is disabled.                               */
/*---------------------------------------------------------------------------*/

void pre_auton(void) {

  // All activities that occur before the competition starts
  // Example: clearing encoders, setting servo positions, ...

  Motor1.setVelocity(100, pct);
  Motor1.setMaxTorque(100, pct);
  Motor2.setVelocity(100, pct);
  Motor2.setMaxTorque(100, pct);
  Motor3.setVelocity(100, pct);
  Motor3.setMaxTorque(100, pct);
  Motor4.setVelocity(100, pct);
  Motor4.setMaxTorque(100, pct);
  BandMotor1.setVelocity(100, pct);
  BandMotor1.setMaxTorque(100, pct);
  BandMotor2.setVelocity(100, pct);
  BandMotor2.setMaxTorque(100, pct);
  ArmMotor1.setVelocity(100, pct);
  ArmMotor1.setMaxTorque(100, pct);
  ArmMotor2.setVelocity(100, pct);
  ArmMotor2.setMaxTorque(100, pct);

}

/*---------------------------------------------------------------------------*/
/*                                                                           */
/*                              Autonomous Task                              */
/*                                                                           */
/*  This task is used to control your robot during the autonomous phase of   */
/*  a VEX Competition.                                                       */
/*                                                                           */
/*  You must modify the code to add your own robot specific commands here.   */
/*---------------------------------------------------------------------------*/

void autonomous(void) {
  // ..........................................................................
  // Insert autonomous user code here.
  // ..........................................................................
  
      //Turm holen        
        

        BandMotor1.spin(forward);
        BandMotor2.spin(reverse);
        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(forward);      
        Motor4.spin(forward);
        task::sleep(950); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();

        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(225);
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();

        upone.set(true);
        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(forward);      
        Motor4.spin(forward);
        task::sleep(400);
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();
        upone.set(false);
        BandMotor1.spin(forward);
        BandMotor2.spin(reverse);
        // Turm holen
      

        //Stack6 holen (drinbehalten nicht auf Turm maachen)
        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(350); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();
      
  
  // Autonomer Ablauf mit Überwachung des Limit Switches
  

        Motor1.spin(forward);
        Motor2.spin(forward);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(1000); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();
        BandMotor1.stop();
        BandMotor2.stop();

        
        //Stack6 holen

        //1vonDoubleStack holen (drinbehalten nicht auf Turm maachen)
        
        BandMotor1.spin(forward);
        BandMotor2.spin(reverse);
        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(550); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();  
      
  


        Motor1.spin(forward);
        Motor2.spin(forward);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(900); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();

        
       //DoubleStackholen



        //wallstakebefüllen

        BandMotor1.stop();
        BandMotor1.stop();
        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(forward);      
        Motor4.spin(forward);
        task::sleep(300); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();  

        Motor1.spin(reverse);
        Motor2.spin(reverse);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(1000); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();  
        

        Motor1.spin(forward);
        Motor2.spin(forward);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(1500); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();

        Motor1.spin(forward);
        Motor2.spin(forward);
        Motor3.spin(forward);      
        Motor4.spin(forward);
        task::sleep(600); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();
        
        Motor1.spin(forward);
        Motor2.spin(forward);
        Motor3.spin(reverse);      
        Motor4.spin(reverse);
        task::sleep(1900); 
        Motor1.stop();
        Motor2.stop();
        Motor3.stop();
        Motor4.stop();
        
}
/*---------------------------------------------------------------------------*/
/*                                                                           */
/*                              User Control Task                            */
/*                                                                           */
/*  This task is used to control your robot during the user control phase of */
/*  a VEX Competition.                                                       */
/*                                                                           */
/*  You must modify the code to add your own robot specific commands here.   */
/*---------------------------------------------------------------------------*/

void usercontrol(void) {
  // User control code here, inside the loop
  while (1) {
    // This is the main execution loop for the user control program.
    // Each time through the loop your program should update motor + servo
    // values based on feedback from the joysticks.

    // ........................................................................
    // Insert user code here. This is where you use the joystick values to
    // update your motors, etc.
    // ........................................................................

    // Achse 1 (links/rechts) für die Vorwärtsbewegung
        int forwardSpeed = Controller1.Axis1.position();  // Achse 1 (vorwärts)

        // Achse 3 (vorwärts/rückwärts) für die Lenkung
        int turnSpeed = Controller1.Axis3.position();  // Achse 3 (lenken)

        // Vorwärtsbewegung: Alle Motoren gleich ansteuern
        Motor1.spin(directionType::fwd, forwardSpeed, velocityUnits::pct);
        Motor2.spin(directionType::fwd, forwardSpeed, velocityUnits::pct);
        Motor3.spin(directionType::fwd, forwardSpeed, velocityUnits::pct);
        Motor4.spin(directionType::fwd, forwardSpeed, velocityUnits::pct);

        // Lenkung (Drehen): Motoren links und rechts in entgegengesetzte Richtungen steuern
        if (turnSpeed != 0) {
            Motor1.spin(directionType::fwd, turnSpeed, velocityUnits::pct);
            Motor2.spin(directionType::fwd, turnSpeed, velocityUnits::pct);
            Motor3.spin(directionType::fwd, -turnSpeed, velocityUnits::pct);  // Motor 3 dreht entgegengesetzt
            Motor4.spin(directionType::fwd, -turnSpeed, velocityUnits::pct);  // Motor 4 dreht entgegengesetzt
        }

        // Steuerung der Band-Motoren mit R1 und R2
        if (Controller1.ButtonR1.pressing()) {
            // Band vorwärts drehen, wenn R1 gedrückt wird
            BandMotor1.spin(directionType::fwd, 100, velocityUnits::pct); // Vorwärts bei R1
            BandMotor2.spin(directionType::rev, 100, velocityUnits::pct); // Band rückwärts stoppen
        } 
        else if (Controller1.ButtonR2.pressing()) {
            // Band rückwärts drehen, wenn R2 gedrückt wird
            BandMotor1.spin(directionType::rev, 100, velocityUnits::pct); // Band vorwärts stoppen
            BandMotor2.spin(directionType::fwd, 100, velocityUnits::pct); // Rückwärts bei R2
        } 
        else {
            // Band stoppen, wenn keine der Tasten gedrückt wird
            BandMotor1.stop();
            BandMotor2.stop();
        }

        // Steuerung des Arm-Motors mit A, B und X
        if (Controller1.ButtonA.pressing()) {
            // Arm auf 45 Grad drehen (Motoren entgegengesetzt)
            ArmMotor1.spin(directionType::fwd, 50, velocityUnits::pct);  // Motor 1 dreht den Arm nach oben
            ArmMotor2.spin(directionType::rev, 50, velocityUnits::pct);  // Motor 2 dreht entgegengesetzt
        } 
        else if (Controller1.ButtonB.pressing()) {
            // Arm auf 0 Grad zurückdrehen
            ArmMotor1.spin(directionType::rev, 50, velocityUnits::pct);  // Motor 1 dreht den Arm nach unten
            ArmMotor2.spin(directionType::fwd, 50, velocityUnits::pct);  // Motor 2 dreht entgegengesetzt
        }
        else if (Controller1.ButtonX.pressing()) {
            // Arm auf 135 Grad drehen
            ArmMotor1.spin(directionType::fwd, 100, velocityUnits::pct);  // Motor 1 dreht den Arm nach oben
            ArmMotor2.spin(directionType::rev, 100, velocityUnits::pct);  // Motor 2 dreht entgegengesetzt
        }
        else {
            // Arm stoppen, wenn keine der Tasten gedrückt wird (Arm bleibt in Position)
            ArmMotor1.stop();
            ArmMotor2.stop();
        }
        if(Controller1.ButtonB.pressing()) {
    upone.set(true);  // Kolben ausfahren
  } else {
    upone.set(false); // Kolben einfahren
  }
  
  if(Controller1.ButtonA.pressing()) {
    arm.set(true);  // Kolben ausfahren
  } else {
    arm.set(false); // Kolben einfahren
  }

    wait(20, msec); // Sleep the task for a short amount of time to
                    // prevent wasted resources.
  }
}

//
// Main will set up the competition functions and callbacks.
//
int main() {
  // Set up callbacks for autonomous and driver control periods.
  Competition.autonomous(autonomous);
  Competition.drivercontrol(usercontrol);

  // Run the pre-autonomous function.
  pre_auton();

  // Prevent main from exiting with an infinite loop.
  while (true) {
    wait(100, msec);
  }
}

edit: code tags added by mods, please remember to use them

You define the limit switch, but never call it in the remainder of the program.

1 Like