Light organ 3 channels to 6 channels

Hi!
I have found this code, and i test it. It works great. http://fritzing.org/media/fritzing-repo/projects/a/arduino-psychedelic-light-organ/code/OrganoLuces.ino

I want to modify that to 6 channels, so i modified it.

#include <fix_fft.h>

#define MUESTRAS 128           
#define LOGM 7                 

#define BAJOS_MEDIOSA 7 
#define MEDIOSA_MEDIOS 18
#define MEDIOS_AGUDOS 25
#define AGUDOS_AGUDOSA 30
#define AGUDOSA_AGUDOSAA 35

#define BPIN  3
#define BPINA 5
#define MPIN  6
#define MPINA 11
#define APIN  10
#define APINA 9

#define MAX_PASADAS 10         

char data[MUESTRAS];         
char im[MUESTRAS];             

unsigned char salida[MUESTRAS/2];  
unsigned char bajos, bajosa,medios, mediosa, agudos , agudosa;  

byte  pasada,                            
      acumBajos, acumBajosa,acumMedios,acumMediosa,acumAgudos,acumAgudosa,   
      limBajos, limBajosa,limMedios,limMediosa,limAgudos,limAgudosa;    

void aplicaVentana (char *vData) {
    double muestrasMenosUno = (double(MUESTRAS) - 1.0);
	
    for (uint8_t i = 0; i < MUESTRAS/2 ; i++) {
        double indiceMenosUno = double(i);
        double ratio = (indiceMenosUno / muestrasMenosUno);
        double factorPeso = 0.5 * (1.0 - cos(6.28 * ratio));
	vData[i] *= factorPeso;
	vData[MUESTRAS - (i + 1)] *= factorPeso;
    }
}

void setup() {                   
    
   
   
    bitWrite(ADCSRA,ADPS2,1);
    bitWrite(ADCSRA,ADPS1,0);
    bitWrite(ADCSRA,ADPS0,1); 

   
    
    analogReference(INTERNAL);   
    
   
    pinMode(BPIN,OUTPUT);
    pinMode(BPINA,OUTPUT);
    pinMode(MPIN,OUTPUT);
    pinMode(MPINA,OUTPUT);
    pinMode(APIN,OUTPUT);
    pinMode(APINA,OUTPUT);
    
    
    pasada = 0;
    acumBajos = acumBajosa = acumMedios = acumMediosa = acumAgudos = acumAgudosa = 0;
    limBajos = limBajosa = limMedios = limMediosa = limAgudos = limAgudosa = 50;
}

void loop() {

    
    for( int i=0; i < MUESTRAS; i++) {
       data[i] = analogRead(0)/4 -128;                                 
       im[i] = 0;                                                 
    }
    
    
    aplicaVentana (data);
 
   
    fix_fft(data,im,LOGM,0);
    
  
   
   	
    for (int i=0; i < MUESTRAS/2; i++){
       salida[i] = data[i] * data[i] + im[i] * im[i];
    }
   
    
    bajos = 0;
    for (int i=2; i < BAJOS_MEDIOSA; i++){
      bajos += salida[i];
    }
    bajos = bajos/2;
    
    bajosa = 0;
    for (int i=BAJOS_MEDIOSA; i<MEDIOSA_MEDIOS; i++){
     bajosa += salida[i];
    } 
    bajosa = bajosa/2;
    
    medios = 0;
    for (int i=MEDIOSA_MEDIOS ; i < MEDIOS_AGUDOS; i++){
      medios += salida[i];
    }
    medios = medios/2;
    
    mediosa = 0;
    for(int i=MEDIOS_AGUDOS; i < AGUDOS_AGUDOSA;i++){
      mediosa += salida[i];
    }
    mediosa = mediosa/2;
    
    agudos = 0;
    for (int i=AGUDOS_AGUDOSA; i < AGUDOSA_AGUDOSAA;i++){
      agudos += salida[i];
    }
    agudos = agudos/2;
    
    agudosa =0;
    for(int i = AGUDOSA_AGUDOSAA; i<i < MUESTRAS/2; i++){
      agudosa += salida[i];
    }
    agudosa = agudosa/2;
      
      
      
      
      
    
  
   
   int siBajos  =  bajos  > limBajos;
   int siBajosa  =  bajosa  > limBajosa;
   int siMedios =  medios > limMedios;
   int siMediosa =  mediosa > limMediosa;
   int siAgudos =  agudos > limAgudos;
   int siAgudosa =  agudosa > limAgudosa;
   
   digitalWrite(BPIN,siBajos ? HIGH : LOW);
   digitalWrite(BPINA,siBajosa ? HIGH : LOW);
   digitalWrite(MPIN,siMedios? HIGH : LOW);
   digitalWrite(MPINA,siMediosa? HIGH : LOW);
   digitalWrite(APIN,siAgudos? HIGH : LOW);
   digitalWrite(APINA,siAgudosa? HIGH : LOW);
   
   
   
  
   
   
   acumBajos  += siBajos;
   acumBajosa  += siBajosa;
   acumMedios += siMedios;
   acumMediosa += siMediosa;
   acumAgudos += siAgudos;
   acumAgudosa += siAgudosa;
   
   if ( ++pasada > MAX_PASADAS ) {
      pasada = 0;
      limBajos  = 20 + acumBajos*5;
      limBajosa  = 20 + acumBajosa*5;
      limMedios = 20 + acumMedios*5;
      limMediosa = 20 + acumMediosa*5;
      limAgudos = 20 + acumAgudos*5;
      limAgudosa = 20 + acumAgudosa*5;
      
      acumBajos  = 0;
      acumBajosa  = 0;
      acumMedios = 0;
      acumMediosa = 0;
      acumAgudos = 0;
      acumAgudosa = 0;
   }
 }

No erros, but circuit do not work. Where is the mistake?

Thank you.

Please, I need help. Anyone? :slight_smile: