Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

59 lines
1.5KB

  1. #!/usr/bin/env python3
  2. from time import sleep
  3. import threading
  4. try:
  5. import RPi.GPIO as GPIO
  6. except RuntimeError:
  7. print("Error importing RPi.GPIO! Run this script as root.")
  8. exit(1)
  9. class LED(Thread):
  10. def __init__(self, pin, frequency, use_pwm=False):
  11. Thread.__init__(self)
  12. self.__pin = pin
  13. self.__frequency
  14. self.__use_pwm = use_pwm
  15. self.__pwm = None
  16. GPIO.setup(pin, GPIO.OUT)
  17. if use_pwm:
  18. self.__pwm = GPIO.PWM(pin, frequency)
  19. def new_random_frequency(self):
  20. self.__frequency = random.randint(1, 100)
  21. def run(self):
  22. try:
  23. if self.__use_pwm:
  24. self.__pwm.start(0)
  25. while True:
  26. for s in range(0, 1, 0.1):
  27. self.__pwm.ChangeDutyCycle(math.sin(s * math.pi))
  28. #sleep(1 / self.__frequency)
  29. sleep(1)
  30. else:
  31. while True:
  32. GPIO.output(LED_GREEn, GPIO.LOW)
  33. sleep(1 / self.__frequency)
  34. GPIO.output(LED_GREEn, GPIO.HIGH)
  35. sleep(1 / self.__frequency)
  36. except KeyboardInterrupt:
  37. GPIO.cleanup()
  38. def setup():
  39. # Run GPIO with PI pin numbers.
  40. GPIO.setmode(GPIO.BCM)
  41. def main():
  42. setup()
  43. # Pin, frequency in Hz
  44. led_thread = LED(17, 1000)
  45. led_thread.run()
  46. if __name__ == "__main__":
  47. main()