Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    if condition RFF3 on GPIO Pin

    Scheduled Pinned Locked Moved
    Gcode meta commands
    7
    29
    1.7k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • duetloverundefined
      duetlover
      last edited by

      I also tried with if condition at the beginning without success :

      ; tpost0.g
      ; called after tool 0 has been selected
      
      M400
      G4 P500
      
      if sensors.gpIn[0].value = 0  ;if the microswitch is not pressed...
      	abort "Failed to grab tool 0"
      
      ;heatup
      M116 P0
      
      ;prime nozzle
      ;M98 Pprime.g
      
      ;mesh levelling on
      G29 S1
      
      ;PCF fan on
      M106 P2 S255
      

      Same random behaviour 😕

      1 Reply Last reply Reply Quote 0
      • RSundefined
        RS
        last edited by

        Could you also post your tpre0.g file?

        1 Reply Last reply Reply Quote 0
        • duetloverundefined
          duetlover
          last edited by

          Here it is :

          ; tpre0.g
          ; called before tool 0 is selected
          
          ;Ensure no tool is selected
          ;T-1
          
          if sensors.gpIn[0].value = 1  ;if the microswitch is pressed...
              abort "Tool 0 still mounted"
          
          
          ;Unlock Coupler
          M98 P/macros/Coupler - Unlock
          
          ;Move to location
          G1 X-10.5 Y200 F50000
          
          ;Move in
          G1 X-10.5 Y230 F50000
          
          ;Collect
          G1 X-10.5 Y242.5 F2500
          
          ;Close Coupler
          M98 P/macros/Coupler - Lock
          
          ;WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING!
          ;if you are using non-standard length hotends ensure the bed is lowered enough BEFORE undocking the tool!
          G91
          G1 Z10 F1000
          G90
          
          ;Move Out
          G1 X-10.5 Y150 F4000
          
          
          
          1 Reply Last reply Reply Quote 0
          • RSundefined
            RS
            last edited by

            Hm. The whole sequence of movements, plus M400 and G4, looks good to me.

            Maybe double and triple check that the microswitch is really pressed correctly every single time? Or check if the cable from the switch to the boards runs close to other cables, where it could pick up noise. No idea how sensitive it would be to noise, but checking it and trying to move it away from other cables can't hurt.

            Besides that, I have no more ideas than what I've suggested earlier: try writing a gcode file that simulates the tool change without actually invoking the T command. Just grab the tool, then release it again, in a while loop, and see what happens. In my experience, having a minimal example that reproduces the issue often helps.

            1 Reply Last reply Reply Quote 0
            • dc42undefined
              dc42 administrators
              last edited by

              When it fails to detect that the tool has been picked up, if you query the switch position using an echo command or M409, does it report the correct switch state?

              Duet WiFi hardware designer and firmware engineer
              Please do not ask me for Duet support via PM or email, use the forum
              http://www.escher3d.com, https://miscsolutions.wordpress.com

              duetloverundefined 2 Replies Last reply Reply Quote 0
              • duetloverundefined
                duetlover @dc42
                last edited by

                @dc42 I will echo just before and just after condition test

                How should I write it ?
                just:

                echo sensors.gpIn[0].value
                

                ?
                Thanks

                1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators
                  last edited by

                  Yes, that should work.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  1 Reply Last reply Reply Quote 0
                  • duetloverundefined
                    duetlover @dc42
                    last edited by

                    @dc42 So when it fails the echo command says 0. No problem here

                    I finally change NO switch to NC one and now it seems to be OK !

                    Thanks for your help.

                    1 Reply Last reply Reply Quote 0
                    • jwalker55undefined
                      jwalker55
                      last edited by jwalker55

                      @dc42 Is it possible to read a sensor value twice within a single macro? For example, check the state of a switch at the beginning of tpre, then again at the end after the move out? When I do this (just by echoing to console) it outputs the state the switch was in when the macro started (or whenever the sensor was first read in the macro) for both instances despite the switch being pressed at the beginning and unpressed at the end. Aside from that it seems to work as expected if i'm only reading the sensor once.

                      A Former User? jwalker55undefined 2 Replies Last reply Reply Quote 0
                      • A Former User?
                        A Former User @jwalker55
                        last edited by

                        @jwalker55 maybe post your actual files in a new topic? sounds like it should work if the testing is done in the same file as the move is made.

                        1 Reply Last reply Reply Quote 0
                        • jwalker55undefined
                          jwalker55 @jwalker55
                          last edited by

                          Adding a short (10ms) pause using G4 prior to the second sensor reading seemed to fix it.

                          dc42undefined 1 Reply Last reply Reply Quote 0
                          • dc42undefined
                            dc42 administrators @jwalker55
                            last edited by

                            Alternatively you could have added M400 after the movement commands and before reading the switch again, so that the macro waited until the movement completed.

                            Duet WiFi hardware designer and firmware engineer
                            Please do not ask me for Duet support via PM or email, use the forum
                            http://www.escher3d.com, https://miscsolutions.wordpress.com

                            jwalker55undefined 1 Reply Last reply Reply Quote 1
                            • jwalker55undefined
                              jwalker55 @dc42
                              last edited by

                              @dc42 I'm an idiot. You literally said that above and I somehow read past it. My apologies.

                              1 Reply Last reply Reply Quote 1
                              • First post
                                Last post
                              Unless otherwise noted, all forum content is licensed under CC-BY-SA