Read Output pin state
-
You have to use the object model
sensors.gpIn[3].value
This should return the state of gpio 3
-
@siam said in Read Output pin state:
sensors.gpIn[3].value
Can you elaborate on how to setup the object model? Actual step by step
Thanks Wayne
> SENSORS.GPIN[3].VALUE Error: Bad command: SENSORSGPIN[3]VALUE ok
-
@wayneosdias you have to write a macro, see the docs here:
https://duet3d.dozuki.com/Wiki/Macros -
@wayneosdias The object model is case sensitive. DWC can show the object model, it's at the bottom of the left panel.
-
@siam
This is where I get lost,
RepRapFirmware allows for gcode sequences, called macros...
Great, what's the GCode for retrieving the current output state on an output pin? Ill happily put it into a macro... -
@stephen6309
Thanks Stephan
I see it here in the DWC
.3 is correct. Now how do I get this value into Openpnp via serial/USB?
I tried thisstate.gpOut[3].value Error: Bad command: stategpOut[3]value ok
-
The answer was provided.
The gcode is the object model queryhttps://github.com/Duet3D/RepRapFirmware/wiki/Object-Model-Documentation#overview
You should also search on duet meta commands.
However...
You said you're using openPNP
How does that communicate with the Duet?
I thought it used its own software.
It will make a difference whether it runs completely on the Duet, or whether it's connected via a USB cable or uses TCP socket connection. -
@owend
OpenPnp is the motion planner, it is connected via native USB. -
@wayneosdias
So the questions becomes from where do you need the information extracted and passed to?What are you trying to achieve?
If the query/answer will be used purely on the duet, the you can use the object model and conditional gcode to do it.
If you need to pass the gpio state back to your external motion planner via usb then I suspect something like M118 will need to be used, however I have no direct knowledge of openPNP
EDIT:
Can you use something likeM118 P1 S{state.gpOut[3].value} L0
This should send the IO state via USB
-
@owend said in Read Output pin state:
M118 P1 S{state.gpOut[3].value} L0
First thanks for everyones help thus far;
What Im trying to achieve is a 'component feed' as follows;-
machine XY's head mounted drag pin to component tape hole
-
machine actuates drag pin
-
drag pin is in down position inserted into tape hole
-
machine 'drags' tape in X direction to feed next component into postion
-
drag pin is de activated
-
machine XY's head mounted nozzle to component
-
... and completes the pick process.
In this process there is an issue where the drap pin may be stuck down despite being de activated. To prevent XY motion in the case of a stuck drag pin there is a dragpin sensor. In Openpnp his is referred to 'Axis Interlock'. We dont dont want XY with a down drag pin UNLESS the dragpin is actuated to do so as in a feed event.
Boiling this all down is;
- we want XY movement when the drag pin is actuated and sensor states it so
- we dont want XY movment when the drag pin is de activated and sensor
states it so
Circling back to the original question. What Gcode can I use to get the current output state of an output pin?
-
-
@wayneosdias
Either you are not actually reading any of the responses given, or there is some sort of communication or translation issue.You have been told several times that the Gcode is
state.gpOut[3].value
where 3 is the sensor number of an output pin.
or
sensors.gpIn[3].value
where 3 is the sensor number of an input pin
If your sensor is connected to the duet, then it is an INPUT
Your Gcode needs to contain something like
while sensors.gpIn[3].value = 1 G4 P500 ; if the sensor level is high, go into a wait loop
You are unlikely to get working code unless you find someone who also uses openPNP, but you have been provided ample information to work it out.r
-
@wayneosdias said in Read Output pin state:
I tried this
state.gpOut[3].value Error: Bad command: stategpOut[3]value ok
Try this:
echo state.gpOut[3].value
-
@dc42 said in Read Output pin state:
echo state.gpOut[3].value
Hey dc
I tried but still get...> echo state.gpOut[3].value Error: Bad command: echostategpOut[3]value ok
-
@owend
I have read and tried all responses thoroughly before each and every response. I think you may be having difficulty understanding the question. But it's stated pretty explicitly. -
@wayneosdias If you want the pwm value, use state.gpOut[3].pwm. You can't get undefined items.
-
@stephen6309 said in Read Output pin state:
state.gpOut[3].pwm
Thanks Stephen,
I cant get that to work either> echo state.gpOut[3].pwm Error: Bad command: echostategpOut[3]pwm ok > state.gpOut[3].pwm Error: Bad command: stategpOut[3]pwm ok > M118 P1 S{state.gpOut[3].pwm} L0 Error: M118: unknown value 'stategpOut^pwm' ok
-
@wayneosdias I don't have any gpio pins defined, but 0 is there.
Currently on rrf 3.4.0rc2
Sending in the DWC Console:
echo state.gpOut[0].pwmThis shows up in the DWC Console:
echo state.gpOut[0].pwm
0.0736Object Model in DWC shows 0.07
-
@wayneosdias What program are you using to send those commands? It looks like something is removing some of the characters before they are sent to the Duet.
-
@stephen6309 Hey Stephen
I need response via USB to Openpnp. DWC is connected via ethernet -
@gloomyandy
Hey Andy its Openpnp