Étape 7: Programmation (lecture et tester les commutateurs pédales)
Chaque fois que je démarre un nouveau projet de matériel et je suis prêt à écrire le code, je vais tester toujours toutes les entrées et sorties avec un peu esquisser ce crache juste toutes leurs valeurs au moniteur série. De cette façon que je peux voir que tout fonctionne avant même de commencer le code réel. Enregistrer ce code spécifique au projet pour plus tard est très pratique car il y a des moments où je vais devoir télécharger à nouveau, soit parce que quelque chose ne fonctionne pas, j’ai ajouté un autre interrupteur/bouton qui doit initiale stable. L’utilisation de serial monitor pour déboguer et tester est toujours délicat avec les applications MIDI, parce qu’ils partagent la série TX, port sur l’Arduino. (soit l’un soit l’autre peut utiliser le port série) Il faut commenter vos lignes de communication série et décommenter les lignes du MIDI, ou vice versa. Vous voulez s’assurer que votre sortie est juste avant de commencer à envoyer des messages MIDI, étant donné que vous serez un peu aveugle, sauf si vous utilisez un MIDI contrôle application.
pedalPins Byte [12] = {2,3,4,5,6,7,8,9,10,15,17,16} ; les broches de l’Arduino chaque pédale sont sur
lastPin Byte [12] = {0,0,0,0,0,0,0,0,0,0,0,0} ;
currentPin Byte [12] = {0,0,0,0,0,0,0,0,0,0,0,0} ;
pour (int x = 0; x < 12; x ++) {}
currentPin[x]=digitalRead(pedalPins[x]) ;
si (currentPin[x]!=lastPin[x]) { / / actuelle et dernière broche ne pas MATCH, un événement s’est produit
lastPin [x] = currentPin [x] ;
Si (currentPin[x]==0) {Serial.print ("pédale") ; Serial.Print(x+1) ; Serial.println ("Up") ; }
Si (currentPin[x]==1) {Serial.print ("pédale") ; Serial.Print(x+1) ; Serial.println ("Down"). }
};
}
}
Lorsque vous travaillez avec un interrupteur momentané, afin d’éviter les déclencheurs répétées du commutateur poussé que la boucle s’exécute à plusieurs reprises, nous habituellement stocker la valeur « dernier » qui avait de l’interrupteur et le compare à la valeur actuelle qui a été lu juste. Puis, nous pouvons voir que les deux valeurs ne correspondent pas, alors nous savons que quelque chose a changé. Penser que ce changement est un événement où quelque chose doit se passer. Dans le cas des pédales, c’est la logique changeant de 0 à 1, soit 1 à 0 (interrupteur ouvert ou fermé). Basé sur l’orientation de l’événement, vous faire différentes actions, comme l’envoi d’une Note MIDI ou Note Off message. Dans le code ci-dessus, nous sauvegardons 12 actuelles et dernières valeurs distinctes, une pour chacune des pédales. Cela permet à maintenez la pédale #1 et poussez pédale #5, alors que nous organisions #1 parce qu’ils sont tous indépendants suivis. L’importance de ce midi, c’est que vous avez besoin d’envoyer des messages correspondants Note Off chaque fois que vous lancez une note par Note sur. Si vous n’avez pas, quel que soit synthétiseur connecté sera juste continuer à jouer les mêmes notes monotone et finalement vous aurez 12 notes tout sur en même temps avec rien à dire de cesser de jouer la note. Ils joueront pour toujours jusqu'à ce que vous réinitialisiez votre synthétiseur.
La capture ci-dessus de code de test fonctionne, mais il est très plein d’entrain avec répété haut/bas déclencheurs que la pédale est Poussée ou lâcher prise (en particulier lorsque vous retirez votre pied, comme la pédale littéralement rebondit vers le haut à cause du mécanisme à ressort). Nous allons debounce dans l’étape suivante.