Problema para controlar múltiples tiras led

Hola antes que nada pido perdón, por si soy muy nuevo en arduino y en el tema de la electrónica.

Necesito controlar 10 leds rgb en color amarillo para una exposición, necesito una rutina donde se encienda el led de 1 a 10 y luego 10 a 1. Estoy pensando en usar las tiras rgb comerciales (de las de 4 pines), y ya había logrado encender dos leds con la rutina que quiero y pensaba expandirlo solo a los 10 restantes. El problema es que con mi Arduino los pwm no me son suficientes ya que solo hay 13 puertos y siendo así necesitaría 30 (aunque considerando que para el color amarillo solo requiero 2 colores) necesitaría 20 pines.

Espero me puedan ayudar y dar alguna solución o ayuda.

#define red1 13
#define green1 12
#define blue1 11
#define red2 10
#define green2 9
#define blue2 8
#define red3 7
#define green3 6
#define blue3 5
#define red4 4
#define green4 3
#define blue4 2

int ret=A3;
int del=0;
void setup() {
  // put your setup code here, to run once:
pinMode(red1, OUTPUT);
pinMode(red2, OUTPUT);
pinMode(red3, OUTPUT);
pinMode(red4, OUTPUT);
pinMode(green1, OUTPUT);
pinMode(green2, OUTPUT);
pinMode(green3, OUTPUT);
pinMode(green4, OUTPUT);
pinMode(blue1, OUTPUT);
pinMode(blue2, OUTPUT);
pinMode(blue3, OUTPUT);
pinMode(blue4, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:

  int del=analogRead(ret);

  digitalWrite(red1, HIGH);
  digitalWrite(green1,HIGH);
  digitalWrite(blue1,LOW);

  delay (del);

  digitalWrite(red1, LOW);
  digitalWrite(green1,LOW);
  digitalWrite(blue1,LOW);

  delay(del);
  
  digitalWrite(red2, HIGH);
  digitalWrite(green2,HIGH);
  digitalWrite(blue2,LOW);

  delay (del);

  digitalWrite(red2, LOW);
  digitalWrite(green2,LOW);
  digitalWrite(blue2,LOW);

  delay (del);
  
//  digitalWrite(red3, HIGH);
//  digitalWrite(green3,HIGH);
//  digitalWrite(blue3,LOW);
//
//  delay (500);
//
//  digitalWrite(red3, LOW);
//  digitalWrite(green3,LOW);
//  digitalWrite(blue3,LOW);
//
//  delay (500);
//
//  digitalWrite(red4, HIGH);
//  digitalWrite(green4,HIGH);
//  digitalWrite(blue4,LOW);
//
//  delay (500);
//
//  digitalWrite(red4, LOW);
//  digitalWrite(green4,LOW);
//  digitalWrite(blue4,LOW);
//
//  delay (500);
}

tengo las entradas analogicas porque quisiera por medio de un potenciometro poder regular el color o la tonalidad de amarillo y a su vez la velocidad controlar el delay de las rutinas.

mi implementacion del circuito es esa pero como comento me quedo sin pines para continuar agregando solo leds y repitiendo el codigo.

tal vez este tema te pueda dar algunas ideas
(en inglés)

1 Like

Y no los 13 son PWM, solo lo son son los puertos 3,5,6,9,10 y 11.
Para tu problema veo dos soluciones:

  • Usar un expansor de salidas PWM como el PCA8695 que como ves solo usas dos pines de tu arduino
  • En lugar de usar tiras led de 4 pines usar tiras led NEOPIXEL que solo necesitan un pin para manejar los tres colores y no tiene que usar un pin PWM, aunque tendras limitado el numero total de led a usar dependiendo del placa que uses, (unos 450-500 led para el UNO). ¿Cuantos led planeas usar?

En cuanto a tu implementacion del circuito, ten en cuenta que un pin de arduino solo puede dar 40 mA , si vas a manejar mas de 2 led por pin superas ese limite y tendras que cambiar la simple resistencia por un transistor.

1 Like

Hola muchas gracias por responder, justo estaba viendo eso de las tiras led de neopixel pero quería ahorrarmelo porque son más caras pero Creo será mi solución y con la implementación el trasnsitor puede ser el 2n2222a? o con las de neopixel ya nos era necesario?
Una duda comentan que el neopixel no se controla por pwm? Por lo que podría usar las demás salidas digitales?

Por qué se me limitaría el uso de leds? Suponiendo que uso 60/metro y necesito unos 20 metros estaria necesitando 1200 leds.

lo voy a revisar muchas gracias.

Si hasta 800 mA por tira

No, solo una resistencia de entre 300 a 500 Ohm. Pero ten en cuenta que no las puedes alimentar con el arduino, necesitaras una fuente de alimentacion externa a el. Pero ten en cuenta que para el otro tipo de led tambien la necesitaras.

SI, si podrias.

Por la memoria de la placa, las librerias crean una matriz para el manejo de los led.

Imposible para un Uno, tendrias que pasar al MEGA

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.