Rita själv - MIDI controller med ledande bläck (5 / 6 steg)

Steg 5: MPR121 kapacitiv Sensor



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

Kapacitiva givaren jag använde för detta projekt är MPR121. MPR121 är en kapacitiv touch sensor controller driven av ett gränssnitt som I2C (i detta fall ledarstyrning är en Arduino). Chipet kan styra upp till tolv enskilda elektroder. Som i mitt projekt jag använde 20 stift (för 20 knappar), jag använde 2 sensorer: Jag använde andra 1: a och 8 elektroder 12 elektroder. Det finns en mycket hjälpsam hookup guide på sparkfun webbplats, som gör det lättare att förstå hur man använder denna sensor. Jag rekommenderar att ladda ner koden de använda och modifiera det fyra dina behov. Om du vill göra mer avancerade saker än vad förklaras i denna guide, rekommenderar jag för att ta en titt på dess datablad till veta hur till göra det kommunicera med Arduino via I2C.

Hookup guide:

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

Datablad:

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

Om du tittat på den schematiska Fritzing fil som jag bifogade, hittar du att massor av anslutningarna av schematiskt (pull-up motstånd, kondensatorer...) redan är lödda när du köper MPR121 sensorn på Sparkfun.

Jag vill vidare påpeka några viktiga anteckningar att konfigurera sensorn för detta projekt:

1) Vdd:

Var försiktig!! MPR121 fungerar med Vdd = 3.3V. Du kommer att bränna den om du ansluter det till 5V utdata från Arduino.

2) Setup:

I hookup guide hittar du detta:

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

Vad den gör är att ställa in MPR121 sensorn korrekt: Välj antalet elektroder används, väljer laddning/urladdning ström och tid för varje sensor, touch/tröskelvärde övergång till varje elektrod... Du behöver inte veta exakt vad det handlar om: du kan bara kopiera den och ändra vissa rader för ditt projekt. Du behöver bara ringa denna funktion på din Arduino Setup, och göra det igen varje gång du vill ändra sensor setup (i mitt fall, när jag justera knapparna eller ändra mallarna, till exempel). Jag kommer att förklara vissa aspekter om sensor setup i nästa poäng.

Funktionen "set_register" i grunden gör I2C kommunikationen mellan sensorn och Arduino. Det definieras så här:

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

Två av de viktigaste register är AFE konfigurationen register 1 och 2 (register 0x5C och 0x5D). Se sidan 13 i databladet för mer i detalj. Ändra värdena för detta register kommer att definiera laddning/urladdning ström och tid för elektroderna, filtrering iterationer, och så vidare. Jag rekommenderar att spela lite med CDT och CDC värden så att du kan hitta lämpliga dem för rätt touch/release upptäckt i projektet (kanske de inte behöver ändras, men kanske de kommer).


3) adressen till varje sensor:

Det finns ett problem när du vill använda två eller flera MPR121 sensorer samtidigt, eftersom alla har samma standardadressen för I2C meddelande: det är 0x5A adressen. Om man tittar på databladet, det står att 4 olika adresser kan väljas, beroende på var du löda adress pin: Vdd, Vss, SDA eller SCL. Som standard kommer styrelsen med adress stift lödas till Vss (marken), så om du vill använda mer än en sensor, måste du klippa denna anslutning: bredvid adress stift finns två små metalliska rutor som är anslutna med en mycket tunn linje: denna linje är anslutningen mellan adress pin och marken. Du bör klippa små raden av en av sensorerna med en fräs och löda adress stift till Vdd, exempelvis så att den nya adressen av denna sensor inte är 0x5A längre: i stället blir det 0x5B.

Detta är precis vad jag gjorde för detta projekt, så jag hade två sensorer: den första som är adressen var 0x5A och andra en var 0x5B.

4) touch/Release tröskelvärde setup:

Touch och release tröskel installationen sker inuti den MPR121 setup. Om du följer guiden hookup och titta på mpr121.h biblioteket, är standardvärdena 0xA0 för touch_threshold och 0xB0 för release tröskel. En möjlighet är att ändra värdet för touch och släpp tröskeln för varje PIN-koden, med en byte variabel för den. Till exempel för en sensor:

< p > byte touch_treshold_1st_sensor [12] = {0xA0, 0X94, 0xB2... //random värden till exempel < 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 >

Jag finner detta det enklaste sättet att definiera olika touch/release tröskelvärden för varje mall: du kan spara värdena på Arduino EEPROM och bara ladda in dem i sensorn, beroende på mallen du använder.

Men jag hade problem med detta: några av de knappar jag ritade på vissa mallar var utanför intervallet, så jag inte kunde göra en korrekt installation. Så istället för att ändra värdena tröskelvärde, var jag ändra laddning/urladdning aktuell för varje individuell pin av sensorn. Du kan lära dig hur man gör detta på sidan 14 i databladet. Detta fungerade bättre för mig, eftersom utbudet av touch/release upptäckten för varje elektrod var större. Detta är ett exempel på hur jag gjorde det:

< p > / / 20 byte-array: 12 värden för 1 sensor och 8 för 2: a sensor. Startvärde: 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 jag använde kodaren välja CDC_sensor [i] värdet för varje stift < /p >< p > för (int jag = 0; jag < 20; i ++) < /p >< p > {< /p > < p > //encoder grejer < /p >< p > om... //if encoder ståndpunkt är ökad < /p >< p > {CDC_sensor [i] ++;} < /p >< p > else...//if encoder ståndpunkt är minskad < /p >< p > {CDC_sensor [i]--;} < /p >< p >} < /p >< p >

Slutligen, varje gång ett CDC_sensor värde ändras, måste du göra inställningen igen: < /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 >

Du bör försöka använda det sätt som är mest lämplig för dig: byta elektrod tröskelvärdena eller individuella avgift aktuella värden.

5) Arduino avbrott:

MPR121 sensorn har en IRQ-stift, som skall ställas in med en pull-up resistor, och går till låg varje gång sensorn upptäcker en touch eller en utgåva i en av dess elektroder. Så rekommenderar jag för att löda denna pins till Arduino avbrott stift, som är digital 2 och 3. Detta sätt kan du använda funktionen Arduino Attachinterrupt:

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

Men var försiktig! inte många kod saker måste göras inuti avbrottet: till exempel serieporten fungerar inte (därför MIDI-meddelanden fungerar inte heller, eftersom den seriella porten som används för deras överföring). Jag har bara använt avbrotten för att ändra värdet för en boolesk variabel, som beslutsamt huruvida en pin var beröring eller inte. Sedan gjorde jag motsvarande ändringar i programmets allmänna loop. Se koden:

avbryta variabler
statisk boolean touch_1st = false;
statisk boolean touch_2nd = false;

i inställningen:
avbryter
attachInterrupt (0, touching_1st_sensor, faller);
attachInterrupt (1, touching_2nd_sensor, faller).

utanför loopen
void touching_1st_sensor()
{
touch_1st = sant;
}
void touching_2nd_sensor()
{
touch_2nd = sant;
}

i slingan
IF(touch_1st)
{
Kolla för elektroder...
touch_1st = false;
}
IF(touch_2nd)
{
Kolla för elektroder...
touch_2nd = false;
} < br >

Med allt detta tror jag du har tillräcklig information för att göra några nybörjare och medelhög nivå grejer med MPR121 sensor.

Se Steg
Relaterade Ämnen

MIDI-Controller med tangentbord

Idag bygger vi 400 nyckeln MIDI-controller med hjälp av en Arduino och dator tangentbord!För budget medvetna musik producenterna ute är detta projekt ett bra sätt att bygga en billig kontroll styrelse för din digital audio workstation.Eller om du bar...

Arduino MIDI-controller med en ZX avstånd och gest Sensor

Välkommen till detta instructable om hur man bygger en mycket grundläggande MIDI-Controller med SparkFun ZX avståndet och gest Sensor. Detta instructable är del av en skoluppgift.Obs: Detta är ingen kodning handledning. Den final koden kommer att ing...

Du Rock gitarr MIDI-controller med Bluetooth BLE och uppladdningsbart batteri

I denna tutorial kommer jag visa dig hur du slår gitarr du Rock gitarr i en MIDI-Bluetooth 4.0 controller med uppladdningsbart batteri. Lösningen var enkel men att tänka på det.Detta system har testats med iMac, iPad och iPhoneDet material vi behöver...

XY MIDI-Pad med Arduino och TFT

För några veckor sedan när jag tittade efter några idéer/modules/sköldar för att starta nya projekt/experiment med mikrokontroller jag hittade något intressant som skulle passa perfekt i mitt äldre projekt "USB MIDI Controller med Aduino".Om du...

Anpassade Arduino MIDI Controller

Hej och Välkommen till detta instructable om hur man bygger en anpassad, Billigt och enkelt USB MIDI-controller, baserat på Arduino. Den bästa nyheten: inget krångel med USB-till-MIDI-gränssnitt eller programvaruverktyg som Hårlösa MIDI, bara plug 'n...

Arduino MIDI-controller - techshop använder scarff boarduino

jag har tittat på ett antal olika arduino lösningar för MIDI. Mitt projekt omfattar över 100 analoga ingångar att varje känsla hastighet och ge MIDI-utgången. Med den bakgrunden info jag fick från techshop klass beslutat jag att ställa in det först m...

Flamma kontrollerade MIDI-Controller

En stor fråga i världen av digital musikproduktion är att hålla det analog värme (som genljöd från rullbandspelare system och rör) i dagens moderna digitala musik. Många svär att analoga system har ett ljud som aldrig kan replikeras av bits, och hopp...

Laser MIDI-Controller - (Laser utlösta Midi Keyboard)

Projektets målsättning:"Bygga en laser utlösta MIDI-controller, med hjälp av standard elektriska komponenter och en återvunnen midi keyboard."Steg 1.Hitta en återvunnen midi keyboard / controller.Steg 2.Konstruera en laser utlöste switch.Steg 3....

Arduino MIDI Controller

En MIDI-controller är någon utrustning som genererar och sänder MIDI-data till MIDI-aktiverade enheter. Kort sagt, om du har knappar på din MIDI-controller, kan du programmera dessa knappar till alla ljud du vill ha via musikaliska programvara (ex.:...

Beatfly: Gör en lysande luftskepp och kontrollera den med din röst, tangentbord, MIDI-Controller, Garageband fil, iPhone, Flash och mycket mer! [Mac OSX]

Jag har arbetat med flera projekt med hjälp av luftskepp och ballonger, och här vill jag dela en av dem, Beatfly. Detta är en lysande luftskepp kontrolleras med olika gränssnitt såsom röst, tangentbord, MIDI-Controller, Garageband MIDI-fil, iPhone oc...

Konvertera en räddade leksak till en MIDI-controller

i detta Instructable, jag kommer att gå igenom processen att konvertera ett räddade buller-making barnleksak till ett faktiskt användbara musikaliska instrument med MIDI! Ta en stund att bara kasta en blick över titlarna på stegen i detta Instructabl...

Cigar Box MIDI-Controller

här är en DIY MIDI-controller som kan användas med Max/MSP, Ableton Live, och bara om någon annan musikprogramvara eller maskinvara som erbjuder MIDI i/o.Projektet använder MIDI-CPU, som kan användas som en MIDI "hjärna" för DIY projekt.Denna zi...

Sockerbit MIDI Controller

Detta projekt är en bärbar, Arduino-powered, grid-baserad MIDI-controller som startar upp till olika apps att göra massor av saker med ljud. Den har 16 bakgrundsbelysta knappar, används som både in- och utgångar för att ge registeransvarige lite visu...

Arkad stil DJ MIDI-controller

>>> detta är inte helt klar ännu som jag spänt lite av banan. Jag ska uppdatera den instructable och ladda upp en video när det sorteras <<<Jag har varit DJ ungefär 10 år nu, och under de senaste har jag bytte bra gamla gammaldags vinyl...

USB-MIDI-Controller

Jag började detta projekt på grund av min kärlek med musik. Jag kan spela olika instrument men jag är bara börjat med musikproduktion. Något som jag tyckte var nyttigt var en MIDI-controller som jag skulle använda att spela prover med och har en mass...

Programmerbara MIDI Synth med Intel Edison och Csound

En MIDI-controller är som en dators tangentbord, men istället för att skicka tecken till datorn, det skicka anteckningar (och en hel del ytterligare information om hur tonen spelas). Du kan läsa mer om MIDI-Controllers här.Vanligtvis en MIDI-controll...

Arcade MIDI-Controller

Jag är säker på att du har sett dessa coola videor människor fastnar på en låda med en massa knappar på den. Tja, idag, kommer jag att visa dig hur du kan göra en låda som du kan göra sylt. < Inspirerad av MIDI-Fighter klassiska >begränsad tid erbju...

Arbeta med ledande tyg

Arbetar med ledande tyg är kul och det är perfekt för kläder, mjuka kretsar, e-textilier och andra projekt som drar nytta av det egenskaper. Lära sig grunderna hjälper dig göra design och material val anpassade till din ansökan.Detta Instructable är...

Arcade-knappen MIDI-Controller

att ha en hårdvara gränssnitt till din favorit musik / DJ / VJ programvara kan verkligen öppna upp dörrar i din kreativitet. Mest utbredda form av hårdvara kontroll till datorn för sådana program är en MIDI controller.En MIDI-controller kan skicka oc...