Gramps
Senior Member
Good morning,
Why would the Editor crash while testing code?
Hippy : Corrected the code tags
Why would the Editor crash while testing code?
Code:
#picaxe 28x2
#no_data
#no_table
symbol xb0 = b0 ' reserved for bit variables
symbol bReverseForward=bit1 ' 0=reverse,=forward
symbol bMotorState=bit0 ' 0=off,1=on
symbol REVERSE_=0
symbol FORWARD_=1
Symbol desired_pot_value = b1
Symbol feedback_pot_value = b3
Symbol diff=b4
Symbol desired_pot = B.5
Symbol feedback_pot = B.4
Symbol MOTOR = B.0' Energize PWM
Symbol Direction = B.7
Symbol MAXPWMVALUE = 399
Symbol bSlowState=bit2
Symbol old_feedback_value= b5
Symbol old_desired_value= b6
Symbol ENDSTOP_A = 35 ; desired_pot MINimum value
Symbol ENDSTOP_C = 180 ; desired_pot MAXimum value
;Lower shoulder min=35 max=210
;Upper shoulder min=?? max=???
Main:
Readadc Desired_pot, desired_pot_value
Desired_pot_value = Desired_pot_value MIN ENDSTOP_A MAX ENDSTOP_C
'sertxd (#desired_pot_value," ",#b1,13,10)
Readadc feedback_pot, feedback_pot_value
' sertxd (#feedback_pot_value," ",#b3,13,10)
'sertxd("Desired/Feedback: ",#desired_pot_value," ",#feedback_pot_value,13,10)
If old_feedback_value<>feedback_pot_value or old_desired_value<> desired_pot_value then
old_feedback_value=feedback_pot_value
old_desired_value=desired_pot_value
sertxd("Desired/Feedback: ",#desired_pot_value," ",#feedback_pot_value,13,10)
endif
if desired_pot_value > feedback_pot_value then
diff=desired_pot_value - feedback_pot_value
else
diff=feedback_pot_value - desired_pot_value
endif
if diff < 12 then ' from 11 below a match to 11 above
if bMotorState=1 then
if diff > 4 then ' this value may need to be set experimentally
if bSlowState = 0 then
bSlowState = 1 ' note that we are in the "slow speed" state
pwmout MOTOR, 199, 300 ' slow down to half speed (change to 100 if necessary)
endif
else
pwmout MOTOR, OFF ' STOP
bMotorState=0
bSlowState = 0
endif
endif
else ' motor must be set for proper direction and then activated
if desired_pot_value > feedback_pot_value then
if bReverseForward = REVERSE_ then
high Direction ' go forward
bReverseForward = FORWARD_
endif
elseif desired_pot_value < feedback_pot_value then
if bReverseForward = FORWARD_ then
low Direction ' go in reverse
bReverseForward = REVERSE_
endif
endif
if bMotorState=0 then
bMotorState=1
pwmout MOTOR, 199, MAXPWMVALUE' rotate Reverse
endif
endif
goto main
Last edited by a moderator: