Étape 7: interrompre
incomingAudio = ADCH ;
dans la fonction loop() de l’esquisse de l’Arduino, je l’ai mis dans une fonction spéciale appelée « une routine d’interruption. » Le routage d’interruption ressemble à ceci :
{ISR(ADC_vect)}
incomingAudio = ADCH ;
}
Pensez-y comme un croquis normal, l’Arduino première traverse le setup() fonction puis il commence le loop(), mais chaque 26us (lorsqu’une nouvelle valeur est prête à partir A0) l’arrêt Arduino ce qu’elle fait dans la boucle et fait tout ce qui est encapsulé dans la routine d’interruption (dans ce cas, juste la ligne "incomingAudio = ADCH;"). Une fois finie la routine d’interruption, l’Arduino ramasse encore une fois, où il était dans le loop() pour un autre 26us. Puis la routine d’interruption exécute encore une fois... cela va sur répéter pour toujours. Si vous le souhaitez, vous pouvez en savoir plus sur Arduino interrompt ici.
Ce code d’interruption généralement une meilleure façon de lire le signal entrant de la façon dont je l’ai écrit dans la dernière étape parce que vous mettez à jour uniquement la variable incomingAudio une fois que chaque fois qu’une nouvelle valeur est disponible en. Il est inutile de mettre à jour la variable plusieurs fois, avant que la valeur a même eu le temps de changer. Aussi, si vous souhaitez enregistrer ces valeurs vous pouvez mettre le code de stockage dans la routine d’interruption si vous savez que la fréquence d’échantillonnage de stockage est exactement de 38,5 kHz.