Contrôleur DJ USB bricolage (8 / 16 étapes)

Étape 8: Firmware - microcontrôleur secondaire

Lieu de la MSP430G2553 dans le Launchpad et branchez-le sur votre ordinateur. Télécharger le code fourni, puis ouvrez-le dans Energia. Ci-dessous j’ai fournir un aperçu général de la façon dont les fonctions de code. Je ne couvrira pas le fonctionnement de la bibliothèque de clavier parce qu’il est assez bien documenté ici

Le microcontrôleur secondaire est responsable de communiquer avec le MCP3008 sur SPI et interpréter les entrées clavier. J’ai inclus les deux le code secondaire microcontrôleur pour ce projet et une démo que j’ai fait pour communiquer avec le MCP3008 en général (tutoriel seulement j’ai trouvé était de Raspberry Pi). Cela devrait fonctionner sur Launchpad et Arduino je pense.

Comprendre le Code

Chaque fois qu’une touche est pressée, relâchée ou tenue, la fonction appelée keypadEvent est appelée. Cette fonction est responsable de l’envoi de messages au microcontrôleur principale lorsque l’état du clavier.

En tout cas, lorsqu’une touche est enfoncée par exemple, SendKeypadEvent est appelée avec les arguments de la touche (la touche qui a été utilisée), un vrai (1 ce qui signifie que la touche a été enfoncée), un digitalRead de P1.7 (qui est le commutateur 2 voies qui identifie le pont qui est affecté par la pression de touche) et le Mode actuel (ce qui est déterminé dans la boucle principale du programme).

SendKeypadEvent met en forme le message afin qu’elle puisse être comprise par la suite sur toute la ligne. Voir l’étape précédente pour plus d’informations sur la façon dont le protocole est formaté pour chaque contrôle. Il envoie deux octets qui indique au programme quelle touche a été enfoncée (ou si il est sorti), le pont actuel et le mode actuel.

Maintenant, si nous regardons la boucle principale du programme, nous voyons quelques morceaux de code. Le premier bit du code se lit que le clavier et la toute nouvelle activation de touche est envoyées à partir de là. La deuxième section lit tous les contrôles analogiques. La troisième section envoie un message de changement de pont. Cela se fait dans la boucle principale à l’aide d’un indicateur défini par la routine d’interruption du service, car l’envoi des données série dans les rapports de recherche internationale sont inefficaces.

Les boutons sont bien toutes les classes de SPI_Control. Cela localise toutes les variables et les méthodes et vous permet d’enregistrer n’importe quel nombre de boutons dont vous avez besoin. La boucle principale vérifie seulement si la classe a décidé il y a une valeur nouvelle (assez), et s’il y a, il envoie un message détaillant quel bouton et est ce que la nouvelle valeur. Mon commentaire dans le code résume assez bien la communication avec le MCP3008 sur SPI :

À la lecture de données auprès de l’EI d’ADC MCP3008 :

Veuillez noter que le SPI est en mode 0,0, ce qui signifie SCLK tourne au ralenti dans un État « faible »

Mesures

  1. Tirez CS/SS (sélection de Chip select/Slave) broches faible (0)
  2. Envoyer des données bit start, qui est 00000001 ou 0 x 01 (lire la fiche technique)
  3. Envoyer les données de sélection d’entrée configuration/canal
    1. Remarque : Format de données de configuration entrée: SGL/DIFF, D1, D2, D0, X, X, X, sélectionne X. SGL/DIFF quel mode, D0, D1 et D2 (3 bits) sélectionner le canal à lire (0-7) et le XXXX n’importent pas. 1 = asymétriques, 0 = différentiel
  4. Le premier octet reçu sera comme suit:? /? /? /? /? / B8/B9/0, où ? est inconnu, 0 est un peu null et B9 et B8 sont les premiers bits de l’échantillon de 10 bits. L’octet suivant reçu sera le reste de l’échantillon de 10 bits
  5. Pour obtenir une lecture utile, nous devons combiner les 2 bits du premier message avec le deuxième message. Nous pouvons effectuer cela en taillant les 6 premiers bits du premier octet (à l’aide de bits & avec le masque 0b00000011) décalage de 8 bits vers la gauche et l’OR au niveau du bit-ment le premier octet avec le deuxième octet
  6. Fin de communication en définissant CS/SS retour haut

C’est un peu déroutant, mais tout ce que vous devez savoir est que la fonction readADC obtient seulement une valeur de 10 bits de la MCP3008 pour n’importe quel canal.

Si nous examinons la fonction SendDeckChange, vous remarquerez qu’il est envoyé comme une presse de clavier. Puisque nous avons seulement 12 touches, mais nous représentons la touche qui a été utilisée avec 4 bits, nous pouvons utiliser des 12-15 pour que ce soit parce qu’elles se matérialiseront jamais comme entrée du matériel. Si nous utilisons la clé ID 15 pour représenter les changements de pont.

C’est à peu près tout. Chaque cycle d’horloge le microcontrôleur scanne pour voir si un bouton de clavier a été enfoncé, le MCP3008 les requêtes pour toutes les valeurs de bouton et vérifie si elles ont changé au sein d’une certaine sensibilité et vérifie également si le commutateur de pont a été renversé. Voir le code pour plus d’explications, c’est assez bien commenté.

Télécharger le Code

Maintenant vous devriez avoir une compréhension du fonctionne du firmware secondaire microcontrôleur, alors allons-y et téléchargez-le ! Entrer le code que j’ai posté dans votre fenêtre de code de Energia et cliquez sur la coche dans le coin pour vérifier/compiler. Il devrait tout vérifier. Quand cela est fait, Télécharger le code pour le microcontrôleur en cliquant sur la flèche à côté de la coche. Lorsque c’est terminé, débranchez le Launchpad, supprimer le microcontrôleur et mettre de coté pour l’instant.

