Il dessiner vous-même - MIDI controller avec encre conductrice (5 / 6 étapes)

Étape 5: Le capteur capacitif MPR121

https://www.Sparkfun.com/Products/9695

Le capteur capacitif, que j’ai utilisé pour ce projet est le MPR121. Le MPR121 est un contrôleur de capteur tactile capacitif piloté par une interface I2C (dans ce cas le contrôleur maître est un Arduino). La puce peut contrôler jusqu'à 12 électrodes individuels. Comme dans mon projet, j’utilisais 20 broches (pour 20 boutons), j’ai utilisé 2 capteurs : J’ai utilisé les 12 électrodes des électrodes 1er et 8 de la seconde. Il y a un guide très utile de raccordement sur le site de sparkfun, qui rendra plus facile à comprendre comment utiliser ce capteur. Je vous recommande de télécharger le code qu’ils utilisent et modifiez-la quatre vos besoins. Si vous voulez faire des trucs plus avancés que ce qui est expliqué dans ce guide, je recommande de jeter un oeil à sa fiche technique pour savoir comment le faire communiquer avec l’Arduino via I2C.

Guide de branchement :

https://Learn.Sparkfun.com/tutorials/mpr121-hookup...

Fiche technique :

https://www.Sparkfun.com/datasheets/Components/MPR...

Si vous regardé le schéma de fichier de Fritzing que j’ai joint, vous découvrirez que beaucoup des connexions du schéma (pull-up résistances, condensateurs...) est déjà soudés lorsque vous achetez le capteur MPR121 à Sparkfun.

Ensuite, j’ai va remarquer quelques remarques importantes sur la façon de configurer le capteur pour ce projet :

1) DMV :

Fais attention!! le MPR121 fonctionne avec Vdd = 3, 3V. Vous brûlerez il si vous le connectez à la sortie 5V de l’Arduino.

2) le programme d’installation :

Dans le guide de raccordement, vous trouverez ceci :

 void mpr121_setup(void) { set_register(0x5A, ELE_CFG, 0x00); set_register(0x5A,.... ......... 

Ce qu’il fait est de mettre en place le capteur MPR121 correctement : sélectionnez le nombre d’électrodes utilisées, choisissez la charge/décharge actuelle et l’heure pour chaque capteur, définir la version de touch/seuil pour chacune des électrodes... Vous n’avez pas besoin de savoir exactement de quoi il s’agit : vous pouvez simplement copier et modifier certaines lignes pour votre projet. Vous avez juste besoin d’appeler cette fonction sur la configuration de votre Arduino et faites-le encore chaque fois que vous voulez modifier la configuration du capteur (dans mon cas, quand j’ai les boutons de réglage ou de modifier les modèles, par exemple). Je vais vous expliquer quelques aspects sur la configuration du capteur dans les prochains points.

Fondamentalement, la fonction « set_register » a fait la communication I2C entre le capteur et l’Arduino. Elle est définie comme suit :

 void set_register(int address, unsigned char r, unsigned char v) { Wire.beginTransmission(address); Wire.write(r); Wire.write(v); Wire.endTransmission(); } 

Deux des plus importants registres sont les registres de Configuration AFE 1et 2 (registres 0x5C et 0x5D). Voir la page 13 de la feuille de données pour plus de détails. Changer les valeurs de cette registres définira le courant de charge/décharge et le temps pour les électrodes, les itérations de filtrage et ainsi de suite. Je recommande de jouer qu'un peu avec les valeurs de CDT et CDC afin que vous puissiez trouver ceux adaptés pour la détection correcte touch/publication dans votre projet (peut-être qu’ils n’auront pas à être modifiés, mais peut-être qu’ils vont).


3) l’adresse de chaque capteur :

Il y a un problème lorsque vous souhaitez utiliser deux ou plusieurs capteurs de MPR121 à la fois, parce que tous ont la même adresse par défaut pour la communication I2C : c’est l’adresse 0x5A. Si vous regardez la feuille de données, il est dit que 4 adresses différentes peuvent être choisis, selon où vous soudez la broche adresse : DMV, Vss, le SDA ou SCL. Par défaut, le jury est livré avec la goupille d’adresse soudée à Vss (sol), donc si vous souhaitez utiliser plus d’un capteur, il faut couper cette connexion: à côté de la broche d’adresse, vous trouverez deux petits carrés métalliques qui sont liés par une ligne très fine : cette ligne est la connexion entre la broche de l’adresse et le sol. Vous devez couper cette petite ligne d’un des capteurs avec un cutter et souder la broche d’adresse à la DMV, par exemple, afin que la nouvelle adresse de ce capteur n’est pas 0x5A plus : au contraire, il sera 0x5B.

C’est exactement ce que j’ai fait pour ce projet, donc j’ai eu deux capteurs : première adresse était 0x5A et le second sa a été 0x5B.

4) configuration du seuil de touch/Release :

