Tekenen-het-zelf - MIDI controller met de geleidende inkt (5 / 6 stap)

Stap 5: De MPR121 capacitieve Sensor


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

De capacitieve Sensor die ik voor dit project gebruikte is de MPR121. De MPR121 is een Capacitieve touch sensor controller gedreven door een I2C-interface (in dit geval de hoofdbesturing is een Arduino). De chip kunt maximaal twaalf individuele elektroden. Zoals in mijn project was ik met behulp van 20 pins (voor 20 knopen), gebruikte ik 2 sensoren: Ik gebruikte de 12 elektroden van de elektroden van de 1ste en 8 van de tweede. Er is een zeer nuttig hookup gids op de website van sparkfun, waardoor het makkelijker om te begrijpen hoe te gebruiken deze sensor. Ik adviseer de code ze gebruiken en wijzigen het vier te downloaden uw behoeften. Als u maken van de meer geavanceerde dingen wilt dan wat wordt uitgelegd in deze handleiding, adviseer ik een kijkje nemen in het gegevensblad om te weten hoe te communiceren met de Arduino via I2C maken.

Hookup gids:

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

Datasheet:

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

Als je keek naar het Fritzing bestand schema die ik gekoppeld, vindt u uit dat veel van de aansluitingen van het schema (pull-up weerstanden, condensatoren...) al wanneer u de MPR121 sensor op Sparkfun koopt worden gesoldeerd.

Vervolgens zal ik de opmerking van sommige belangrijke opmerkingen over het opzetten van de sensor voor dit project:

1) Vdd:

Wees voorzichtig!! de MPR121 werkt met Vdd = 3,3 v. U zal het branden als u deze op de uitgang van de 5V van de Arduino aansluit.

2) de instellen:

In de gids van de aansluiting vindt u dit:

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

Wat het doet is het opzetten van de MPR121-sensor correct: Selecteer het nummer van de elektroden gebruikt, kiest u de lading/kwijting stroom en de tijd voor elke sensor, stel de versie van de aanraking/drempel voor elke elektrode... U hoeft niet te weten precies waar het om gaat: u kunt gewoon kopiëren en veranderen sommige van de regels voor uw project. U hoeft deze functie oproepen op uw Arduino Setup, en doe het opnieuw welbeschouwd u zin voor het wijzigen van de instelling van de sensor (in mijn geval, toen ik de knoppen aanpassen of wijzigen van de sjablonen, bijvoorbeeld). Ik zal enkele aspecten uitleggen over de instelling van de sensor in de volgende punten.

De 'set_register'-functie maakt in principe de I2C communicatie tussen de sensor en de Arduino. Zij wordt gedefinieerd als volgt:

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

Twee van de meest belangrijke registers worden de registers van de AFE configuratie 1 en 2 (registers 0x5C en 0x5D). Zie bladzijde 13 van het gegevensblad voor meer informatie. Veranderen de waarden van deze registers zal definiëren de lading/kwijting stroom en de tijd voor de elektroden, de filter iteraties, enzovoort. Ik beveel het spelen die een beetje met de CDT en CDC waarden zodat geschikt zijn voor de detectie van de juiste touch/release vindt u in uw project (misschien ze niet hoeft te worden gewijzigd, maar misschien ze zullen).


3) het adres van elke sensor:

Er is een probleem wanneer u gebruiken twee of meer MPR121 sensoren tegelijk, wilt omdat ze allemaal het zelfde standaardadres voor de I2C communicatie: dit is het adres 0x5A. Als je kijkt naar het gegevensblad, het zegt dat 4 verschillende adressen kunnen worden gekozen, afhankelijk van waar u de adres-pin solder: Vdd, Vss, SDA of SCL. Standaard komt de Raad van bestuur met de adres-speld vastgesoldeerd aan Vss (gemalen), dus als je gebruiken meer dan één sensor wilt, heb je te snijden hierover: naast de pin adres vindt u twee kleine metalen vierkanten die zijn verbonden met een zeer dunne lijn: deze regel is de verbinding tussen het adres pin en de grond. U moet deze kleine lijn van één van de sensoren met een kotter knippen, en soldeer de adres pin aan Vdd, bijvoorbeeld, zodat het nieuwe adres van deze sensor niet meer 0x5A is: in plaats daarvan het 0x5B zal worden.

