Aide programmation

Bonjour,

J’aurais besoin d’aide pour mon programme, Le truc c’est que lorsque j’allume il y a qu’une seule led (GPIO 23) qui s’allume progressivement et j’aimerais que ce soit les 4 (GPIO 18,17,27,23) qui s’allument progressivement. Est ce que vous savez ce que je dois rajouter ? ou modifier?
Merci beaucoup!

################################
##Generated with a lot of love##

with EasyPython

##Web site: easycoding.tn ##
################################
import RPi.GPIO as GPIO
from http.server import BaseHTTPRequestHandler, HTTPServer
import time
from signal import signal, SIGINT
from sys import exit
Request = None

def handler(signal_received, frame):
# on g\u00e8re un cleanup propre
print(’’)
print(‹ SIGINT or CTRL-C detected. Exiting gracefully ›)
GPIO.cleanup()
exit(0)

GPIO init

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(23, GPIO.OUT)

50 Hz

p = GPIO.PWM(18, 50)
p = GPIO.PWM(17, 50)
p = GPIO.PWM(27, 50)
p = GPIO.PWM(23, 50)

cycle = 0%

p.start(0)

class RequestHandler_httpd(BaseHTTPRequestHandler):
def do_GET(self):
global Request
messagetosend = bytes(‹ Hello ›,« utf »)
self.send_response(200)
self.send_header(‹ Content-Type ›, ‹ text/plain ›)
self.send_header(‹ Content-Length ›, len(messagetosend))
self.end_headers()
self.wfile.write(messagetosend)
Request = self.requestline
Request = Request[5 : int(len(Request)-9)]
print(Request)

if Request == 'on':
  GPIO.output(18, True)
  GPIO.output(17, True)
  GPIO.output(27, True)
  GPIO.output(23, True)
  for dc in range(0, 101, 1):
        p.ChangeDutyCycle(dc)
        time.sleep(0.10)

if Request == 'off':
  GPIO.output(18, False)
  GPIO.output(17, False)
  GPIO.output(27, False)
  GPIO.output(23, False)
  for dc in range(100, -1, -1):
        p.ChangeDutyCycle(dc)
        time.sleep(0.05)

if Request == 'power':
    
 return

server_address_httpd = (‹ 192.168.43.122 ›,8080)
httpd = HTTPServer(server_address_httpd, RequestHandler_httpd)
print(‹ Start Serveur ›)
httpd.serve_forever()
GPIO.cleanup()

Hello,
ton souci vient de ton utilisation de variable p
Tu écrases à chaque affectation la valeur précédente, du coup tu ne gardes que la led 23
Il te faut soit faire plusieurs variables, soit faire un « tableau » avec tes led.
Et il faudra bien sur adapter le code en fonction de ton choix dans ta boucle

Bonjour,

Merci pour votre réponse. Le problème c’est que je suis débutant et je ne comprend pas trop ce que vous me dites. Est ce que je pourrais avoir un exemple ?

Encore merci

C’est ici ton problème.

Tu crée « p » avec une définition sur le GPIO 18, mais la ligne d’après tu refait la variable « p » pour le GPIO 17, ce qui annule le premier, et ainsi de suite…

J’ai changé le « p » pour 17,27,23 et j’ai mis q,r,s à la place et j’ai changé dans la boucle mais lorsque j’ai fais ON, Les leds s’allument une par une et j’aimerais qu’elles s’allument toutes en même temps. Je suis sûre c’est un truc tout bête désolé de demander ça ^^

p = GPIO.PWM(18.50)
q = GPIO.PWM(17, 50)
r  = GPIO.PWM(27, 50)
s = GPIO.PWM(23, 50)

if Request == 'on':
  GPIO.output(18, True)
  for dc in range(0, 101, 1):
        p.ChangeDutyCycle(dc)
        time.sleep(0.10)
  GPIO.output(17, True)
  for dc in range(0, 101, 1):
        q.ChangeDutyCycle(dc)
        time.sleep(0.10)
  GPIO.output(27, True)
  for dc in range(0, 101, 1):
        r.ChangeDutyCycle(dc)
        time.sleep(0.10)
  GPIO.output(23, True)
  for dc in range(0, 101, 1):
        s.ChangeDutyCycle(dc)
        time.sleep(0.10)
p = GPIO.PWM(18.50)
q = GPIO.PWM(17, 50)
r  = GPIO.PWM(27, 50)
s = GPIO.PWM(23, 50)

if Request == 'on':
  GPIO.output(18, True)
  GPIO.output(17, True)
  GPIO.output(27, True)
  GPIO.output(23, True)
  for dc in range(0, 101, 1):
        p.ChangeDutyCycle(dc)
        q.ChangeDutyCycle(dc)
        r.ChangeDutyCycle(dc)
        s.ChangeDutyCycle(dc)
        time.sleep(0.10)

Déjà je crois ce sera mieux.