Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   2002 FRC Controller... (http://www.chiefdelphi.com/forums/showthread.php?t=68458)

gallo26 17-07-2008 21:21

Re: 2002 FRC Controller...
 
Ok Mark,

I put in the code and it downloaded correctly. but after i did a power cycle on the robot, it said that there was a basic error. so im not sure what the problem was. the code compiled without errors. so im not sure what happened. would you have any ideas? thanks!

Mark McLeod 17-07-2008 21:40

Re: 2002 FRC Controller...
 
That's usually a problem with the Serin/Serout commands.

I just downloaded a version of your code into a controller and it's running okay. I don't have any motors hooked up though, so no promises on what your robot will do once you get past this error.

Post your code and let's have a quick look.

gallo26 17-07-2008 21:44

Re: 2002 FRC Controller...
 
Ok well here is the code i tried. i cleaned it up a lot so other's can look and see what i have done for other robots.

Hopefully you can spot the problem...

Code:

' PROGRAM:    CK4 Full Size Code
'{$PORT COM4}
' Written by: B Gallo
' Date:      2008 Jul 14
'
' Define BS2-SX Project Files
'
' {$STAMP BS2sx}

















'=============================================================================================================
'========== DECLARE VARIABLES ================================================================================
'=============================================================================================================
        '  Below is a list of declared input and output variables.  Comment or un-comment
        '  the variables as needed.  Declare any additional variables required in
        '  your main program loop.  Note that you may only use 26 total variables.


'---------- Operator Interface (OI) - Analog Inputs ----------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        p1_x                VAR byte        'Port 1, X-axis on Joystick        Primary Driver Steering
        'p2_x                VAR byte        'Port 2, X-axis on Joystick        n/a
        p3_x                VAR byte        'Port 3, X-axis on Joystick        Secondary Driver Moni Krunch Steering
        'p4_x                VAR byte        'Port 4, X-axis on Joystick        n/a
       
        p1_y                VAR byte        'Port 1, Y-axis on Joystick        Primary Driver Forward/Reverse
        'p2_y                VAR byte        'Port 2, Y-axis on Joystick        n/a
        p3_y                VAR byte        'Port 3, Y-axis on Joystick        Secondary Driver Mini Krunch Forward/Reverse
        'p4_y                VAR byte        'Port 4, Y-axis on Joystick        n/a
       
        'p1_wheel        VAR byte        'Port 1, Wheel on Joystick        n/a
        'p2_wheel        VAR byte        'Port 2, Wheel on Joystick        n/a
        'p3_wheel        VAR byte        'Port 3, Wheel on Joystick        n/a
        'p4_wheel        VAR byte        'Port 4, Wheel on Joystick        n/a
       
        'p1_aux                VAR byte        'Port 1, Aux on Joystick        n/a
        'p2_aux                VAR byte        'Port 2, Aux on Joystick        n/a
        'p3_aux                VAR byte        'Port 3, Aux on Joystick        n/a
        'p4_aux                VAR byte        'Port 4, Aux on Joystick        n/a
       
       
       
'---------- Operator Interface - Digital Inputs --------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        oi_swA                VAR byte        'OI Digital Switch Inputs 1 thru 8
        oi_swB                VAR byte        'OI Digital Switch Inputs 9 thru 16
       
       
       
'---------- Robot Controller (RC) - Analog Inputs ------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        sensor1                VAR byte        'RC Analog Input 1, connector pin 2        Steering Potentiometer
        'sensor2        VAR byte        'RC Analog Input 2, connector pin 16
        'sensor3        VAR byte        'RC Analog Input 3, connector pin 5
        'sensor4        VAR byte        'RC Analog Input 4, connector pin 19
        'sensor5        VAR byte        'RC Analog Input 5, connector pin 8
        'sensor6        VAR byte        'RC Analog Input 6, connector pin 22
        'sensor7        VAR byte        'RC Analog Input 7, connector pin 11
        'bat_volt        VAR byte        'RC Analog Input 8, hardwired to the Battery
                                        'Vin = ((4.7/14.7)* Battery voltage)-0.4
                                        'Binary Battery Voltage = (Vin/5.0 V)*255
       
       
       
       
'---------- Robot Controller - Digital Inputs ----------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        rc_swA                VAR byte        'RC Digital Inputs 1 thru 8
        rc_swB                VAR byte        'RC Digital Inputs 9 thru 16
       
       
       
       
       
'---------- Robot Controller - Digital Outputs ---------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        relayA                VAR byte
        relayB                VAR byte
       
       
       
       
'---------- Robot Controller PWM Outputs ---------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        PWM1                VAR byte
        PWM2                VAR byte
        PWM3                VAR byte
        PWM4                VAR byte
        PWM5                VAR byte
        PWM6                VAR byte
        PWM7                VAR byte 
       
       
       
       
'---------- Misc. --------------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        packet_num        VAR byte
        'delta_t        VAR byte
        PB_mode                VAR byte
        emergency_stop        VAR byte        'Stop Robot until Power Cycle
        pressure_switch        VAR byte        'turn on Relay LED when robot is Pressurized
       
       
       










       
'=============================================================================================================
'========== DEFINE ALIASES ===================================================================================
'=============================================================================================================
        '  Aliases are variables which are sub-divisions of variables defined
        '  above.  Aliases don't require any additional RAM.




'---------- Aliases for each OI switch input -----------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  Below are aliases for the digital inputs located on the Operator Interface.
        '  Ports 1 & 3 have their inputs duplicated in ports 4 & 2 respectively.  The
        '  inputs from ports 1 & 3 may be disabled via the 'Disable' dip switch
        '  located on the Operator Interface.  See Users Manual for details.
       
        p1_sw_trig        VAR oi_swA.bit0        'Joystick Trigger Button, same as Port4 pin5        n/a
        p1_sw_top        VAR oi_swA.bit1        'Joystick Top Button,    same as Port4 pin8        n/a
        p1_sw_aux1        VAR oi_swA.bit2        'Aux input,              same as Port4 pin9        n/a
        p1_sw_aux2        VAR oi_swA.bit3        'Aux input,              same as Port4 pin15        n/a
       
        p3_sw_trig        VAR oi_swA.bit4        'Joystick Trigger Button, same as Port2 pin5        n/a
        p3_sw_top        VAR oi_swA.bit5        'Joystick Top Button,    same as Port2 pin8        n/a
        p3_sw_aux1        VAR oi_swA.bit6        'Aux input,              same as Port2 pin9        n/a
        p3_sw_aux2        VAR oi_swA.bit7        'Aux input,              same as Port2 pin15        n/a
       
        p2_sw_trig        VAR oi_swB.bit0        'Joystick Trigger Button                        Switch to High Gear
        p2_sw_top        VAR oi_swB.bit1        'Joystick Top Button                                Switch to Low Gear
        p2_sw_aux1        VAR oi_swB.bit2        'Aux input                                        n/a
        p2_sw_aux2        VAR oi_swB.bit3        'Aux input                                        Emergency Stop
       
        p4_sw_trig        VAR oi_swB.bit4        'Joystick Trigger Button                        Release Mini Krunch
        p4_sw_top        VAR oi_swB.bit5        'Joystick Top Button                                Open Left Claw
        p4_sw_aux1        VAR oi_swB.bit6        'Aux input                                        Open Right Claw
        p4_sw_aux2        VAR oi_swB.bit7        'Aux input                                        Emergency Stop
       
       
       
       
'---------- Aliases for each RC switch input -----------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  Below are aliases for the digital inputs located on the Robot Controller.
       
        rc_sw1                VAR rc_swA.bit0                'Pressure Switch
        rc_sw2                VAR rc_swA.bit1                'n/a
        rc_sw3                VAR rc_swA.bit2                'n/a
        rc_sw4                VAR rc_swA.bit3                'n/a
        rc_sw5                VAR rc_swA.bit4                'n/a
        rc_sw6                VAR rc_swA.bit5                'n/a
        rc_sw7                VAR rc_swA.bit6                'n/a
        rc_sw8                VAR rc_swA.bit7                'n/a
        rc_sw9                VAR rc_swB.bit0                'n/a
        rc_sw10                VAR rc_swB.bit1                'n/a
        rc_sw11                VAR rc_swB.bit2                'n/a
        rc_sw12                VAR rc_swB.bit3                'n/a
        rc_sw13                VAR rc_swB.bit4                'n/a
        rc_sw14                VAR rc_swB.bit5                'n/a
        rc_sw15                VAR rc_swB.bit6                'n/a
        rc_sw16                VAR rc_swB.bit7                'n/a
       
       
       
       
'---------- Aliases for each RC Relay outputs ----------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  Below are aliases for the relay outputs located on the Robot Controller.
       
        relay1_fwd        VAR RelayA.bit0                'Compressor
        relay1_rev        VAR RelayA.bit1                'n/a
        relay2_fwd        VAR RelayA.bit2                'High Gear
        relay2_rev        VAR RelayA.bit3                'Low Gear
        relay3_fwd        VAR RelayA.bit4                'Open Left Claw
        relay3_rev        VAR RelayA.bit5                'Close Left Claw
        relay4_fwd        VAR RelayA.bit6                'Open Right Claw
        relay4_rev        VAR RelayA.bit7                'Close Right Claw
       
        relay5_fwd        VAR RelayB.bit0                'Team Color Light
        relay5_rev        VAR RelayB.bit1                'n/a
        relay6_fwd        VAR RelayB.bit2                'n/a
        relay6_rev        VAR RelayB.bit3                'n/a
        relay7_fwd        VAR RelayB.bit4                'n/a
        relay7_rev        VAR RelayB.bit5                'n/a
        relay8_fwd        VAR RelayB.bit6                'n/a
        relay8_rev        VAR RelayB.bit7                'n/a
       
       
       
       
'---------- Aliases for the Pbasic Mode Byte (PB_mode) -------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  Bit 7 of the PB_mode byte (aliased as comp_mode below) indicates the status
        '  of the Competition Control, either Enabled or Disabled.  This indicates the
        '  starting and stopping of rounds at the competitions.
        '  Comp_mode is indicated by a solid "Disabled" LED on the Operator Interface.
        '  Comp_mode = 1 for Enabled, 0 for Disabled.
        '
        '  Bit 6 of the PB_mode byte (aliased as auton_mode below) indicates the status
        '  of the Autonomous Mode, either Autonomous or Normal.  This indicates when
        '  the robot must run on its own programming.  When in Autonomous Mode, all
        '  OI analog inputs are set to 127 and all OI switch inputs are set to 0 (zero).
        '  Auton_mode is indicated by a blinking "Disabled" LED on the Operator Interface.
        '  Auton_mode = 1 for Autonomous, 0 for Normal.
        '
        '  Autonomous Mode can be turned ON by setting the RC to Team 0 (zero).
        '
        '  Bit 5 of the PB_mode byte (aliased as user_display_mode below) indicates when
        '  the user selects the "User Mode" on the OI.  PB_mode.bit5 is set to 1 in "User Mode".
        '  When the user selects channel, team number, or voltage, PB_mode.bit5 is set to 0
        '  When in "User Mode", the eight Robot Feedback LED are turned OFF.
        '  Note: "User Mode" is identified by the letter u in the left digit (for 4 digit OI's)
        '  Note: "User Mode" is identified by decimal places on the right two digits (for 3 digit OI's)
       
        comp_mode                VAR PB_mode.bit7
        auton_mode                VAR PB_mode.bit6
        user_display_mode        VAR PB_mode.bit5
       
       
       




       
'=============================================================================================================
'========= DEFINE CONSTANTS FOR INITIALIZATION ===============================================================
'=============================================================================================================
        '  The initialization code is used to select the input data used by PBASIC.
        '  The Master micro-processor (uP) sends the data you select to the BS2SX
        '  PBASIC uP.  You may select up to 26 constants, corresponding
        '  to 26 variables, from the 32 available to you.  Make sure that you have
        '  variables for all the bytes recieved in the serin command.
        '
        '  The constants below have a "c_" prefix, as compared to the variables that
        '  they will represent.
        '
        '  Set the Constants below to 1 for each data byte you want to recieve.
        '  Set the Constants below to 0 for the unneeded data bytes.
       
       
       
'---------- Set the Initialization constants you want to read ------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        c_p1_y                                CON        1
        c_p2_y                                CON        0       
        c_p3_y                                CON        1
        c_p4_y                                CON        0       
       
        c_p1_x                                CON        1
        c_p2_x                                CON        0       
        c_p3_x                                CON        1
        c_p4_x                                CON        0       
       
        c_p1_wheel                        CON        0
        c_p2_wheel                        CON        0       
        c_p3_wheel                        CON        0
        c_p4_wheel                        CON        0       
       
        c_p1_aux                        CON        0       
        c_p2_aux                        CON        0       
        c_p3_aux                        CON        0       
        c_p4_aux                        CON        0       
       
        c_oi_swA                        CON        1
        c_oi_swB                        CON        1
       
        c_sensor1                        CON        1
        c_sensor2                        CON        0
        c_sensor3                        CON        0
        c_sensor4                        CON        0
        c_sensor5                        CON        0
        c_sensor6                        CON        0
        c_sensor7                        CON        0
        c_batt_volt                        CON        0
       
        c_rc_swA                        CON        1
        c_rc_swB                        CON        1
       
        c_delta_t                        CON        0
        c_PB_mode                        CON        1
        c_packet_num                        CON        1
        c_res01                                CON        0
       
       
       
