Autor Tema: Aporte-Ahorro de Pines Digitales con un Led RGB  (Leído 2243 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 190
Aporte-Ahorro de Pines Digitales con un Led RGB
« en: 28 de Marzo de 2018, 17:46:05 »
INTRODUCCIÓN: (Saraza)

A la hora de adoptar nuevos recursos (en este caso) me ha resultado muy práctico e interesante hacer este post esperando que te sirva como en mi caso.
ANTES: En mis proyectos usaba mucho Led Azul, Rojo, Verde y Blanco también varios pulsadores y Buzzer. Esto me ocasionaba una notable reducción de mis “PINES DIGITALES”. Debiendo llegar a pensar (en algunos casos) que necesitaría usar un Arduino MEGA pagando así los espacios de mis proyectos.


Una tarde me decidí a comprar cinco Led RGB para ver de qué se trataba y gracias a eso.
1.Encontré utilidad de los Pines ANALÓGICOS (Así liberé todos los DIGITALES).
2.De varios Led(s) ahora uso uno solo y le doy el color que necesito según sea el momento.
3.Pasé el Buzzer a usarlo (igual que en el digital) pero en el ANALÓGICO.
4.Comprendí la diferencia de uso de los Led RGB con CÁTODO o ÁNODO común.

Led Ánodo o Cátodo común:

Entonces me quedó de este modo:

Pines digitales
D2 y D3 en (INPUT) para mis botones Switch

Pines analógicos
A0 para el Buzzer
A1 para RGB Rojo (Red)
A2 para RGB Verde (Green)
A3 para RGB Azul (Blue)
A4 y A5 Display LCD c/I2C para 16x2 o 20x4

Y todo el resto de los digitales libres para usar con lo que quiera!!!

Código: [Seleccionar]
Ejemplo básico para encender un Led RGB básico con ANODO COMUN

void setup() {
     Serial.begin(9600);

     pinMode(3, INPUT);   // Boton Blanco
     digitalWrite(3, LOW);

     pinMode(A0, OUTPUT);   // Buzzer
     pinMode(A1, OUTPUT);   // Led Verde
     pinMode(A2, OUTPUT);   // Led Rojo
     pinMode(A3, OUTPUT);   // Led Azul
}

void loop() {
     LedVerde();
     delay(1000);
     LedRojo();
     delay(1000);
     LedAzul();
     delay(1000);
     Parpadeo();
}

void LedVerde(){
     analogWrite(A1, 255);
     analogWrite(A2, 0);
     analogWrite(A3, 255);
}

void LedRojo(){
     analogWrite(A1, 0);
     analogWrite(A2, 255);
     analogWrite(A3, 255);
}

void LedAzul(){
     analogWrite(A1, 255);
     analogWrite(A2, 255);
     analogWrite(A3, 0);
}

void LedBoton(){
     analogWrite(A1, 0);
     analogWrite(A2, 0);
     analogWrite(A3, 0);
}

void Parpadeo(){
     for (int i=0; i<=1; i++){
         // *** Blanco (255,255,255)**
         analogWrite(A1, 0); analogWrite(A2, 0); analogWrite(A3, 0);
         delay(250);
         // *** Negro (0,0,0)*********
         analogWrite(A1, 255); analogWrite(A2, 255); analogWrite(A3, 255);
         delay(250);
     }
     tone(A0,70,250);
}

Si no quisieras enviarlo el ánodo a 5Vcc podés agregarlo a un analógico en "HIGH"; te muestro un Ejemplo:

     pinMode(A0, OUTPUT);   // Led Verde
     pinMode(A1, OUTPUT);   // este remplaza los 5Vcc
     analogWrite(A1,HIGH);
     pinMode(A2, OUTPUT);   // Led Rojo
     pinMode(A3, OUTPUT);   // Led Azul


Con respecto al costo solo te puedo decir que pagué $5.- cada Led… Comprate un par y probalos; vas a ver qué diferencia… Te deseo lo mejor!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Aporte-Ahorro de Pines Digitales con un Led RGB
« Respuesta #1 en: 28 de Marzo de 2018, 18:28:08 »
Citar
Ahorro de Pines Digitales con un Led RGB

¿? ¿Que ahorro estas comentando? Seguis usando la misma cantidad de pines.

Citar
1.Encontré utilidad de los Pines ANALÓGICOS (Así liberé todos los DIGITALES).

Depende, algunos son PWM (soft o hard) lo cual siguen siendo DIGITALES. Otros poseen DAC y eso SI son analogicos.

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 190
Re:Aporte-Ahorro de Pines Digitales con un Led RGB
« Respuesta #2 en: 28 de Marzo de 2018, 18:56:58 »
Hola Killerjc

No ha sido mi intensión abrir un debate acerca de digitales si... digitales no.

Cuando realizo mis aportes son basados en mis experiencias personales. Que cosa me ha dado mejor resultado y que cosa me trajo mayores problemas.

Para que otros no pierdan el tiempo (como muchas veces me ha tocado perderlo a mi). Dicho esto.

En el caso que me encuentro hoy x hoy: Comunicar tres placas con un nRF24L01 y por otro lado un Bluetooth HC-05 (en el Server) + ledes Rojo, Azul y Verde he interruptores y un display; que responden a la señal que emito o recibo por el nRF24L01; los pines digitales son "imprescindibles", dado que las librerías para tal uso, nos limitan y exigen (en varios casos) reduciendo la posibilidad de adaptarlos los pocos pines libres que nos quedan.

En muchos casos los hobbystas (juniors) como yo. nos aferramos a lo que vamos viendo. Led ROJO, Led AZUL, Led VERDE, etc. en todos los casos y ejemplos que se encuentran en la Web se muestran y enseñan sobre los pines "digitales". No reparando que hay (sobre nuestra placa) otras opciones. Esta sería una de ellas.

Ese es el espiritu del post. Salir de lo que hemos aprendido a suerte de errores y aciertos. Un cordial saludo!

Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 214
Re:Aporte-Ahorro de Pines Digitales con un Led RGB
« Respuesta #3 en: 28 de Marzo de 2018, 19:27:47 »
si andas pobre de pines,  como has indicado,  deberias cambiarte al Arduino Mega.
No sé si lo sabés,  el Arduino Nano,  tiene dos pines extras de uso exclusivo Analógico,  y como los otros seis pines Analogicos,  se pueden emplear como digitales,  pues ganás dos pines en tu caso.
Investigá que es Charlieplexing,  p. e.  con tres pines digitales,  se pueden manejar SEIS led.
Creo que la solución a la falta de pines para manejar leds,  te conviene conseguir el chip i2c PCF8574,  que ya manejás en esos lcd "seriales",  estos chips,  viene en formato DIP.


 

anything