Dit is precies wat ik deed voor dit project, dus ik had twee sensoren: de ene's adres was 0x5A en de tweede iemands was 0x5B.

4) touch/Release drempel instellen:

De aanraking en release drempel setup wordt gedaan binnen het MPR121-setup. Als je de aansluiting gids volgen en kijken naar de mpr121.h-bibliotheek, zijn de standaardwaarden 0xA0 voor touch_threshold en 0xB0 voor release drempel. Eén mogelijkheid is te wijzigen van de waarde van de aanraking en de vrijgave van de drempel voor elke pin, met behulp van een byte-variabele voor het. Bijvoorbeeld voor een sensor:

 <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> 

Ik vind dit de eenvoudigste manier om verschillende touch/release drempelwaarden definiëren voor elk sjabloon: u kunt de waarden op de Arduino EEPROM opslaan en laden ze gewoon in de sensor, afhankelijk van de sjabloon die u gebruikt.

Echter had ik problemen met dit: sommige van de knoppen die ik trok op sommige sjablonen werden buiten het bereik, zodat ik kon niet het maken van een juiste installatie. Dus in plaats van de waarden voor drempel wijzigen, ik was het veranderen van de lading/kwijting huidige voor elke individuele pin van de sensor. U kunt leren hoe dit te doen op bladzijde 14 van het gegevensblad. Dit werkte beter voor me, want het aantal touch/release detectie voor elke elektrode groter was. Dit is een voorbeeld van hoe ik het deed:

 <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> 

U moet proberen te gebruiken de manier waarop is meest geschikt voor jou: de elektrode drempelwaarden of de huidige waarden van afzonderlijke kosten wijzigen.

5) Arduino onderbreken:

De MPR121-sensor heeft een IRQ-pin, die worden ingesteld met een pull-up weerstand moet, en gaat naar lage everytime de sensor detecteert een aanraking of een release in één van de elektroden. Dus adviseer ik om te solderen deze pinnen op de Arduino interrupt-pinnen, die digitale 2 en 3. Op deze manier kunt u de Arduino Attachinterrupt functie:

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

Maar wees voorzichtig! niet veel code spullen moet gebeuren binnen de interrupt: bijvoorbeeld, de seriële poort niet werkt (dus de MIDI-berichten werken of niet, want de seriële poort wordt gebruikt voor de transmissie ervan). Ik gebruikte alleen de interrupts te wijzigen van de waarde van een Booleaanse variabele, die bepaald of één pin was geraakt of niet. Vervolgens, mij did de corresponderende wijzigingen aangebracht in de algemene lus-programma. Zie de 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> 

Met dit alles, ik denk dat je genoeg informatie om sommige beginner en middellange niveau dingen doen met de MPR121-sensor.

Gerelateerde Artikelen

Arduino Midi-controller met een ZX afstand en gebaar Sensor

Arduino Midi-controller met een ZX afstand en gebaar Sensor

Welkom bij dit instructable over het bouwen van een zeer basic Midi-Controller met de SparkFun ZX afstand en gebaar Sensor. Dit instructable is onderdeel van een schoolwerk.Opmerking: Dit is geen codering tutorial. De definitieve code zal worden opge
MIDI-Controller met toetsenborden

MIDI-Controller met toetsenborden

We bouwen vandaag de 400 sleutel MIDI-controller met behulp van een Arduino en computer toetsenborden!Voor de budget bewuste muziekproducenten daar is dit project een geweldige manier om het bouwen van een goedkope control board voor uw digitale audi
Hoe te maken en verbinding maken met de geleidende inkt

Hoe te maken en verbinding maken met de geleidende inkt

Project invoering:Dit is een instructable demonstreren hoe blote geleidende inkt gebruiken met de blote geleidende bestuur. Het doel van dit project is om te laten zien hoe mensen kunnen maken en verbinding maken met de geleidende inkt.Materialen:-Op
Kit verkennen van polyfone geluidssynthese met de geleidende inkt Circuitscribe Circuit

