Je tente de créer un générateur de midi clock à partir d'un arduino.
Le projet me semblait accessible, pourtant je cale.
Il me semblait qu'il "suffisait" de pousser un "OxF8" tous les 24eme de temps.
Malheureusement mon Volca Keys qui me sert pour les tests se contente de:
-friser de temps en temps
-bloquer l'horloge interne sans se synchroniser
-générer une note
Dans le doute par rapport à mon montage, j'ai chargé le sketch de démo "midi_test" qui fonctionne sans sourciller.
#define CLOCKS_PER_BEAT 24;
#define tempo 12;
(...)
Serial.begin(31250); // ouverture du TX serie à 31250 (vitesse du midi)
(...)
void sendMidiClock()
{
unsigned long ticktime = 2.5e3 / tempo; //60L * 1000 / tempo / CLOCKS_PER_BEAT;
time = millis();
if (tick == 0)
{
next = time + ticktime;
tick++;
}
if (time > next)
{
tick++;
next = time + ticktime;
}
if (tick == 1)
{
Serial.print(0xF8);
}
if (tick == 25)
{
tick = 1;
}
}
Et compte tenu du principe du canard en plastique, je prends conscience que le 0xF8 doit être envoyé à chaque changement de tick! Malgré tout celà ne fonctionne toujours pas.
A priori, déjà il faut remplacer le serial.print par serial.write ;)
Sinon pas d'erreur générer dans ton cas je crois, mais attention aux ";" après les DEFINE.
J'ai aussi un doute sur ta notation scientifique (que je n'utilise jamais...) qui me semble faire un cast float vers unsigned long.
Edit : d'après quelques pages effectivement, le compilateur va interpréter 2.5e3 comme un float. 2500 serait aussi bien ;)
Quand l'été est si pluvieux ou l'hiver si froid...
Oui il faut effectivement optimiser mais dans un premier temps je code vite fait un truc pour un concert ce samedi.
Le but est de changer de programme et d'horloge simultanément sur plusieurs machines.
Quant aux interruption, il va falloir que je replonge dans mes cours d'algorithmes,.
Il y a certainement plusieurs chapelles, toutes fréquentables ;) De mon coté je réserve globalement les interruptions aux protocoles matériels etc... Pour des ticks et indirectement "le groove..." je préfère les références de temps (en microseconde) qui me permettent de mettre en place des algos de rattrapage de temps (le temps élastique...), de mieux distribuer le temps libre etc..
Quand l'été est si pluvieux ou l'hiver si froid...