• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
led il fare pwm fade e stesso per

pwm led e stesso led per fare il fade
#1
Salve, come mai mi dice che i led o meglio il pin è già stato usato ? e non posso usare il solito led per fare on , off, blink, fade.

vi allego codice:
Codice:
#!/usr/bin/env python3
from gpiozero import *
from time import sleep

led = LED(18)
button = Button(21)
def main():
    cmd = input("on, off  , blink , button: ")
    if cmd == 'on':
        led.on()
        main()
    elif cmd == 'off':
        led.off()
        main()
    elif cmd == 'blink':
        try:
            while True:
                led.on()
                sleep(1)
                led.off()
                sleep(1)
        except KeyboardInterrupt:
            led.off()
            sleep(1)
            main()
    elif cmd == 'button':
        try:
            while True:
                if button.is_pressed:
                    led.on()
                else:
                    led.off()
        except KeyboardInterrupt:
            led.off()
            sleep(0.5)
            main()
    elif cmd == 'pwm':
        led_pwm = PWMLED(18)
        try:
            while True:
                
                led_pwm.value = 0
                sleep(1)
                led_pwm.value = 0.5
                sleep(1)
                led_pwm.value = 1
                sleep(1)
                led_pwm.value = 0
                sleep(1)
                led_pwm.value = 0.5
                sleep(1)
                led_pwm.value = 1
                sleep(1)
        except KeyboardInterrupt:
            led.off()
            sleep(0.5)
            main()


if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        led.off()

Grazie mille.
Risposta
#2
pubblica l'errore esatto che ti viene presentato (compreso il ^)
Risposta
#3
Prova ad usare pin senza funzioni secondarie, tipo il 17, 27

https://it.pinout.xyz/pinout/pin40_gpio21
https://it.pinout.xyz/pinout/pin12_gpio18
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#4
ok , ora provo appena sistema di nuovo raspberry e provo grazie mille. vedo come risolvere.

ecco l'errore che ricevo :
>>> %Run app.py
on, off , blink , button: pwm
Traceback (most recent call last):
File "/home/pi/Desktop/Labs/app.py", line 62, in <module>
main()
File "/home/pi/Desktop/Labs/app.py", line 38, in main
led_pwm = PWMLED(17)
File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 124, in __call__
self = super(GPIOMeta, cls).__call__(*args, **kwargs)
File "/usr/lib/python3/dist-packages/gpiozero/output_devices.py", line 414, in __init__
pin, active_high, initial_value=None, pin_factory=pin_factory
File "/usr/lib/python3/dist-packages/gpiozero/output_devices.py", line 93, in __init__
super(OutputDevice, self).__init__(pin, pin_factory=pin_factory)
File "/usr/lib/python3/dist-packages/gpiozero/mixins.py", line 106, in __init__
super(SourceMixin, self).__init__(*args, **kwargs)
File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 520, in __init__
self.pin_factory.reserve_pins(self, pin)
File "/usr/lib/python3/dist-packages/gpiozero/pins/pi.py", line 100, in reserve_pins
requester, *(self.pi_info.to_gpio(pin) for pin in pins))
File "/usr/lib/python3/dist-packages/gpiozero/pins/__init__.py", line 98, in reserve_pins
(pin, reserver))
gpiozero.exc.GPIOPinInUse: pin 17 is already in use by <gpiozero.LED object on pin GPIO17, active_high=True, is_active=False>
>>>
Risposta
#5
ok, riuscito anche usare il pin di prima ma devo mettere led.close()

una cosa per risvegliarlo .. perché se faccio led.close e ripeto tipo il comando on, mi dice che i led è stato chiuso.

avete idea come riassegnarli il valore?


grazie mille.

ok, riuscito devo riassegnarli il valore.. ma mi sembra brutto cosi.. avete idea come fare senza ripetere l'assegnazione. Vi posto il codice:
Codice:
#!/usr/bin/env python3
from gpiozero import *
from time import sleep

led = LED(18)
button = Button(21)
def main():
    global led, button
    cmd = input("on, off  , blink , button, pwm: ")
    if cmd == 'on':
        led.on()
        main()
    elif cmd == 'off':
        led.off()
        main()
    elif cmd == 'blink':
        try:
            while True:
                led.on()
                sleep(1)
                led.off()
                sleep(1)
        except KeyboardInterrupt:
            led.off()
            sleep(1)
            main()
    elif cmd == 'button':
        try:
            while True:
                if button.is_pressed:
                    led.on()
                else:
                    led.off()
        except KeyboardInterrupt:
            led.off()
            sleep(0.5)
            main()
    elif cmd == 'pwm':
        led.close()
        sleep(.5)
        led = PWMLED(18)
        try:
            while True:
                
                led.value = 0
                sleep(1)
                led.value = 0.5
                sleep(1)
                led.value = 1
                sleep(1)
                led.value = 0
                sleep(1)
                led.value = 0.5
                sleep(1)
                led.value = 1
                sleep(1)
        except KeyboardInterrupt:
            led.off()
            sleep(0.5)
            led.close()
            sleep(0.5)
            led = LED(18)
            sleep(0.5)
            main()


if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        led.off()

in questo pezzo di codice:
Codice:
elif cmd == 'pwm':
        led.close()
        sleep(.5)
        led = PWMLED(18)
        try:
            while True:
                
                led.value = 0
                sleep(1)
                led.value = 0.5
                sleep(1)
                led.value = 1
                sleep(1)
                led.value = 0
                sleep(1)
                led.value = 0.5
                sleep(1)
                led.value = 1
                sleep(1)
        except KeyboardInterrupt:
            led.off()
            sleep(0.5)
            led.close()
            sleep(0.5)
            led = LED(18)
            sleep(0.5)
            main()

e l'uscita dalla CTRL+C, devo rimettere led = LED(18).

Una cosa più carina c'è ?

grazie mille e buona settimana.
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect