Comment mettre en pause et relance une partition

Bonjour à tous,

Je débute dans le codage sur arduino et je galère un max.
Voilà, je souhaiterais lire une partition et la mettre en pause.
En gros j'appuie sur un bouton elle joue la première note en continue
J'appuie de nouveau sur le bouton elle fait une pause
Un nouvel appuie elle joue la note suivante en continu et ainsi de suite.

Voici ce que j'ai codé mais la gestion des start et pause je galère.
D'avance merci pour votre soutien.

# define DO 65
# define DOd 69
# define RE 74
# define REd 78
# define MI 83
# define FA 87
# define FAd 93
# define SOL 98
# define SOLd 104
# define LA 110
# define LAd 117
# define SI 123

int EtatBouton = 0;
int NouvelEtatBouton = 0;
int Compteur = 0;

int nombreLigne = 6;
int Bouton = 11;
int tempsBase = 150;

int melody[6][4]={
SOL,1,2,0,
LA,1,2,0,
SI,1,2,0,
DO,1,2,0,
SI,1,2,0,
LA,1,2,0,
};

char pinHP=12;

void setup()
{
pinMode(pinHP, OUTPUT);
digitalWrite(pinHP, LOW);
pinMode(Bouton,INPUT);
}

void loop(){
EtatBouton = digitalRead(Bouton); // Intérogation de l'état du bouton poussoir
if(EtatBouton == HIGH) // Si le bouton est appuyé on lance la boucle ChangeFeu()
JoueMelody();

  
}

void JoueMelody(){
for (int p=0;p<nombreLigne;p++)
{
char note=melody[p][0];
char temps=melody[p][1];
char octave=melody[p][2];
char silence=melody[p][3];

int frequence=note*pow(2,octave);
int duree=tempsBase*temps;
int pause=silence*tempsBase;

tone(pinHP,frequence);
delay(duree);
noTone(pinHP);
delay(pause);
}
delay(100);
}
[color=#222222]

Que fait JoueMelody() selon vous ? Combien de temps prend-elle à s’exécuter si vous appelez cette fonction ?

+++++

corrigez votre post ci dessus et rajoutez les code tags (balises de code) autour du code:
[code]`` [color=blue]// votre code ici[/color] ``[/code].

ça doit ressembler à cela:// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l’IDE avant de copier le code pour qu’il soit indenté correctement)

@J-M-L Merci de votre conseil, c'est la première fois que je post sur ce forum et ne connaissais pas cette astuce.

Tes fréquences sont approximatives, car tu les définis comme des entiers. Ca va être un peu "faux".
moi je ferais ça (à la place des #define du début)

const float alpha = pow ( 2., 1./12. ); // un demi-ton
const float LA = 110.; // le LA2 = référence

const float SOLd = LA / alpha;
const float SOL = SOLd / alpha; 
const float FAd = SOL  / alpha; 
.../...
const float DO    = DOd  / alpha

const float LAd  = LA  * alpha;
const float SI    = LAd * alpha;

alpha est le rapport de fréquence entre 2 notes voisines (1/2 ton), environ 1.05
12 1/2 tons font une octave, c-à-d un rapport 2. on a donc alpha puissance 12 = 2, donc alpha est la racine 12ème de 2 ( = pow ( 2., 1./12.) )

Je vais essayer, sinon auriez-vous une idée pour mon problème initial?
D'avance merci.

Ta fonction JouerMelody() joue toute la partition, sans se préoccuper des appuis sur le bouton.

biggil:
Ta fonction JouerMelody() joue toute la partition, sans se préoccuper des appuis sur le bouton.

c’était ce que je voulais lui faire découvrir par ma question en #1