Scheda controllo luci presepe ft1230k

Buongiorno a tutti.
Vi chiedo un piccolo aiuto, vorrei modificare lo sketch originale in modo che la musica sia sempre continua. Come faccio ?
allego sketch

type or paste code here
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>


const int P1 = 7;
const int P2 = 4;
const int P3 = 2;


const int OUT1 = 5;
const int OUT2 = 6;
const int OUT3 = 9;
const int OUT4 = 10;
const int OUT5 = 11;
const int OUT6 = 3;
const int CHANGESTATE = 12;
const int LEDPLAY = 13;
const int NEOPIXEL = 8;

const int TRIM1 = A0;
const int TRIM2 = A1;
const int TRIM3 = A2;
const int TRIM4 = A3;
const int TRIM5 = A4;
const int TRIM6 = A5;


//#define DEBUG            
#define STATE_DAY         0
#define STATE_SUNSET      1
#define STATE_NIGHT       2
#define STATE_SUNRISE     3

#define TRIMMER_DAY      0
#define TRIMMER_SUNSET   1
#define TRIMMER_NIGHT    2
#define TRIMMER_SUNRISE  3
#define TRIMMER_EXT      4
#define TRIMMER_VOL      5

#define OUT_SUN      0
#define OUT_STARS    1
#define OUT_COMET    2
#define OUT_FIRE     3

int fsm_state;
int fsm_stateold;
unsigned long runtime;
unsigned long time_day;
unsigned long time_sunset;
unsigned long time_night;
unsigned long time_sunrise;
unsigned long time_trim;
unsigned long time_debug;
unsigned long time_sunset_running;
unsigned long time_comet_running;
unsigned long time_sunrise_running;
unsigned long time_fire_running;
unsigned long time_volume_running;

int valuesun=0;
int valuestars=0;
int valuecomet=0;
boolean startFire;
boolean startVol=false;
boolean stopVol=false;
int valuehighfire=50;
int valuelowfire=0;

boolean playing=true;
int SwitchPressed=0;
//int VolOld=0;
int volume=0;




uint8_t trimmer[] = {
	TRIM1, TRIM4, TRIM2, TRIM3, TRIM5, TRIM6
};

unsigned long trimvalue[6] = {0,0,0,0,0,0};

uint8_t out[] = {
	OUT6, OUT2, OUT1, OUT3, OUT5, OUT6
};




void setup()  { 
  // declare pin 9 to be an output:
  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);
  pinMode(OUT5, OUTPUT);
  pinMode(OUT6, OUTPUT);
  pinMode(LEDPLAY, OUTPUT);
  pinMode(CHANGESTATE, OUTPUT);
  pinMode(TRIM1, INPUT);
  pinMode(TRIM2, INPUT);
  pinMode(TRIM3, INPUT);
  pinMode(TRIM4, INPUT);
  pinMode(TRIM5, INPUT);
  pinMode(TRIM6, INPUT);
  pinMode(P1, INPUT_PULLUP);
  pinMode(P2, INPUT_PULLUP);
  pinMode(P3, INPUT_PULLUP);
  

  delay (1000);
  Serial.begin(9600);
  mp3_set_serial (Serial);	//set Serial for DFPlayer-mini mp3 module
  setvolume(10);
  
  fsm_state = STATE_DAY;
  time_day=millis();
  time_debug=millis(); 
  time_trim=millis(); 
  trimvalue[fsm_state]=ReadTrimmer(fsm_state)*1000;
  
  SwitchPressed=checkSwitch();
  playtrack(1);
}   

