Étape 9: Code
Contrôlant le multiplexeur
Télécharger le code depuis le Dépôt GitHub ScoreKeep, ou depuis le fichier joint ci-dessous.
Pour résumer, le segment est contrôlé à l’aide d’un multiplexeur qui renvoie à un segment différent chaque milliseconde. J’ai utilisé une interruption de la minuterie pour s’assurer que le moment était précis. Une interruption de minuterie fait exactement ce qu’il dit. Elle interrompt le code pour exécuter des commandes écrites dans l’accompagnement routine de service d’interruption (ISR) à des intervalles de temps précis. Un bon tutoriel sur les interruptions de minuterie Arduino peut être trouvé ici.
L’interruption timer dans ce code génère à un seul segment à l’aide du multiplexeur. Sur la prochaine itération de l’ISR, le code renvoie à un autre segment et ainsi de suite. Donc, si nous souhaitons afficher le numéro 22 (segments A, B, D, E et G du deux chiffre des dizaines et unités), le code serait sortie au segment A du chiffre sur la première itération, puis au segment B, puis le segment D, puis le segment E, puis segment G, toutes les unités. Sur la prochaine itération, nous l’avons sortie au segment A des dizaines chiffre, puis segment B, puis segment D, puis le segment E, puis segment G. ensuite, nous partons du segment A du chiffre à nouveau et répéter jusqu'à ce que le numéro que nous avons besoin afficher les modifications.
Détecter un score
En utilisant le code de capteur de distance, nous utilisons la distance retournée et vérifier si elle est inférieure à une « scoreThreshold ». Si la distance à l’objet plus proche suivant se rapproche vraiment, alors il doit être une balle en passant par le cerceau. En outre, j’ai ajouté une période réfractaire pour la détection d’un coup. Cela signifie que, lorsqu’un coup de feu est détecté au temps t, puis un autre coup ne peut être enregistré jusqu'à un certain laps de temps t. Je pense que j’ai choisi 2 secondes, mais vous pouvez choisir d’augmenter ou de diminuer cela comme bon vous semble. Cela, car la fonction loop() de l’Arduino est exécuté si rapidement qu’il enregistrerait le même coup de plus d’une fois que la balle passe à travers le cerceau.
Score de l’incrément
Incrémente le score par un point quand une note est détectée.