¿Cómo puedo unir dos códigos?

Hola, soy bastante nuevo en esto de Arduino y me tope con un problema, y es que necesito que dos códigos funcionen a la vez pero no pude lograrlo.
El proyecto es uno escolar y trata de hacer sonar una canción junto con un pequeño adornado de "figuritas" que llevarían leds con un efecto tipo vela.
Ambos códigos funcionan por separado al menos en TinkerCad
De antemano gracias

//código de la canción, es muy mala pero bueno 
long    DO=261,
        DO2=523,
        RE=293,
        MI=329,
        FA=350,
        FAS=370,
        FA2=698,
        SOL=392,
        SOLS=415,
        SOL2=783,
        LA=440,
        LAS=446,
        LA2=880,
        SI=493,
        SI2=980,
        MI2=659; 

int melodia[] = {LA, SOLS, LA, SI, DO, MI, MI2, RE, DO, SI, LA, SOL, FAS, SOL, LA, SI, SI, RE, DO, SI, LA ,SOL, FAS, MI, FAS, SOL, LA, DO, LA, SI, LA, SOLS, LA, MI, SI, SOLS, MI, SI, MI, 
                 LA, SOLS, LA, SI, DO, MI, MI2, RE, DO, SI, LA, SOL, FAS, SOL, LA, SI, SI, RE, DO, SI, LA ,SOL, FAS, MI, FAS, SOL, LA, DO, LA, SI, LA, SOLS, LA, MI, SI, SOLS, MI, SI, MI, 
                 MI, FA, MI, RE, DO, SI, LA, FAS, MI2, LA2, SOLS, LA, MI, DO, LA, 
                 LA, DO, DO, LA, DO, DO, MI, RE, RE, MI, RE, RE, LA, DO, RE, MI, DO, LA, RE, SI, SOLS, MI, SOLS, SI, 
                 LA, DO, DO, LA, DO, DO, MI, RE, RE, MI, RE, RE, LA, DO, RE, MI, DO, LA, RE, SI, SOLS, MI, SOLS, SI, 
                 LA, MI2, MI2, MI, DO2, DO2, LA2, SOL2, SOL2, LA2, SOL2, SOL2, FA2, FA, FA, DO2, SI2, LA2, SOLS, MI, SI, LAS, MI, SI, 
                 LA, MI2, MI2, MI, DO2, DO2, LA2, SOL2, SOL2, LA2, SOL2, SOL2, FA2, FA, FA, DO2, SI2, LA2, SOLS, MI, SI, LAS, MI, SI
};

int b=1000, n=500, c=250, s=125; 
int duracionNota[] = {c, c, c, c, n, c, c, c, c, c, c, c, c, c, c, n, c, c, c, c, c, c, c, c, c, c, n, c, c, c, c, c, c, n, c, c, n, n, b, 
                      c, c, c, c, n, c, c, c, c, c, c, c, c, c, c, n, c, c, c, c, c, c, c, c, c, c, n, c, c, c, c, c, c, n, c, c, n, n, b, 
                      n, n, n, n, n, n, n, n, n, b, n, n, n, n, b, 
                      n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, 
                      n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, 
                      n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, 
                      n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n,
};

void setup()
{
pinMode(11, OUTPUT);      
}

void loop(){
   for (int notaActual = 0; notaActual < 189; notaActual++) {  //va a repetir las 112 notas

    tone(11, melodia[notaActual]); //da el tono a la frecuencia de la nota en ese momento
    delay(duracionNota[notaActual]);//se mantiene con la nota el tiempo definido para esa nota
    noTone(11); //finaliza la melodía
   }
}

//código de los led tipo vela
int ledPin = 9;     
int val = 0;       
int delayval = 0;   
  
void setup() {   
randomSeed(0);    
pinMode(ledPin, OUTPUT);  
} 
  
void loop() {   
val = random(100,255); 
analogWrite(ledPin, val);   
  
  delayval = random(50,150);   
delay(delayval);             
} 

Ambos códigos contienen una instrucción delay(), lo que significa que es imposible combinarlos en uno. Primero necesita reescribir cada código sin usar delays, por ejemplo usando millis.

Ve a documentación y lee como usar millis().

@alberto_uri tal vez esta consulta del foro te ayude: usar millis() junto con for()

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