Perdon aca esta la siguiente parte del post
El proyecto se trata de controlar LED's RGB con 74hc595
todo esta bien conectado
aca esta el codigo, los pulsadores estan conectados en pull down y con resistencia de 4.7k
he intentado con 1 solo pero no he podido hacerlo
El monitor de arduino me marca que se queda en 1
// El Clock y data pins son pines del hardware SPI, no se podra elegirlos si usa el hardware SPI.
// Data pin es MOSI (Uno y anteriores: 11, Leonardo: ICSP 4, Mega: 51, Teensy 2.0: 2, Teensy 2.0++: 22)
// Clock pin es SCK (Uno y anteriores: 13, Leonardo: ICSP 3, Mega: 52, Teensy 2.0: 1, Teensy 2.0++: 21)
// Se Puede elegir el pin "latch" .
const int ShiftPWM_latchPin=8;
// ** Si elimina el comentario de esta parte para NO usar el puerto SPI y cambie los números de pin. Esto es 2.5 veces más lento **
// #define SHIFTPWM_NOSPI
const int ShiftPWM_dataPin = 11; const int ShiftPWM_clockPin = 13;
// Si los LED se encienden si el pin es bajo, configúrelo en true; de lo contrario, configúrelo en false.
const bool ShiftPWM_invertOutputs = true;
// Se Puede habilitar la opción siguiente para cambiar la fase PWM de cada registro de desplazamiento por 8 en comparación con la anterior.
// Esto aumentará ligeramente la carga de interrupción, pero evitará que todas las señales PWM se vuelvan altas al mismo tiempo.
// Esto será un poco más fácil para la fuente de alimentación, ya que los picos actuales se distribuyen.
const bool ShiftPWM_balanceLoad = false;
#define SHIFTPWM_USE_TIMER2
#include <ShiftPWM.h> // incluye ShiftPWM.h después de configurar los pines ._.
// Aquí establece el número de niveles de brillo(0 a 255) , la frecuencia de actualización y el número de registros de desplazamiento.
// Estos valores afectan la carga de ShiftPWM.
// Eligi sabiamente y use la función PrintInterruptLoad () para verificar su carga. Puede explotar <-\('-')
// Hay una calculadora en en internet para estimar la carga.
int currentLevel=1;
unsigned char maxBrightness = 255;
unsigned char pwmFrequency = 75;
int numRegisters = 6;
int numRGBleds = numRegisters*8/3;
// se declara los pulsadores
const int Pulsador = 2; //pulsador 1
const int inputPin2 = 3; //pulsador 2
boolean Estado_Pulsador; // Para almacenar el estado del pulsador low o high
boolean Estado_Anterior; // Usada para saver cundo soltamos el pulsador
byte Secuencia = 1; // Para manejar la secuencia de salidas
byte Total_Secuencias=2; // Cambia aquipara limitar ell numero de secuencias
unsigned long T_Apagar=3000; // Tiempo a mantener pulsado el boton para apagar
unsigned long T_Pulsado=0; // Auxiliar para controlar tiempo de boton pulsado
int contador =1;
int numeropulsaciones=1;
void setup(){
Serial.begin(9600);
Estado_Anterior = false; // Iniciamos elproceso con el boton sin pulsar
// Se Establece la cantidad de registros de 8 bits que se utilizan.
ShiftPWM.SetAmountOfRegisters(numRegisters);
// SetPinGrouping permite flexibilidad en la configuración de LED.
// Si tus LED están conectados así: RRRRGGGGBBBBRRRRGGGGBBBB, use SetPinGrouping (4). si no se mezclaran los colores
ShiftPWM.SetPinGrouping(1); //Este es el valor predeterminado, pero se puede agregar otro valor para demostrar cómo usar la función
ShiftPWM.Start(pwmFrequency,maxBrightness);
boolean
pinMode(Pulsador, INPUT);
}
void loop()
{
// Estado_Pulsador = !digitalRead(Pulsador); // Lee el estado del botón pull up.
Estado_Pulsador = !digitalRead(Pulsador); // Lee el estado del botón pull down.
if (Estado_Pulsador && !Estado_Anterior) // Si pulsador pasa de low a high (entra al pulsar pero no al mantener pulsado)
{
T_Pulsado=millis()+T_Apagar; // Para controlar el timpo que pasa pulsado
Estado_Anterior=true; // No enta en el if hasta q pulsador pase de high a low
Secuencia++; // Pasamos a siguiente secuencia
}
if (!Estado_Pulsador && Estado_Anterior) // Si pulsador pasa de high a low (entra al soltar pulsador pero no al mantener despulsado)
{
Estado_Anterior=false; // No enta en el if hasta q pulsador pase de low a high
T_Pulsado=0; // Al soltar pulsador ya no controlamos el tiempo que permanece pulsado
}
if (T_Pulsado>0 && Estado_Pulsador && millis()>T_Pulsado)
{ // Si hay tiempo cargado para controlar el fin y esta pulsado y ha transcurrido el tiempo para apagarlo
T_Pulsado=0; // Ya no controlamos tiempo de pulsado
Secuencia=0; // Secuencia 0, todo apagado
}
if (Secuencia>Total_Secuencias) // Si se han acabado las secuencias
{Secuencia=1;} // Regresamos a la primera (podrias poner T_Pulsado=0; para finalizar aqui)
switch (Secuencia)
{
case 0:
//No hay secuencia, apagar o hacer lo que necesites
break;
case 1:
// Actualiza el LED aleatorio a color aleatorio. re Flashero
for(int i=0;i<1000;i++){
ShiftPWM.SetHSV(random(numRGBleds),random(360),255,255);
delay(30);
}
break;
case 2:
// Fundido en todas las salidas
for(int j=0;j<maxBrightness;j++){
ShiftPWM.SetAll(j);
delay(10);}
break;
}
Serial.println(Secuencia);
// Muestra información sobre la frecuencia de interrupción, la duración y la carga de su programa
ShiftPWM.PrintInterruptLoad();
}