I am trying to control a 4-Relay module with my Raspberry Pi 4. I tried to do that by writing this script:

import RPi.GPIO as GPIO
import time

relais_1 = 8
relais_2 = 10
relais_3 = 12

GPIO.setup(relais_1, GPIO.OUT)

GPIO.output(relais_1, GPIO.HIGH)

GPIO.output(relais_1, GPIO.LOW)

However, the relay does not turn off after that. By changing it to this setting:

GPIO.output(relais_1, GPIO.LOW)

GPIO.output(relais_1, GPIO.HIGH)

It now works. But that does not make sense, does it?! Hopefully someone will be able to explain this behavior so I can learn something..

Thanks a lot in advance!


Most relays are Active LOW - the relay is ON when the input is LOW and OFF when the input is HIGH.

The specification for your relay board should state this.

  • 1
    Ohh, right, thank you so much! In retrospective this was quite a stupid question I guess. But I really appreciate it. There was no information in the specification.. Jan 16 '20 at 18:33
  • 1
    However, it is still behaving a bot oddly without cleanup() at the end, every time I start it again it says "this channel is already in use" and it also turns on automatically even if I leave the "low" command out of it. Jan 16 '20 at 19:21
  • That is also normal just use GPIO.setWarnings(False) sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage
    – CoderMike
    Jan 16 '20 at 19:26
  • 1
    I see, thank you very much! Jan 16 '20 at 19:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.