Articles Liés

Faire votre propre clavier ou contrôleur MIDI USB pas cher

Faire votre propre clavier ou contrôleur MIDI USB pas cher

Je cherchais un périphérique contrôleur USB MIDI (ou interface) pour les applications de musique comme le clavier de piano ou orgue ou pédalier. Après quelques recherches, j'ai voulu aller vers une solution plus « fait maison ». Mon choix a été final
Contrôleur DMX USB Pro et terminator pour QLC +

Contrôleur DMX USB Pro et terminator pour QLC +

Aujourd'hui, je veux partager avec vous comment faire un contrôleur de USB DMX professionnel cherche à utiliser avec le logiciel de contrôle tels que QLC + l'éclairage. Dans environ 5 à 10 minutes et environ 35 $ en pièces et d'expédition.Ce projet p
Contrôleur MIDI USB teensy pour contrôler Mobius Looper

Contrôleur MIDI USB teensy pour contrôler Mobius Looper

Motivation :Jouer dans un groupe de 2 pièces, avec les tambours et beaucoup d'autres échantillons en cours de lecture comme playbacks, il fallait utiliser un looper pour ajouter en plus d'éléments de la voie ferrée. Un looper temps basé ne parvient p
Contrôleur de moteur bricolage MOSFET

Contrôleur de moteur bricolage MOSFET

Il s'agit d'un simple pour construire le contrôleur de moteur. Il est pratique pour de nombreux projets à l'aide d'un moteur commandé par un microcontrôleur. Il peut être utilisé comme un contrôleur électronique de vitesse (ESC) et exerce un contrôle
Original Xbox contrôleur d’USB Joystick

Original Xbox contrôleur d’USB Joystick

c'est mon premier ! instructable ! Oui!!!maintenant, je sais il est un peu daté... mais j'ai toujours l'utiliser parce que... Eh bien ça marche et c'est assez facileet comme tout bons instructables il apporte la vie à quelque chose qui n'est plus uti
Contrôleur MIDI USB

Contrôleur MIDI USB

J'ai commencé ce projet en raison de mon amour avec la musique. Je peux jouer divers instruments, mais je suis juste de commencer avec la production musicale. Quelque chose que je pensais était utile sont un contrôleur MIDI qui que j'utiliserais pour
Contrôleur de LED bricolage débutants (

Contrôleur de LED bricolage débutants (<> </>

Vous avez toujours voulu une matrice de LED changeant de couleur au-dessus de votre lit ou dans votre salon ? Vous voulez faire vos propres lumières de Noël ? Vous souhaitez contrôler exactement comment vos LEDs vont se comporter ? Ai une automatique
Comment faire pour configurer un contrôleur USB NES avec NESTOPIA sur le PC

Comment faire pour configurer un contrôleur USB NES avec NESTOPIA sur le PC

NESTOPIA jouer n'est pas la même chose sans un contrôleur NES USB. Dans ce tutoriel, vous apprendrez comment les boutons map et mettre en place la manette NES USB.
Contrôleur de moteur Arduino Lego EV3 enregistrer 45 $

Contrôleur de moteur Arduino Lego EV3 enregistrer 45 $

En faisant un contrôleur de moteur bricolage lego ev3Étape 1: Intro J'ai un kit appelé le lego mindstorms EV3 c'est un incroyable robotique de 349 $ kit qui vraiment est simple à construire comme lego, mais dispose de fonctionnalités vraiment génial
Teensy Monster v1.0 / / bricolage contrôleur MIDI

Teensy Monster v1.0 / / bricolage contrôleur MIDI

Bienvenue sur le monstre Teensy Instructable !Ce Instructable vous aidera à monter votre monstre Teensy, comprendre comment le programmer et fournir de nombreux conseils pour la création d'un contrôleur de bricolage grand.teensymonster.ccAcheter votr
Un cadre pour créer des contrôleurs modulaires abordables & élégants (USB vers MIDI, caché, ou série)

Un cadre pour créer des contrôleurs modulaires abordables & élégants (USB vers MIDI, caché, ou série)

***J'AI CRÉÉ UN NOUVEAU POUR INSTRUCTABLE CONTRÔLEURS DE BRICOLAGE :**************************************************************************************************************************************************************************************
Faire un contrôleur de jeu USB

Faire un contrôleur de jeu USB

Ici à NextFab, nous avons conçu une fonctionnelle complète, contrôleur de jeu USB pour Philly Tech Week. Ce projet sera particulièrement délicat sans certains équipements électroniques plus grave ou un makerspace local avec les outils appropriés, mai
Ajouter contrôleur de jeu USB pour Arduino Leonardo/Micro

Ajouter contrôleur de jeu USB pour Arduino Leonardo/Micro

Remarque importante : Cet article est pour Arduino IDE version 1.6.5 (ou au-dessous). Pour ajouter un contrôleur de jeu USB un Arduino Leonardo ou le Micro à l'aide de l'IDE Arduino version 1.6.6 (ou supérieur) Voir l'Instructable suivant : Arduino L
Contrôleur USB NES avec un arduino !

Contrôleur USB NES avec un arduino !

MISE À JOUR 22/12/2014Mattpbooth utilisateur Instructables a mis à jour le code et il héberge sur github :https://github.com/mattpbooth/ArduinoNESController...Merci Matt !MISE À JOUR 12/03/2011Remplacé un println avec impression (PEEM).MISE À JOUR 12