Kit verkennen van polyfone geluidssynthese met de geleidende inkt Circuitscribe Circuit

(Opmerking-Dit is een gastpost voor Eureka! Fabriek door Chuck Stephens als onderdeel van hun Instructables bouwen Night programma.)Ik heb gemaakt in een vorige project een prototyping board voor het Circuitscribe circuit bouwen kit. Hier zal ik gebr
Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Wat is het?DIY Segway/balans controller met moderne digitale IMU sensor.Software voor een Arduino waarmee het standpunt om gegevens te lezen van een van de nieuwere digitale accelerometer/gyroscoop eenheden, processen, de gegevens met behulp van Kalm
U Rock Guitar midi controller met Bluetooth BLE en oplaadbare batterij

U Rock Guitar midi controller met Bluetooth BLE en oplaadbare batterij

In deze tutorial zal ik u tonen hoe te schakelen gitaar u Rock gitaar in een midi-controller voor Bluetooth 4.0 met oplaadbare batterij. De oplossing was simpel maar moest denken.Dit systeem is getest met de iMac, iPad en iPhoneHet materiaal dat we n
Herstellen van een sleutelhanger met de geleidende inkt

Herstellen van een sleutelhanger met de geleidende inkt

Ik had een sleutelhanger voor mijn auto die was niet als vroeger uitvoeren. Dit instructable is de knoppen teruggezet naar hun oorspronkelijke functie.Stap 1: Benodigdheden 1 de fob te repareren 2 een munt om te openen de geleidende inkt van fob 3Sta
PIMP MY FIREBIKE - maken het zelfs meer dangerouser met servicepack 3. (MET VIDEO CLIP)

PIMP MY FIREBIKE - maken het zelfs meer dangerouser met servicepack 3. (MET VIDEO CLIP)

Hebt u veel tijd op uw handen misschien herinner je je mijn firewheel fiets instructable;... Nou het is een beetje als dat men maar zijn alle dangeroused met koplampen en de neiging om een beetje warm.Lees verder...VIDEOLINKDIT INSTRUCTABLE MOET NIET
Doe-het-zelf - een kat met groene ogen

Doe-het-zelf - een kat met groene ogen

#ecological #Kitty #DIY #Crafts #Cat #Cats #DecoratingThank #recycling u!!
Arduino MIDI-controller - techshop met scarff boarduino

Arduino MIDI-controller - techshop met scarff boarduino

ik heb gekeken rond een aantal verschillende arduino oplossingen voor MIDI. Mijn project concept omvat meer dan 100 analoge ingangen dat elk gevoel van snelheid en voorzien van MIDI-uitgang.   Met behulp van de achtergrondinfo die ik kreeg van techsh
XY MIDI Pad met Arduino en TFT

XY MIDI Pad met Arduino en TFT

Enkele weken geleden, toen ik keek na sommige ideeën/modules/schilden om te beginnen van nieuwe projecten/experimenten met microcontrollers vond ik iets interessant dat zou perfect passen in mijn oudere project "USB MIDI Controller met Aduino".I
Aangepaste Arduino MIDI Controller

Aangepaste Arduino MIDI Controller

Hallo, en welkom op dit instructable over het bouwen van een aangepaste, goedkoop en makkelijk USB MIDI-controller, gebaseerd op de Arduino. Het beste nieuws: geen gedoe met USB-naar-MIDI interfaces of softwaretools zoals Haarloze MIDI, gewoon plug '
Zelfgemaakte MPC-stijl MIDI controller

Zelfgemaakte MPC-stijl MIDI controller

1.0 INLEIDINGIk besloot om te bouwen en ontwerpen van een midi-controller die wordt gebruikt om opdrachten te verzenden naar een computer met een DAW (digital audio workstation) om te controleren van verschillende parameters binnen het. De DAW ik geb
Vlam gecontroleerde MIDI Controller

Vlam gecontroleerde MIDI Controller

Een groot probleem in de wereld van digitale muziekproductie is het bijhouden van die analoge warmte (dat resoneerde uit reel-to-reel systemen en buizen) in moderne digitale muziek. Veel zweren dat analoge systemen hebben een geluid dat nooit kan wor