void loop()  { 
  runtime=millis();
  
  
  if(runtime>time_debug+1000){
    #ifdef DEBUG
    Serial.print("runtime: ");
    Serial.println(runtime);
    Serial.print("fsm_state: ");
    Serial.println(fsm_state);
    switch (fsm_state){
      case STATE_DAY:
        Serial.print("time_day: ");
        Serial.println(time_day+(trimvalue[TRIMMER_DAY]));
        Serial.print("TRIMMER_DAY: ");
        Serial.println((trimvalue[TRIMMER_DAY]));
        Serial.println("-----------------");
        break;
      case STATE_SUNSET:
        Serial.print("time_sunset: ");
        Serial.println(time_sunset+(trimvalue[TRIMMER_SUNSET]));
        Serial.print("TRIMMER_SUNSET: ");
        Serial.println((trimvalue[TRIMMER_SUNSET]));
        Serial.print("valuesun: ");
        Serial.println(valuesun);        
        Serial.print("valuestars: ");
        Serial.println(valuestars);
        Serial.println("-----------------");
        break;
      case STATE_NIGHT:
        Serial.print("time_night: ");
        Serial.println(time_night+(trimvalue[TRIMMER_NIGHT]));
        Serial.print("TRIMMER_NIGHT: ");
        Serial.println((trimvalue[TRIMMER_NIGHT]));
        Serial.print("valuecomet: ");
        Serial.println(valuecomet);
        Serial.println("-----------------");
        break;
      case STATE_SUNRISE:
        Serial.print("time_sunrise: ");
        Serial.println(time_sunrise+(trimvalue[TRIMMER_SUNRISE]));
        Serial.print("TRIMMER_SUNRISE: ");
        Serial.println((trimvalue[TRIMMER_SUNRISE]));
        Serial.print("valuesun: ");
        Serial.println(valuesun);        
        Serial.print("valuestars: ");
        Serial.println(valuestars);
        Serial.print("valuecomet: ");
        Serial.println(valuecomet);        
        Serial.println("-----------------");
        break;  
     }   
    #endif
     
    if (fsm_state!=fsm_stateold){
      digitalWrite(CHANGESTATE, HIGH);
      fsm_stateold=fsm_state;
    }
    else
    {
      digitalWrite(CHANGESTATE, LOW);
    }
        
    time_debug=millis();
    
  }
  
  if(runtime>time_trim+200){
    for (int i=0;i<6;i++){
      trimvalue[i]=(ReadTrimmer(i));  
      trimvalue[i]=trimvalue[i]*100; 
      delay (2);
    }
    time_trim=millis();   
  }  


  
  switch (fsm_state){
    case STATE_DAY:
   
      digitalWrite(OUT4, LOW);
      digitalWrite(OUT5, LOW);
      valuesun=255;
      SetOut(OUT_SUN,valuesun);
      
      
      if(runtime>time_day+(trimvalue[TRIMMER_DAY])){
        fsm_state=STATE_SUNSET; 
        stopVol=false;   
        valuehighfire=10;
        valuelowfire=0;
        time_sunset=millis();
        time_sunset_running=millis();
        break;
      }
    
    gestAudio(fsm_state);    
      
    break;
    
    case STATE_SUNSET:

      if(runtime>time_sunset_running+(trimvalue[TRIMMER_SUNSET]/255)){    //sostituire la risoluzione con il valore di un trimmer
        if (valuesun>0) valuesun--;
        if (valuestars<254) valuestars++;
        SetOut(OUT_SUN,valuesun);
        SetOut(OUT_STARS,valuestars);
        time_sunset_running=millis();
      }

      if(runtime>time_sunset+((trimvalue[TRIMMER_SUNSET])/2)){    
        startFire= true;        
      }
      
      if (startFire==true && (runtime>time_fire_running+20)){    
        if (valuehighfire<200) valuehighfire++;
        if (valuelowfire<50) valuelowfire++;
        SetFire(valuelowfire,valuehighfire);
        time_fire_running=millis();
      }
      
      if(runtime>time_sunset+(trimvalue[TRIMMER_SUNSET])){
        startFire= false; 
        stopVol=false;
        fsm_state=STATE_NIGHT;
        SetOut(OUT_SUN,0);
        SetOut(OUT_STARS,255);
        time_night=millis();
        break;
      }

    gestAudio(fsm_state);    
      
    break;
   
    case STATE_NIGHT:
    
      analogWrite(OUT4, 255);
      analogWrite(OUT5, 040);     
    
      if(runtime>time_comet_running+((trimvalue[TRIMMER_NIGHT]/255)/4)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        if (valuecomet<254) valuecomet++;
        SetOut(OUT_COMET,valuecomet);
        time_comet_running=millis();
      }
      
      if(runtime>time_fire_running+20){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        SetFire(50,200);
        time_fire_running=millis();
      }
      
      
      if(runtime>time_night+(trimvalue[TRIMMER_NIGHT])){
        fsm_state=STATE_SUNRISE; 
        stopVol=false;
        startFire=true;
        SetOut(OUT_STARS,0);
        time_sunrise=millis();
        break;
      }
      
    gestAudio(fsm_state);  
    
    break;
    
    case STATE_SUNRISE:    
      if(runtime>time_comet_running+((trimvalue[TRIMMER_SUNRISE]/255)/4)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer dell'alba per spegnersi
        if (valuecomet>0) valuecomet--;
        SetOut(OUT_COMET,valuecomet);
        time_comet_running=millis();
      }
      
      if(runtime>time_sunrise+((trimvalue[TRIMMER_SUNRISE])/2)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        startFire= false; 
        SetOut(OUT_FIRE,0);       
      }
      
      if (startFire==true && (runtime>time_fire_running+20)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        if (valuehighfire>10) valuehighfire--;
        if (valuelowfire>0) valuelowfire--;
        SetFire(valuelowfire,valuehighfire);
        time_fire_running=millis();
      }
      
      if(runtime>time_sunrise_running+(trimvalue[TRIMMER_SUNRISE]/255)){    //sostituire la risoluzione con il valore di un trimmer
        if (valuesun<254) valuesun++;
        if (valuestars>0) valuestars--;
        SetOut(OUT_SUN,valuesun);
        SetOut(OUT_STARS,valuestars);
        time_sunrise_running=millis();
      }
      
      if(runtime>time_sunrise+(trimvalue[TRIMMER_SUNRISE])){
        fsm_state=STATE_DAY;
        stopVol=false;
        SetOut(OUT_SUN,255);
        SetOut(OUT_STARS,0);
        time_day=millis();  
        break;     
      }


    gestAudio(fsm_state);
    
    break;
    
  }
  
  
  if (SwitchPressed!=checkSwitch()){
    SwitchPressed=checkSwitch();
    if (SwitchPressed!=0){      
        if (!playing){
          #ifdef DEBUG
          Serial.println("Play");             
          #endif
          playing=true;
          int i=fsm_state;
          i++;
          if (i==5) i=1;
          playtrack(i);
//          gestAudio(fsm_state);
        }
        else
        {
          #ifdef DEBUG
          Serial.println("Stop");
          #endif
          mp3_stop ();
          digitalWrite (LEDPLAY,LOW);
          playing=false;
        }
      }
  }
  
  if ((volume!=(trimvalue[TRIMMER_VOL]/3500)) && (stopVol==true)){
    #ifdef DEBUG
      Serial.print("*********  Volume ");
      Serial.print(volume);
      Serial.print(" - Trimm ");
      Serial.println((trimvalue[TRIMMER_VOL]/3500));        
    #endif
    volume=(trimvalue[TRIMMER_VOL]/3500);
    setvolume(volume);    
  }
    
  
}


