Pas assez de sorties PWM sur mon arduino Uno Comment faire?

Bonjour,

Je me lance aujourd'hui dans un projet relativement simple (je suis débutant).
Je possède un arduino Uno. Sur cet arduino, je souhaite brancher:

Mon souhait:
Les deux écrans analogiques / aiguilles doivent bouger de manière aléatoire. (Pas de soucis pour le code)
Lorsque je tourne le potar, la luminosité des 13 leds varie (potar au min -> leds éteintes / potar au max -> led allumées au max). De plus l'amplitude des aiguilles doit aussi varier suivant la position du potar (pas de soucis pour le code non plus).

Le montage:
Pour le potar, je pense le brancher à l'entrée A0 de l'arduino. Pour récupérer la valeur pas de problème, j'ai déjà fait.
Pour les deux écrans, je vais les brancher respectivement aux sorties PWM 6 et 5 pour jouer avec l'amplitude des aiguilles. (J’ai testé et ca marche bien, j'ai du rajouter une résistance sur chacun des écrans afin de bien calibrer l'amplitude sinon dés que je mets seulement 10 sur la sortie PWM, l'aiguille été déjà à fond)

Le problème:
Mon problème vient des leds. Comme indiqué plus haut, j'ai 12/13 leds à placer. Je pensais les brancher également sur des sorties pwm (pour jouer sur la variation), or dans mon cas, il ne m'en reste plus que 4 sortie PWM disponibles (3,9,10,11).
Du coup je ne vois pas trop comment me tirer de cette affaire.

Auriez-vous une idée? Simple si possible. Comme indiqué, je suis un débutant.

Merci beaucoup pour votre aide :slight_smile:

Salut SumoRobot tu peux utiliser un registre à décalage du genre 74HC595 avec cette librairie:http://www.elcojacobs.com/shiftpwm/

Tu peu mettre plusieurs registre à la suite chaque registre compte 8 sortie et il ne te faut que trois pin sur l'arduino.

SAlut pouic13,

Merci pour ton aide. Effectivement j'avais pensé à un registre de décalage surtout que j'en ai un dans ma boite (74HCT595N) Dommage il m'en faudrait 2 du coup.
Je ne savais pas s'il était possible d'utiliser le "mode" PWM avec un registre de décalage. Mais si tu me le propose, je suppose que oui?

Merci

Un registre à décalage ne fait pas de PWM...

Utilise plutôt un TLC5940 (16 sorties PWM), il y a une librairie sur le playground et est très simple d'utilisation.

Bonjour,

SumoRobot:
Je ne savais pas s'il était possible d'utiliser le "mode" PWM avec un registre de décalage. Mais si tu me le propose, je suppose que oui?

Il n'y a pas de "mode PWM" sur un registre à décalage.
C'est juste la librairie ShiftPWM qui fait basculer les broches au bon timing très rapidement.
Regarde du côté du TLC5940 (contrôleur de led en PWM, 16 voies).

Lorsque je tourne le potar, la luminosité des 13 leds varie (potar au min -> leds éteintes / potar au max -> led allumées au max).

De ce que je comprends, la luminosité de toutes les LEDs varie en même temps.
Pourquoi donc se torturer avec des registres à décalage ou autres complications, une seule sortie PWM devrait suffire pour commander les 13 LEDs avec un petit transistor qui fournirait le courant nécessaire.

Je pense que je vais me diriger vers cette solution d'adafruit: AdaFruit PWM Driver — MCHobby - Wiki

Qui permet de contrôler facilement 16 sorties PWM. Ça sera plus facile pour moi.
Par contre est-ce que ça va tenir concernant la puissance (si je n'utilise pas l'alimentation externe du shield mais uniquement la connexion +5V de l'arduino)? Je vais avoir 13 leds donc 13*20mA = 260mA
Il me semble que la sortie +5 de l'arduino tient les 500mA si je ne m'abuse?

Autre question: Je brancherais chacune des leds de cette facon: - de la led au gnd et + de la led au pwm mais dois-je toujours intercaler ma résistance 90 Ohms entre le shield et l'arduino? En effet, je cite: "AdaFruit à cependant penser à sécurisé les sorties PWM, en effet une résistance de 220 Ohms est montée en série sur chaque sortie :-)"

Merci pour votre aide en tous les cas. :blush:

Bonjour,

Pour ceux que ça intéresse, j'ai choisi la solution Adafruit 16-Channel 12-bit PWM / Servo Driver.

J'ai fait un mini tutorial, en application sur ma "création" :slight_smile:

Sur mon blog: Adafruit 16-Channel 12-bit PWM / Servo Driver | Daryl Robot Project

@++

Sinon y'a la lib SoftPWM tout simplement : Google Code Archive - Long-term storage for Google Code Project Hosting.