'---------- Initialization Constant VOLTAGE - USER DEFINED ---------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This is the 'Low Battery' detect voltage.  The 'Low Battery' LED will
        '  blink when the voltage drops below this value.
        '  Basically, the value = ((DESIRED FLASH VOLTAGE * 16.46) - 8.35)
        '  Example, for a 6.5 Volt Flash trigger, set value = 99.
       
        dataInitVolt                        CON        140
       
       
       





       
'=============================================================================================================
'========== DEFINE CONSTANTS (DO NOT CHANGE) =================================================================
'=============================================================================================================
        ' Baud rate for communications with User CPU
        OUTBAUD                                CON        20        '(62500, 8N1, Noninverted)
        INBAUD                                CON        20        '(62500, 8N1, Noninverted)
       
        USERCPU                                CON        4
        FPIN                                CON        1
        COMA                                CON        1
        COMB                                CON        2
        COMC                                CON        3
       
       




       
'=============================================================================================================
'========== MAIN PROGRAM =====================================================================================
'=============================================================================================================



'---------- Input & Output Declarations ----------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        Output                COMB
        Input                COMA
        Input                COMC
       
        Output                7        'define Basic Run LED on RC => out7
       
        Output              8        'define Robot Feedback LED => out8  => PWM1 Green
        Output              9        'define Robot Feedback LED => out9  => PWM1 Red
        Output              10        'define Robot Feedback LED => out10 => PWM2 Green
        Output              11        'define Robot Feedback LED => out11 => PWM2 Red
        Output              12        'define Robot Feedback LED => out12 => Relay1 Red
        Output              13        'define Robot Feedback LED => out13 => Relay1 Green
        Output              14        'define Robot Feedback LED => out14 => Relay2 Red
        Output              15        'define Robot Feedback LED => out15 => Relay2 Green
       
       