La configuration du seuil tactile et sortie se faite à l’intérieur de l’installation de MPR121. Si vous suivez le guide de branchement et regardez la bibliothèque de mpr121.h, les valeurs par défaut sont 0xA0 pour touch_threshold et 0xB0 pour seuil de rejet. Une possibilité est de changer la valeur de la touche et seuil pour chaque broche, en utilisant une variable byte pour cela. Par exemple, pour un capteur :

 <p>byte touch_treshold_1st_sensor[12] = { 0xA0, 0X94, 0xB2.... //random values for example<br>byte release_treshold_1st_sensor[12] = { 0xB0,0xC3, 0xA8.... ...... ..... void mpr121_1st_sensor_setup(void) { ....... set_register(0x5A, ELE0_T, touch_treshold_1st_sensor[0]); set_register(0x5A, ELE0_R, release_treshold_1st_sensor[0]); set_register(0x5A, ELE1_T, touch_treshold_1st_sensor[1]); set_register(0x5A, ELE1_R, release_treshold_1st_sensor[1]); ........</p> 

Je trouve que cela est la façon la plus simple pour définir les valeurs seuils touch/publication différente pour chaque modèle : vous pouvez enregistrer les valeurs sur l’Arduino EEPROM et il suffit de les charger dans le capteur, selon le modèle que vous utilisez.

Cependant, j’ai eu des problèmes avec cela : certains des boutons j’ai dessiné sur certains modèles étaient hors de portée, donc je ne pourrais pas faire un montage correct. Donc au lieu de modifier les valeurs de seuil, je changeais l’actuel pour chaque broche individuelle du capteur de Charge/décharge. Vous pouvez apprendre comment faire cela à la page 14 de la feuille de données. Cela a fonctionné mieux pour moi, parce que la gamme de détection tactile/sortie pour chaque électrode est plus élevée. Il s’agit d’un exemple de comment je l’ai fait :

 <p>// 20 byte array: 12 values for 1st sensor and 8 for 2nd sensor. Initial value: 0x28<br>byte CDC_sensor[20] = {0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28};</p><p>.......</p><p>//Then I used the encoder to select the CDC_sensor[i] value for each pin</p><p>for (int i=0; i<20; i++)</p><p>{</p><p> //encoder stuff</p><p> if... //if encoder position is increased</p><p> {CDC_sensor[i] ++;}</p><p> else...//if encoder position is decreased</p><p> {CDC_sensor[i] --;}</p><p>}</p><p> //finally, everytime a CDC_sensor value is changed, you need to make the setup again:</p><p>void mpr121_1st_sensor_setup(void)<br>{ ....... </p><p> set_register(0x5A, 0x5F, CDC_sensor[0]); //el 0<br> set_register(0x5A, 0x60, CDC_sensor[1]); //el 1 set_register(0x5A, 0x61, CDC_sensor[2]); //el 2</p><p> ........</p> 

Vous devriez essayer d’utiliser de la manière qui convient le mieux pour vous : changer les valeurs de seuil d’électrodes ou les valeurs actuelles de frais individuels.

5) interruption pour Arduino :

Le capteur MPR121 dispose d’une broche d’IRQ, qui doit être défini avec une résistance de pull-up, et va vers le bas chaque fois que le capteur détecte une touche ou une sortie dans l’une de ses électrodes. Je recommande donc à souder ce broches aux broches interruption Arduino, qui sont 3 et 2 numériques. De cette façon, vous pouvez utiliser la fonction Arduino Attachinterrupt :

http://Arduino.cc/en/Reference/AttachInterrupt

Mais soyez prudent ! pas beaucoup de trucs code doit se faire à l’intérieur de l’interruption : par exemple, le port série ne fonctionne pas (par conséquent, les messages MIDI ne fonctionnent pas soit, parce que le port série est utilisé pour la transmission). J’ai seulement utilisé les interruptions pour modifier la valeur d’une variable de type boolean qui détermine si une broche a été touchée ou non. Ensuite, j’ai fait les changements correspondants dans le programme général de boucle. Voir le code :

 //interrupt variables static boolean touch_1st = false; static boolean touch_2nd = false; //in the setup: //interrupts attachInterrupt(0, touching_1st_sensor, FALLING); attachInterrupt(1, touching_2nd_sensor, FALLING); //outside the loop void touching_1st_sensor() { touch_1st = true; } void touching_2nd_sensor() { touch_2nd = true; } //in the loop if(touch_1st) { //check for electrodes... touch_1st = false; } if(touch_2nd) { //check for electrodes... touch_2nd = false; }<br> 

Avec tout cela, je pense que vous avez suffisamment d’informations pour faire quelques débutants et trucs niveau moyen avec le capteur MPR121.

Articles Liés

Votre propre galaxie sur un papier... Affiche avec encre conductrice + LEDs

Votre propre galaxie sur un papier... Affiche avec encre conductrice + LEDs

Je suis tombé sur l'encre conductrice dans mes recherches et comme un étudiant en Design, j'ai commencé à remettre en question son utilisation sur mes projets. J'ai imaginé une affiche avec LEDs et typographie où la lumière serait une illustration du
Papier électronique : Rendre Interactive, une oeuvre musicale avec encre conductrice

Papier électronique : Rendre Interactive, une oeuvre musicale avec encre conductrice

si vous avez toujours voulu apporter un morceau de papier à la vie, voici votre chance. Cette instructable vous mènera à travers toutes les étapes nécessaires pour créer une brochure interactive incroyable ou vos créations. Ce flyer de l'événement es
Carte de Firefly avec encre conductrice

Carte de Firefly avec encre conductrice

Cette carte a été faite dans la Nuit de construire de Scribe de YuKonstruct Circuit et utilise le stylo à encre conductrice Electroninks et Chibitronics LED autocollant.Pour cette carte, vous aurez besoin :Papier-carton foncé (j'ai utilisé la moitié
Réparer un porte-clés avec encre conductrice

Réparer un porte-clés avec encre conductrice

J'ai eu un porte-clé pour ma voiture qui n'a pas été bons comme auparavant. Cette instructable restauré les boutons à leur fonction d'origine.Étape 1: Ce que vous devez 1 la Boa pour réparer 2 une pièce de monnaie pour ouvrir l'encre conductrice FAB
Pad MIDI XY avec Arduino et TFT

Pad MIDI XY avec Arduino et TFT

Il y a quelques semaines, quand j'ai regardé après quelques idées/modules/boucliers pour démarrer de nouveaux projets/expériences avec des microcontrôleurs, que j'ai trouvé quelque chose d'intéressant qui cadrerait parfaitement dans mon projet plus â
Circuit de découverte de synthèse sonore avec l’encre conductrice Circuitscribe Kit

Circuit de découverte de synthèse sonore avec l’encre conductrice Circuitscribe Kit

(Note : c'est un poste client pour Eureka ! Usine de Chuck Stephens dans le cadre de leur programme de Instructables construire nuit.)Dans un projet antérieur, j'ai créé une carte de prototypage pour le circuit de Circuitscribe kit de construction. I
Arduino personnalisé MIDI Controller

Arduino personnalisé MIDI Controller

Bonjour et Bienvenue à cette instructable sur comment construire un contrôleur MIDI USB personnalisé, bon marché et facile, basé sur Arduino. Les meilleures nouvelles : aucun souci avec interfaces USB-MIDI ou outils logiciels tels que MIDI sans poil,
SugarCube MIDI Controller

SugarCube MIDI Controller

Ce projet est un contrôleur MIDI portable, Arduino-powered, basé sur une grille qui démarre dans une variété d'applications à faire beaucoup de choses avec le son. Il a 16 boutons rétro-éclairés, utilisés comme les entrées et les sorties de donner au
Arcade bouton MIDI Controller

Arcade bouton MIDI Controller

ayant une interface matérielle de votre musique préférée / DJ / logiciels VJ peut vraiment ouvrir portes dans votre créativité. La forme la plus répandue de contrôle matériel sur votre PC pour de telles applications est un MIDI controller.Un contrôle
Comment vous faire de la 3D avec le maquillage

Comment vous faire de la 3D avec le maquillage

Dans le tutoriel vidéo vous pouvez voir l'ensemble du processus et il me ferait incroyablement heureux si vous serait check it out et vous abonner à mon youtube < 3Étape 1: Comment vous faire de la 3D avec le maquillageHelloo les gens !Me voici avec
Synthé bricolage + MIDI controller

Synthé bricolage + MIDI controller

Vous voulez être en mesure de contrôler votre Synthétiseur bricolage avec le MIDI ?Jouer avec un clavier ou de séquence il dans votre logiciel d'édition Audio préféré ?Étape 1: Ce que vous devezMatériel1 x Kit de bricolage synthé1 x Arduino Uno1 câbl
Synthétiseur MIDI SoundFont avec Intel Edison et Fluidsynth

Synthétiseur MIDI SoundFont avec Intel Edison et Fluidsynth

Sur ce Instructable, je vais montrer comment construire votre propre synthétiseur MIDI SoundFont utilisant Intel Edison et Fluidsynth.En suivant les étapes décrites ici, vous aurez un synthétiseur qui peut jouer presque n'importe quel SoundFont dispo
Construire une base Midi Controller partie 1 - 3 facile Pot (potentiomètre) Arduino Uno effets Midi Controller (série-USB)... Rapide, facile et bon marché !

Construire une base Midi Controller partie 1 - 3 facile Pot (potentiomètre) Arduino Uno effets Midi Controller (série-USB)... Rapide, facile et bon marché !

Bonjour à tous,Je suis relativement nouveau sur Arduino et donc ont dû faire face à ma façon de faire mes propres contrôleurs midi. Il y a une quantité énorme d'informations pointillées autour, mais je ne pouvais pas trouver un tutoriel simple pour u
Dessin d’un Portrait de comiques avec Sketchbook Pro

Dessin d’un Portrait de comiques avec Sketchbook Pro

SketchBook Pro est mon préféré, logiciel de dessin. Contrairement à certains autres logiciels d'illustration, carnet de croquis est très intuitive. Tout ce que j'ai dû faire est chercher mon stylet et le tirage au sort, un peu comme un véritable carn