int ReadTrimmer (int id){
  return(analogRead(trimmer[id]));  
}

void SetOut (int id, int value){
  analogWrite(out[id],value);  
}

void SetFire(int low, int high){
  int randNumber = random(low, high);
  SetOut(OUT_FIRE,randNumber);
}  

int checkSwitch(){
  if (!digitalRead(P1)) return (1);
  if (!digitalRead(P2)) return (2);
  if (!digitalRead(P3)) return (3);  
  return(0);
}

void playtrack(int track){
        #ifdef DEBUG
        Serial.println("Playtrack");        
        #endif
        mp3_play(track);
        delay(100);
        mp3_single_loop (true);
//        playing=true; 
        delay(100); 
        digitalWrite (LEDPLAY,HIGH);
}

void setvolume(int volume){
    mp3_set_volume(volume);
    #ifdef DEBUG
    Serial.print("Vol ");
    Serial.println((volume));
    #endif
  
}

void gestAudio(int track){
  
//  digitalWrite (LEDPLAY,LOW);
  if (playing==true){
//      digitalWrite (LEDPLAY,HIGH);
      track++;
      if (track==5) track=1;
        if (stopVol==false){
          if(runtime>time_volume_running+250){ 
            if(startVol==false){ 
              if (volume>3) {
                volume=volume-3; 
                #ifdef DEBUG
                Serial.print("dec ");
                Serial.println(volume);  
                #endif
              }
              else
              {
                playtrack(track);
                delay (100);
                startVol=true; 
              } 
            }
            else
            {  
              if (volume<(trimvalue[TRIMMER_VOL]/3500)) {
                volume=volume+3;
               #ifdef DEBUG 
               Serial.print("inc "); 
               Serial.println(volume);   
               #endif
              }
              else
              {
                startVol=false;  
                stopVol=true;
                #ifdef DEBUG
                Serial.println("finito ciclo"); 
                #endif
              }  
            } 
          time_volume_running=millis();  
          setvolume(volume); 
          delay (100);  
          }          
        }  
      }  
}  