'---------- Initialize Inputs & Outputs ----------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        Out7  = 1                'Basic Run LED on RC
        Out8  = 0                'PWM1 LED - Green
        Out9  = 0                'PWM1 LED - Red
        Out10 = 0                'PWM2 LED - Green
        Out11 = 0                'PWM2 LED - Red
        Out12 = 0                'Relay1 LED - Red
        Out13 = 0                'Relay1 LED - Green
        Out14 = 0                'Relay2 LED - Red
        Out15 = 0                'Relay2 LED - Green
       
       
       
'=============================================================================================================
'========== PBASIC - MASTER uP INITIALIZATION ROUTINE ========================================================
'=============================================================================================================
        '  DO NOT CHANGE THIS!  DO NOT MOVE THIS!
        '  The init routine sends 5 bytes to the Master uP, defining which data bytes to receive.
        '  1)  Collect init.
        '  2)  Lower the COMA line, which is the clk line for the shift out command.
        '  3)  Lower COMB line to tell pic that we are ready to send init data.
        '  4)  Wait for pic to lower the COMC line, signaling pic is ready for data.
        '  5)  Now send out init dat to pic, all 5 bytes.
        '  6)  Now set direction and levels for the COMA and COMB pins.
       
        tempA                CON        c_p3_x <<1 + c_p4_x <<1 + c_p1_x <<1 + c_p2_x <<1 + c_rc_swB
        dataInitA        CON        tempA <<1 + c_rc_swA <<1 + c_oi_swB <<1 + c_oi_swA
        tempB                CON        c_sensor4 <<1 + c_sensor3 <<1 + c_p1_y <<1 + c_p2_y <<1 + c_sensor2
        dataInitB        CON        tempB <<1 + c_sensor1 <<1 + c_packet_num <<1 + c_PB_mode
        tempC                CON        c_batt_volt <<1 + c_sensor7 <<1 + c_p1_wheel <<1 + c_p2_wheel <<1 + c_sensor6
        dataInitC        CON        tempC <<1 + c_sensor5 <<1 + c_p3_y <<1 + c_p4_y
        tempD                CON        c_res01 <<1 + c_delta_t <<1 + c_p3_aux <<1 + c_p4_aux <<1 + c_p1_aux
        dataInitD        CON        tempD <<1 + c_p2_aux  <<1 + c_p3_wheel <<1 + c_p4_wheel
       
        Output                COMA
        low                COMA
        low                COMB
        Input                COMC
       
        Wait_init:        if IN3 = 1 then Wait_init:
        Shiftout        COMB,COMA,1, [dataInitA,dataInitB,dataInitC,dataInitD,dataInitVolt]
        Input                COMA
        high                COMB
       
        Output                COMC
        low                COMC














       
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== EMERGENCY STOP COMMAND INITIALIZE ====================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


        emergency_stop = 0















'=============================================================================================================
'========== MAIN LOOP ========================================================================================
'=============================================================================================================

        MainLoop:
       
       
        '---------- Serin Command - Get Data from Master uP ----------------------------------------------------------
        '  Construct the "serin" command using the following rules:
        '  1) There must be one variable for every input defined in the "Define Constants for Init" section.
        '  2) The order must match the order in the EXAMPLE SERIN COMMAND below.
        '  3) The total number of all variables may not exceed 26.
        '  4) Only use one "Serin" command.
        '  5) The Serin command must occupy one line.
        '
        '  If you see a BASIC INIT ERR on the Robot Controller after programming and pressing RESET, then
        '  there is a problem with the Serin command below.  Check the number of variables.  A BASIC INIT ERR
        '  will not occur if you have the variables in the wrong order, however your code will not work correctly.
        '
        '  EXAMPLE SERIN COMMAND
        '  This example exceed the 26 variable limit and is not on one line:
        '
        '  Serin COMA\COMB, INBAUD, [oi_swA,oi_swB,rc_swA,rc_swB,p2_x,p1_x,p4_x,p3_x,PB_mode,packet_num,sensor1,
        '                            sensor2,p2_y,p1_y,sensor3,sensor4,p4_y,p3_y,sensor5,sensor6,p2_wheel,p1_wheel,
        '                            sensor7,sensor8,p4_wheel,p3_wheel,p2_aux,p1_aux,p4_aux,p3_aux,delta_t,res01]
        '
          Serin COMA\COMB, INBAUD, [oi_swA,oi_swB,rc_swA,rc_swB,p1_x,p3_x,PB_mode,packet_num,p1_y,p3_y]
       
       
       
       
'---------- Blink BASIC RUN LED ------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        Toggle 7                        'Basic Run LED on the RC is toggled ON/OFF every loop.
       














'=============================================================================================================
'========== PERFORM OPERATIONS ===============================================================================
'=============================================================================================================



'---------- Buttons to Relays---------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This maps the joystick buttons to specific relay outputs.  Relays 1 and 2
        '  use limit switches to stop the movement in one direction.
        '  The &  used below is the PBASIC symbol for AND
        '  The &~ used below is the PBASIC symbol for AND NOT
       
                relay1_fwd = 1 &~ rc_sw1                'Relay 1 Forward, unless rc_sw1 is ON        Compressor ON
                relay1_rev = 0                                '                                        Compressor OFF
       
                relay2_fwd = p2_sw_trig                        'Port 2 Trigger = Relay 2 Forward,        High Speed
                relay2_rev = p2_sw_top                        'Port 2 Thumb  = Relay 2 Reverse,        Low Speed
       
                relay3_fwd = 1                                'Relay 3 Forward                        Left Claw Closed
                relay3_rev = p4_sw_top                        'Port  Thumb  = Relay 3 Reverse        Left Claw Open
       
                relay4_fwd = 1                                'Port 4 Trigger = Relay 4 Forward        Right Claw Closed
                relay4_rev = p4_sw_aux1                        'Port 4 Thumb  = Relay 4 Reverse        Right Claw Open
       
                relay5_fwd = 1                                'Relay 5 Forward = Team Color Light Always on
                relay5_rev = 0                                '
       
                'relay6_fwd =                                '
                'relay6_rev =                                '
       
                'relay7_fwd =                                '
                'relay7_rev =                                '
       
                'relay8_fwd =                                '
                'relay8_rev =                                '
       
       
       
       
       
'---------- PWM Feedback lights-------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This drives the "PWM1" and "PWM2" "Robot Feedback" lights on the Operator
        '  Interface.  The lights are green for joystick forward and red for joystick
        '  reverse.  Both red and green are on when the joystick is centered.  Use the
        '  trim tabs on the joystick to adjust the center.
       
       
                if user_display_mode = 1 then skip_this_code
                        if p1_y > 129 then p1_y_not_127
                        if p1_y < 125 then p1_y_not_127
                                Out8 = 1
                                Out9 = 1
                                goto exit_p1_y_test
                        p1_y_not_127:
                                Out8  = p1_y/216                    'LED is ON when Port 1 Y is full forward
                                Out9  = ~(p1_y/56  max 1)            'LED is ON when Port 1 Y is full reverse
                        exit_p1_y_test:
               
                        if p1_x > 129 then p1_x_not_127
                        if p1_x < 125 then p1_x_not_127
                                Out10 = 1
                                Out11 = 1
                                goto exit_p1_x_test
                        p1_x_not_127:
                                Out10 = p1_x/216                    'LED is ON when Port 1 X is full forward
                                Out11 = ~(p1_x/56  max 1)            'LED is ON when Port 1 X is full reverse
                        exit_p1_x_test:
                skip_this_code:















'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== Driving Code =========================================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



'---------- Primary Drive ------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This code Tells the robot to put forth power to motors for forward and backward movements
        '  Joystick forward  = Robot forward
        '  Joystick backward = Robot backwards
       
       
                PWM1 = p1_y
                PWM2 = p1_y
                PWM3 = p1_y
       
       
       
'---------- Primary Steer ------------------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This code Tells the robot to steer left or right depending on the potentiometer values
        '  Joystick forward  = Robot forward
        '  Joystick backward = Robot backwards
       
       
                PWM4 = p1_x
       
       
       
'---------- Secondary Drive (Minikrunch) ---------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This code Tells the robot to put forth power to motors for forward and backward movements on Mini Krunch
        '  Joystick forward  = Robot forward
        '  Joystick backward = Robot backwards
       
               
                PWM5 = p3_y
       


'---------- Secondary Drive (Minikrunch) ---------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This code Tells the robot to put forth power to motors for forward and backward movements
        '  Joystick forward  = Robot forward
        '  Joystick backward = Robot backwards
       
       
                PWM5 = p3_y       



       
'---------- Secondary Steer (Minikrunch) ---------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This code Tells the robot to steer left or right on Mini Krunch
        '  Joystick forward  = Robot forward
        '  Joystick backward = Robot backwards
       
       
                PWM6 = p3_x
       
       
       
       

       
       
       
       
       
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== END Driving Code =====================================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~







'---------- Pressure Switch Value ----------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------

        If relay1_fwd = 0 then next1:
                pressure_switch = 1
        next1:

        If relay1_fwd = 1 then next2:
                pressure_switch = 0
        next2:







'---------- Relay Feedback Lights ----------------------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
        '  This drives the "Relay 1" and "Relay 2" "Robot Feedback" lights on the Operator
        '  Interface. 
       
                if user_display_mode = 1 then user_mode_is_ON
                        Out13 = relay1_fwd                      'LED is ON when Relay 1 is CW                  Compressor ON
                        Out12 = pressure_switch                'LED is ON when Pressure Switch = 1        Up to Pressure
                        Out15 = relay2_fwd                      'LED is ON when Relay 2 is CW                  High Gear
                        Out14 = relay2_rev                      'LED is ON when Relay 2 is CCW                Low Gear
                goto display_done
       
                user_mode_is_ON:                                'Send Port1 Y to 7-segment display when PB_mode.bit5 = 1
                        out8    = p1_y.bit0
                        out9    = p1_y.bit1
                        out10  = p1_y.bit2
                        out11  = p1_y.bit3
                        out12  = p1_y.bit4
                        out13  = p1_y.bit5
                        out14  = p1_y.bit6
                        out15  = p1_y.bit7
                display_done:















'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== Driving Code Limitations =============================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



'---------- Rear wheels dont move while in High gear (relay2_fwd=0) ------------------------------------------
'-------------------------------------------------------------------------------------------------------------
       
        PWM2 = p1_y
        PWM3 = p1_y
        if relay2_fwd = 1 then next3:
          PWM2 = 127
          PWM3 = 127
        next3:
       
       
       
       
'---------- Rear wheels move while in Low gear----------------------------------------------------------------
'-------------------------------------------------------------------------------------------------------------
       
        if relay2_rev = 1 then next4:
                PWM2 = p1_y
                PWM3 = p1_y
        next4:








'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== END Driving Code Limitations =========================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~















'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== Mini Krunch Release ==================================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


        If p4_sw_trig = 1 then next5:
                PWM7 = 0
        next5:
       
       
       
        If p4_sw_trig = 0 then next6:
                PWM7 = 254
        next6:
















'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== EMERGENCY STOP COMMAND CHECK =========================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        If p2_sw_aux1 = 0 then next7:
                emergency_stop = 1
        next7:















'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'====================================== EMERGENCY STOP COMMAND ===============================================
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        If emergency_stop = 1 then nevermind:
                    PWM1 = 127                'Front Drive Motor
                    PWM2 = 127                'Rear Left Drive Motor
                    PWM3 = 127                'Rear Right Drive Motor
                    PWM4 = 127                'Steering Motor
                    PWM5 = 127                'Mini Krunch Drive Motor
                PWM6 = 127                'Mini Krunch Steering Motor
                PWM7 = 127                'Mini Krunch Release Servo
                relay1_fwd = 0                'Compressor
                relay2_fwd = 0                'High Gear
                relay2_rev = 1                'Low Gear
                relay3_fwd = 1                'Open Left Claw
                relay3_rev = 0                'Close Left Claw
                relay4_fwd = 1                'Open Right Claw
                relay4_rev = 0                'Close Right Claw
                relay5_fwd = 0                'Team Color Light
        nevermind:















'=============================================================================================================
'========== OUTPUT DATA ======================================================================================
'=============================================================================================================
        '  The Serout line sends data to the Output uP.  The Output uP passes this to each PWM 1-16
        '  and Relay 1-8.  The Output uP will not output data if there is no communication with the
        '  Operator Interface or if the Competition Mode is Disabled.  Do not delete any elements
        '  from the Serout array.  Set unused PWM outputs to 127.  Set unused relay outputs to 0.
        '
        '  Serout USERCPU, OUTBAUD, [255,255,(PWM1),(PWM2),(PWM3),(PWM4),(PWM5),(PWM6),(PWM7),relayA,relayB]
       
          Serout USERCPU, OUTBAUD, [255,255,p1_y,p1_y,p1_y,p1_x,p3_y,p3_x,127,relayA,relayB]
       
        Goto MainLoop:
       
       
Stop















'  --------------------------------------------------------------------
' /      Copyright  (c) 2005 USFIRST Robotics Team-79 (Team Krunch)    \
'|                                                                        |
'|  The Captain Krunch 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;  version 2 of the License. |
'|                                                                        |
'|  This  program is  distributed in the  hope  that it  will be  useful, |
'|  but WITHOUT  ANY  WARRANTY;  without  even  the  implied  warranty of |
'|  MERCHANTABILITY or FITNESS  FOR A  PARTICULAR  PURPOSE.  See  the GNU |
'|  General Public License for more details.                              |
'|                                                                        |
'|  You  should have  received a copy of the GNU  General  Public License |
'|  along  with  this  program;  if  not,  write  to  the  Free  Software |
'|  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.            |
'|                                                                        |
'|  The following  additional  restrictions apply to all files associated |
'|  with the software  unless explicitly  disclaimed in individual files. |
'|                                                                        |
'|  1. The origin of this  software must not be misrepresented;  you must |
'|    not claim that you wrote the original software.                    |
'|  2. Altered source  versions must be plainly marked as such,  and must |
'|    not be misrepresented as being the original software.              |
'|  3. If you redistribute  modified sources,  please include in the file |
'|    ChangeLog history the information documenting your changes.        |
'|  4. If you use any of this  software in a Robot, an  acknowledgment in |
'|    the Robot documentation would be appreciated but is not  required. |
'|                                                                        |
'|  Please  send  bug  reports  and  comments  by  E-mail  to:          |
'|                                                                        |
'|  bgallo8@earthlink.net        or      Captain@krunch79.com            |
'|                                                                        |
'|  For bug reports,  please  include the version  number of KRUNCH code, |
'|  the  make-options  used  to  compile  it,  and  as  much  additional  |
'|  information as possible.                                              |
'|                                                                        |
'|  This  software  contains  contributions  from  other  authors.  Where |
' \ possible,  those  authors  are  acknowledged  in  the  source  code. /
'  --------------------------------------------------------------------


Mark McLeod 17-07-2008 21:54

Re: 2002 FRC Controller...
 
How come you didn't update your Serout to use the PWM1, etc, variables?
I replaced that.

Serin is missing sensor1

Then it runs.

P.S.
the emergency_stop check is still the opposite of what it should be.
The way it is now your robot will do nothing until the emergency stop is pushed :yikes:

gallo26 17-07-2008 21:57

Re: 2002 FRC Controller...
 
Oh my you know thats it. i cant believe i didnt do that. ok, let me do that and i'll test it.


ok ok, so i changed that and im still getting a BASIC INIT ERROR. no clue what is causing that now. my serout now consists of

Code:

Serout USERCPU, OUTBAUD, [255,255,p1_y,p1_y,p1_y,p1_x,p3_y,p3_x,127,relayA,relayB,(PWM1),(PWM2),(PWM3),(PWM4),(PWM5),(PWM6),(PWM7),sensor1]

Mark McLeod 17-07-2008 22:03

Re: 2002 FRC Controller...
 
That's because of my mistype before.

sensor1 is missing from Serin (I'd originally typed Serout, caught and changed it, but not quickly enough.

gallo26 17-07-2008 22:09

Re: 2002 FRC Controller...
 
ohhh ok. i see now. let me test it


ahhhh it works!!!!! no error!!!!!

ok. so if it is still backwards.... which part? the switch part? or the emergency_stop part?

Mark McLeod 17-07-2008 22:16

Re: 2002 FRC Controller...
 
This part:
Code:

If emergency_stop = 1 then nevermind:
  PWM1 = 127 'Front Drive Motor
'and so on

emergency_stop is set to be "0" when you want to be driving and "1" when you want to be disabled.
the check "= 1" goes through your PWM1 = 127 code only while emergency_stop is "0" and you want to be driving.


It should be:
Code:

If emergency_stop = 0 then nevermind:

gallo26 17-07-2008 22:33

Re: 2002 FRC Controller...
 
Ohhhhhh ok ok. i got that. thanks!! now all i need to do is figure out why the PWM lights are flashing lol and then test with the actual robot

thank you soo much! i owe you!

gallo26 18-07-2008 21:03

Re: 2002 FRC Controller...
 
Ok. the last thing i promise!

I put in the code. all is well. The pwm lights on the OI randomly flash. and i havent changed that fromt he default. but that doesnt matter.

I have a small servo and vex motor that im using to test the PWM outputs. Only PWM3 works.

I know the code might be turning off PWM1 and 2 because of high speed. but when i press and hold p2_aux2... it still wont work. and im not sure why not.

None of the other PWMs work either and they are all written the same. PWM5 should run our mini robot onboard using the port 3 X and Y for controls...

So maybe its this controller im using to test or the code... Does it work for you?

Thanks!

Mark McLeod 18-07-2008 22:41

Re: 2002 FRC Controller...
 
You can add debug printouts of any of your variables so you can see what's going on.

Here's an example:
Code:

debug 2,0,0,"PWM1 = ", DEC3 PWM1
debug 2,0,1,"PWM2 = ", DEC3 PWM2
debug 2,0,2,"PWM3 = ", DEC3 PWM3

That third number after "debug" tells it what line to print on, so it keeps printing on the same line over and over. It makes it easier to watch.
Caution: If you print too much it'll slow the controller down and the Basic Run Err light might start blinking. It's okay if it blinks, I just don't want you to worry if you see that.

The LED default is setup a little strangely, so you can fix that when you have time. Your lights are all blinking because they are displaying the value of p1_y in binary for some odd reason.

The PWMs look okay for me, but we're not working with the same copy.

We should talk about how the relays (solenoid) work. There are some odd things going on there that might do wacky things, but get your PWMs working first.

P.S. 2000 posts. I should go to bed now...

gallo26 18-07-2008 22:46

Re: 2002 FRC Controller...
 
Hahaha ok ill do that then Thanks!!

Yeah and you should get some rest, helping me with really old code probly takes a toll.

And congrats.. 2000 posts


All times are GMT -5. The time now is 19:24.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi