On 04/08/2014 01:09 PM, Grawburg wrote:

I've probably used the wrong term - I'm thinking of what I do when writing PLC 
code - so I can't find how to do this in my reference books.
This is part of a project I'm working on with a Raspberry Pi and an MCP23017 
port expander.
I have a N/O pushbutton that I want to "latch" a value to a variable when it's 
been pressed.  I have this function that gets called periodically in
a 'while True' statement:


def button():
    pushbutton = 0
   button_value = 0
    pushbutton=bus.read_byte_data(address,GPIOB)
    if pushbutton > 0:
         button_value = 1
    return button_value




I need button_value to become '1' when the button is pressed and to remain '1' 
until the entire program (only about 25 lines) ends with a sys.exit()


What do I use to 'latch' button_value?

If I understand correctly, once 'bus.read_byte_data()' has returned a non-zero value, 'button' should continue returning 1 even if 'bus.read_byte_data()' later returns a 0?

There are a couple options for this:

  - use a default paramater as static storage

    def button(_latched=[0])
        push_button = _latched[0]
        if not push_button:
            button_value = bus.read_byte_data(address, GPIOB)
            if button_value > 0:
                _latched[0] = push_button = 1
        return push_button

  - use a class

    # implementation left as an exercise for the reader  ;)

--
~Ethan~
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to