inoltre vorrei sapere come abbassare la tensione sull'uscita "Stars"

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>


const int P1 = 7;
const int P2 = 4;
const int P3 = 2;


const int OUT1 = 5;
const int OUT2 = 6;
const int OUT3 = 9;
const int OUT4 = 10;
const int OUT5 = 11;
const int OUT6 = 3;
const int CHANGESTATE = 12;
const int LEDPLAY = 13;
const int NEOPIXEL = 8;

const int TRIM1 = A0;
const int TRIM2 = A1;
const int TRIM3 = A2;
const int TRIM4 = A3;
const int TRIM5 = A4;
const int TRIM6 = A5;


//#define DEBUG            
#define STATE_DAY         0
#define STATE_SUNSET      1
#define STATE_NIGHT       2
#define STATE_SUNRISE     3

#define TRIMMER_DAY      0
#define TRIMMER_SUNSET   1
#define TRIMMER_NIGHT    2
#define TRIMMER_SUNRISE  3
#define TRIMMER_EXT      4
#define TRIMMER_VOL      5

#define OUT_SUN      0
#define OUT_STARS    1
#define OUT_COMET    2
#define OUT_FIRE     3

int fsm_state;
int fsm_stateold;
unsigned long runtime;
unsigned long time_day;
unsigned long time_sunset;
unsigned long time_night;
unsigned long time_sunrise;
unsigned long time_trim;
unsigned long time_debug;
unsigned long time_sunset_running;
unsigned long time_comet_running;
unsigned long time_sunrise_running;
unsigned long time_fire_running;
unsigned long time_volume_running;

int valuesun=0;
int valuestars=0;
int valuecomet=0;
boolean startFire;
boolean startVol=false;
boolean stopVol=false;
int valuehighfire=50;
int valuelowfire=0;

boolean playing=true;
int SwitchPressed=0;
//int VolOld=0;
int volume=0;




uint8_t trimmer[] = {
	TRIM1, TRIM4, TRIM2, TRIM3, TRIM5, TRIM6
};

unsigned long trimvalue[6] = {0,0,0,0,0,0};

uint8_t out[] = {
	OUT6, OUT2, OUT1, OUT3, OUT5, OUT6
};




void setup()  { 
  // declare pin 9 to be an output:
  pinMode(OUT1, OUTPUT);
  pinMode(OUT2, OUTPUT);
  pinMode(OUT3, OUTPUT);
  pinMode(OUT4, OUTPUT);
  pinMode(OUT5, OUTPUT);
  pinMode(OUT6, OUTPUT);
  pinMode(LEDPLAY, OUTPUT);
  pinMode(CHANGESTATE, OUTPUT);
  pinMode(TRIM1, INPUT);
  pinMode(TRIM2, INPUT);
  pinMode(TRIM3, INPUT);
  pinMode(TRIM4, INPUT);
  pinMode(TRIM5, INPUT);
  pinMode(TRIM6, INPUT);
  pinMode(P1, INPUT_PULLUP);
  pinMode(P2, INPUT_PULLUP);
  pinMode(P3, INPUT_PULLUP);
  

  delay (1000);
  Serial.begin(9600);
  mp3_set_serial (Serial);	//set Serial for DFPlayer-mini mp3 module
  setvolume(10);
  
  fsm_state = STATE_DAY;
  time_day=millis();
  time_debug=millis(); 
  time_trim=millis(); 
  trimvalue[fsm_state]=ReadTrimmer(fsm_state)*1000;
  
  SwitchPressed=checkSwitch();
  playtrack(1);
}   

