Another example: two buttons controlling an LED like an AND gate. | Button A | Button B | LED | |:--------:|:--------:|:---:| | Released | Released | Off | | Pressed | Released | Off | | Released | Pressed | Off | | Pressed | Pressed | On | ## Procedural approach ```python from gpiozero import LED, Button led = LED(2) button_a = Button(3) button_b = Button(4) while True: if button_a.is_pressed and button_b.is_pressed: led.on() else: led.off() ``` ## Event-driven approach ```python from gpiozero import LED, Button from signal import pause led = LED(2) button_a = Button(3) button_b = Button(4) def both_pressed(): if button_a.is_pressed and button_b.is_pressed: led.on() button_a.when_pressed = both_presssed button_a.when_released = led.off button_b.when_pressed = both_pressed button_b.when_released = led.off pause() ``` ## Declarative approach ```python from gpiozero import LED, Button from gpiozero.tools import all_avalues from signal import pause led = LED(2) button_a = Button(3) button_b = Button(4) led.source = all_values(button_a.values, button_b.values) pause() ```