void loop()  { 
  runtime=millis();
  
  
  if(runtime>time_debug+1000){
    #ifdef DEBUG
    Serial.print("runtime: ");
    Serial.println(runtime);
    Serial.print("fsm_state: ");
    Serial.println(fsm_state);
    switch (fsm_state){
      case STATE_DAY:
        Serial.print("time_day: ");
        Serial.println(time_day+(trimvalue[TRIMMER_DAY]));
        Serial.print("TRIMMER_DAY: ");
        Serial.println((trimvalue[TRIMMER_DAY]));
        Serial.println("-----------------");
        break;
      case STATE_SUNSET:
        Serial.print("time_sunset: ");
        Serial.println(time_sunset+(trimvalue[TRIMMER_SUNSET]));
        Serial.print("TRIMMER_SUNSET: ");
        Serial.println((trimvalue[TRIMMER_SUNSET]));
        Serial.print("valuesun: ");
        Serial.println(valuesun);        
        Serial.print("valuestars: ");
        Serial.println(valuestars);
        Serial.println("-----------------");
        break;
      case STATE_NIGHT:
        Serial.print("time_night: ");
        Serial.println(time_night+(trimvalue[TRIMMER_NIGHT]));
        Serial.print("TRIMMER_NIGHT: ");
        Serial.println((trimvalue[TRIMMER_NIGHT]));
        Serial.print("valuecomet: ");
        Serial.println(valuecomet);
        Serial.println("-----------------");
        break;
      case STATE_SUNRISE:
        Serial.print("time_sunrise: ");
        Serial.println(time_sunrise+(trimvalue[TRIMMER_SUNRISE]));
        Serial.print("TRIMMER_SUNRISE: ");
        Serial.println((trimvalue[TRIMMER_SUNRISE]));
        Serial.print("valuesun: ");
        Serial.println(valuesun);        
        Serial.print("valuestars: ");
        Serial.println(valuestars);
        Serial.print("valuecomet: ");
        Serial.println(valuecomet);        
        Serial.println("-----------------");
        break;  
     }   
    #endif
     
    if (fsm_state!=fsm_stateold){
      digitalWrite(CHANGESTATE, HIGH);
      fsm_stateold=fsm_state;
    }
    else
    {
      digitalWrite(CHANGESTATE, LOW);
    }
        
    time_debug=millis();
    
  }
  
  if(runtime>time_trim+200){
    for (int i=0;i<6;i++){
      trimvalue[i]=(ReadTrimmer(i));  
      trimvalue[i]=trimvalue[i]*100; 
      delay (2);
    }
    time_trim=millis();   
  }  


  
  switch (fsm_state){
    case STATE_DAY:
   
      digitalWrite(OUT4, LOW);
      digitalWrite(OUT5, LOW);
      valuesun=255;
      SetOut(OUT_SUN,valuesun);
      
      
      if(runtime>time_day+(trimvalue[TRIMMER_DAY])){
        fsm_state=STATE_SUNSET; 
        stopVol=false;   
        valuehighfire=10;
        valuelowfire=0;
        time_sunset=millis();
        time_sunset_running=millis();
        break;
      }
    
    gestAudio(fsm_state);    
      
    break;
    
    case STATE_SUNSET:

      if(runtime>time_sunset_running+(trimvalue[TRIMMER_SUNSET]/255)){    //sostituire la risoluzione con il valore di un trimmer
        if (valuesun>0) valuesun--;
        if (valuestars<254) valuestars++;
        SetOut(OUT_SUN,valuesun);
        SetOut(OUT_STARS,valuestars);
        time_sunset_running=millis();
      }

      if(runtime>time_sunset+((trimvalue[TRIMMER_SUNSET])/2)){    
        startFire= true;        
      }
      
      if (startFire==true && (runtime>time_fire_running+20)){    
        if (valuehighfire<200) valuehighfire++;
        if (valuelowfire<50) valuelowfire++;
        SetFire(valuelowfire,valuehighfire);
        time_fire_running=millis();
      }
      
      if(runtime>time_sunset+(trimvalue[TRIMMER_SUNSET])){
        startFire= false; 
        stopVol=false;
        fsm_state=STATE_NIGHT;
        SetOut(OUT_SUN,0);
        SetOut(OUT_STARS,255);
        time_night=millis();
        break;
      }

    gestAudio(fsm_state);    
      
    break;
   
    case STATE_NIGHT:
    
      analogWrite(OUT4, 255);
      analogWrite(OUT5, 040);     
    
      if(runtime>time_comet_running+((trimvalue[TRIMMER_NIGHT]/255)/4)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        if (valuecomet<254) valuecomet++;
        SetOut(OUT_COMET,valuecomet);
        time_comet_running=millis();
      }
      
      if(runtime>time_fire_running+20){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        SetFire(50,200);
        time_fire_running=millis();
      }
      
      
      if(runtime>time_night+(trimvalue[TRIMMER_NIGHT])){
        fsm_state=STATE_SUNRISE; 
        stopVol=false;
        startFire=true;
        SetOut(OUT_STARS,0);
        time_sunrise=millis();
        break;
      }
      
    gestAudio(fsm_state);  
    
    break;
    
    case STATE_SUNRISE:    
      if(runtime>time_comet_running+((trimvalue[TRIMMER_SUNRISE]/255)/4)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer dell'alba per spegnersi
        if (valuecomet>0) valuecomet--;
        SetOut(OUT_COMET,valuecomet);
        time_comet_running=millis();
      }
      
      if(runtime>time_sunrise+((trimvalue[TRIMMER_SUNRISE])/2)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        startFire= false; 
        SetOut(OUT_FIRE,0);       
      }
      
      if (startFire==true && (runtime>time_fire_running+20)){    //la cometa ci mette 1/4 del tempo impostato dal trimmer della notte per salire a regime
        if (valuehighfire>10) valuehighfire--;
        if (valuelowfire>0) valuelowfire--;
        SetFire(valuelowfire,valuehighfire);
        time_fire_running=millis();
      }
      
      if(runtime>time_sunrise_running+(trimvalue[TRIMMER_SUNRISE]/255)){    //sostituire la risoluzione con il valore di un trimmer
        if (valuesun<254) valuesun++;
        if (valuestars>0) valuestars--;
        SetOut(OUT_SUN,valuesun);
        SetOut(OUT_STARS,valuestars);
        time_sunrise_running=millis();
      }
      
      if(runtime>time_sunrise+(trimvalue[TRIMMER_SUNRISE])){
        fsm_state=STATE_DAY;
        stopVol=false;
        SetOut(OUT_SUN,255);
        SetOut(OUT_STARS,0);
        time_day=millis();  
        break;     
      }


    gestAudio(fsm_state);
    
    break;
    
  }
  
  
  if (SwitchPressed!=checkSwitch()){
    SwitchPressed=checkSwitch();
    if (SwitchPressed!=0){      
        if (!playing){
          #ifdef DEBUG
          Serial.println("Play");             
          #endif
          playing=true;
          int i=fsm_state;
          i++;
          if (i==5) i=1;
          playtrack(i);
//          gestAudio(fsm_state);
        }
        else
        {
          #ifdef DEBUG
          Serial.println("Stop");
          #endif
          mp3_stop ();
          digitalWrite (LEDPLAY,LOW);
          playing=false;
        }
      }
  }
  
  if ((volume!=(trimvalue[TRIMMER_VOL]/3500)) && (stopVol==true)){
    #ifdef DEBUG
      Serial.print("*********  Volume ");
      Serial.print(volume);
      Serial.print(" - Trimm ");
      Serial.println((trimvalue[TRIMMER_VOL]/3500));        
    #endif
    volume=(trimvalue[TRIMMER_VOL]/3500);
    setvolume(volume);    
  }
    
  
}


int ReadTrimmer (int id){
  return(analogRead(trimmer[id]));  
}

void SetOut (int id, int value){
  analogWrite(out[id],value);  
}

void SetFire(int low, int high){
  int randNumber = random(low, high);
  SetOut(OUT_FIRE,randNumber);
}  

int checkSwitch(){
  if (!digitalRead(P1)) return (1);
  if (!digitalRead(P2)) return (2);
  if (!digitalRead(P3)) return (3);  
  return(0);
}

void playtrack(int track){
        #ifdef DEBUG
        Serial.println("Playtrack");        
        #endif
        mp3_play(track);
        delay(100);
        mp3_single_loop (true);
//        playing=true; 
        delay(100); 
        digitalWrite (LEDPLAY,HIGH);
}

void setvolume(int volume){
    mp3_set_volume(volume);
    #ifdef DEBUG
    Serial.print("Vol ");
    Serial.println((volume));
    #endif
  
}

void gestAudio(int track){
  
//  digitalWrite (LEDPLAY,LOW);
  if (playing==true){
//      digitalWrite (LEDPLAY,HIGH);
      track++;
      if (track==5) track=1;
        if (stopVol==false){
          if(runtime>time_volume_running+250){ 
            if(startVol==false){ 
              if (volume>3) {
                volume=volume-3; 
                #ifdef DEBUG
                Serial.print("dec ");
                Serial.println(volume);  
                #endif
              }
              else
              {
                playtrack(track);
                delay (100);
                startVol=true; 
              } 
            }
            else
            {  
              if (volume<(trimvalue[TRIMMER_VOL]/3500)) {
                volume=volume+3;
               #ifdef DEBUG 
               Serial.print("inc "); 
               Serial.println(volume);   
               #endif
              }
              else
              {
                startVol=false;  
                stopVol=true;
                #ifdef DEBUG
                Serial.println("finito ciclo"); 
                #endif
              }  
            } 
          time_volume_running=millis();  
          setvolume(volume); 
          delay (100);  
          }          
        }  
      }  
}  

Si prega di utilizzare la lingua inglese nelle sezioni inglesi del forum.

Argomento spostato nella sezione italiana del forum.

@Paips60

:warning:
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato. Grazie.

Buongiorno, Giuseppe.

Per cortesia, pubblica il programma nel massaggio, in maniera che sia immediatamente e facilmente visibile anche da telefonini, indentato correttamente e usando il CODE che trovi in alto.

Grazie
Gianluca

Fatto. Puoi aiutarmi a rolvere i miei due problemi ?

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