Touch-Sensitive Musical Painting (7 / 9 stap)

Stap 7: Program je Board

De volgende code kunt u het programma van je Teensy board verzenden van MIDI naar uw computer. U kunt ook de code op GitHub downloaden.

 int bounceThreshold = 0; // a press must last this many loop cycles (about 20ms each) before triggering. // higher values make it less sensitive, fewer false triggers, higher latency#define NUM_INPUTS 44int channel = 1;// edit this array to change the MIDI notes sent //int pitches[NUM_INPUTS] = { // 79, 84, 75, 67, 65, 63, // top of board (up, left, down, right, space, click) // 60, 62, 77, 68, 58, 56, // left side of female header, w,a,s,d,f,g // 51, 53, 48, 55, 72, 74 // right side of female header, up,down,left,right,left-click,right-click //};// teensy makey pin numbers int pinNumbers[NUM_INPUTS] = { 0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17, // left side starting at USB connector, pin D0, skipping D6 26,25,24,23,22,21,20,19,18,38,39,40,41,42,43,44,45, // right side starting at USB connector, pin B6, skipping gnd and aref 36,37,32,33,34,35,28,29,30,31 // these are "interior" through-holes, in the center of the board };// cap sense thresholds for each pin // this is proportional to the capacitance on the pin that will count as a press // it is units of a very small unit of time, in iterations through an unrolled loop // higher values make it less sensitive (i.e. require larger capacitance) //int capThresholds[NUM_INPUTS] = { // 1, 1, 1, 1, 1, 2, // 2, 2, 1, 1, 1, 1, // 2, 1, 1, 1, 1, 1, //};int bounceCounter[NUM_INPUTS]; boolean pressed[NUM_INPUTS];void setup(){ for (int i=0; ivoid loop() { for (int i=0; i1){ // if we detect a touch on the pin if (!pressed[i]) { // and if we're not already pressed bounceCounter[i]++; // increment the bounce counter if(bounceCounter[i] > bounceThreshold){ // if we're over the bounce threshold usbMIDI.sendNoteOn(60+i,127,channel); // send a MIDI note on pressed[i] = true; // remember it was pressed bounceCounter[i]=0; // reset the bounce counter } } } else { // if we don't a detect touch on the pin if (pressed[i]) { // if this key was pressed before usbMIDI.sendNoteOff(60+i,127,channel); // send a MIDI note off pressed[i] = false; // remember we are not pressed bounceCounter[i] = 0; // reset the bounce counter } } } //Serial.println(" "); } // CapacitiveSensor tutorial from http://www.arduino.cc/playground/Code/CapacitiveS... // readCapacitivePin // Input: Arduino pin number // Output: A number, from 0 to 17 expressing // how much capacitance is on the pin // When you touch the pin, or whatever you have // attached to it, the number will get higheruint8_t readCapacitivePin(int pinToMeasure) { // Variables used to translate from Arduino to AVR pin naming volatile uint8_t* port; volatile uint8_t* ddr; volatile uint8_t* pin; // Here we translate the input pin number from // Arduino pin number to the AVR PORT, PIN, DDR, // and which bit of those registers we care about. byte bitmask; port = portOutputRegister(digitalPinToPort(pinToMeasure)); ddr = portModeRegister(digitalPinToPort(pinToMeasure)); bitmask = digitalPinToBitMask(pinToMeasure); pin = portInputRegister(digitalPinToPort(pinToMeasure)); // Discharge the pin first by setting it low and output *port &= ~(bitmask); *ddr |= bitmask; delay(1); // Make the pin an input with the internal pull-up on *ddr &= ~(bitmask); *port |= bitmask; // Now see how long the pin to get pulled up. This manual unrolling of the loop // decreases the number of hardware cycles between each read of the pin, // thus increasing sensitivity. uint8_t cycles = 17; if (*pin & bitmask) { cycles = 0; } else if (*pin & bitmask) { cycles = 1; } else if (*pin & bitmask) { cycles = 2; } else if (*pin & bitmask) { cycles = 3; } else if (*pin & bitmask) { cycles = 4; } else if (*pin & bitmask) { cycles = 5; } else if (*pin & bitmask) { cycles = 6; } else if (*pin & bitmask) { cycles = 7; } else if (*pin & bitmask) { cycles = 8; } else if (*pin & bitmask) { cycles = 9; } else if (*pin & bitmask) { cycles = 10; } else if (*pin & bitmask) { cycles = 11; } else if (*pin & bitmask) { cycles = 12; } else if (*pin & bitmask) { cycles = 13; } else if (*pin & bitmask) { cycles = 14; } else if (*pin & bitmask) { cycles = 15; } else if (*pin & bitmask) { cycles = 16; } // Discharge the pin again by setting it low and output // It's important to leave the pins low if you want to // be able to touch more than 1 sensor at a time - if // the sensor is left pulled high, when you touch // two sensors, your body will transfer the charge between // sensors. *port &= ~(bitmask); *ddr |= bitmask; return cycles; } 

Gerelateerde Artikelen

Multi kleur licht schilder (Touch Sensitive)

Multi kleur licht schilder (Touch Sensitive)

Lichte schilderij is een fotografische techniek die is gebruikt voor het maken van speciale effecten bij langere sluitertijden. Een zaklamp wordt meestal gebruikt om te "verven" de beelden. In dit Instructable, zal ik u tonen hoe te bouwen van e
Touch Sensitive RGB LED Mood Light

Touch Sensitive RGB LED Mood Light

Ik wilde altijd echt een cool LED Mood Light, maar allemaal die ik op Instructables gezien heb IC's gebruiken, en ik vind IC's nemen enkele van de leuke circuits te bouwen. Dat is de reden dat ik ontwierp deze lamp. Ik wilde ook om ervoor te zorgen d
Avatar PlaNT (Touch Sensitive)

Avatar PlaNT (Touch Sensitive)

een avatar plant met LEDs rondom. Zodra de plant is aangeraakt, LED ingeschakeld. U hoeft alleen te gebruiken diverse LEDs en weerstanden met arduino. Natuurlijk, als u oplichten van een avatar-forest wilt, kunt u ook alle planten elkaar verbinden.St
Capacitieve Touch Sensing voor een persoonlijke massage

Capacitieve Touch Sensing voor een persoonlijke massage

Maak snel een banaan, een drankje, uw bed frame, een spanking peddel of zelfs uw sex partner een aanraakgevoelig controller voor uw dildo! De aangename gevoelens van een metalen hoofd massage synchroniseren met uw dildo, of je geliefde lichaam zoals
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 '
Maken van Android Apps – voor volledige Beginners

Maken van Android Apps – voor volledige Beginners

Als u zelf een AndroidTM telefoon of tablet en je het soort persoon die graag dingen te doen voor hem/haarzelf (waarom anders zou u kijken naar een Instructable?), hebt je waarschijnlijk gedacht over het vinden dat het ontwikkelen van uw eigen apps o
RFID Reader Detector en Tilt-gevoelige RFID-Tag

RFID Reader Detector en Tilt-gevoelige RFID-Tag

de 'wrijven'Wilt u de aanwezigheid van RFID-lezers? Wilt u zelf bepalen wanneer een RFID-tag is actief of leesbaar? We beschrijven hoe om beide te doen met behulp van stukjes van koper en kaart, en sommige hardware beschikbaar elektronica.Langere pre
Movie In A Box

Movie In A Box

wil je kijken naar film bioscoop stijl in uw telefoon. deze uitvinding krijgt u de ervaring die u in een bioscoop zonder daadwerkelijk naar een werkelijke.Stap 1: materialen u nodig hebteen vak, een headset, aome kaart van bestuur en sommige kabelhou
Moordenaar Candy Robot 3000

Moordenaar Candy Robot 3000

Ik ben een 11-jarige jongen die graag dingen met elektronica en programmering. Dit jaar voor Halloween, besloten heb ik een robot kostuum te maken.Deze robot-kostuum dat kostte me ongeveer 4 weken om te maken, het merendeel van de tijd werd solderen
Mobiele auto Computer

Mobiele auto Computer

dit is een personal computer die in de auto met alle functies en prestaties gebruiken kunt.Deze PC heeft speciaal werken met auto voeding. (12V DC) 7inche LCD TFT monitor met VGA-ingang heeft. En haar gevoelige touch-display. Ik heb een Touch-gevoeli
Apple iTouch/iPhone Hacks en firmware terugdraaien

Apple iTouch/iPhone Hacks en firmware terugdraaien

dit instructable zal tonen hoe te om SOFTWARE te wijzigen op de Apple iTouch of iPhone. Hierdoor kunnen laden en wijziging van de firmware en het gebruik van opensource en derde partij software. Deze apps zijn specifiek bedoeld voor de embedded ARM-p
Hoe maak je een bordspel Using Arduino

Hoe maak je een bordspel Using Arduino

In dit Instructable, zal we je leren hoe je je eigen te maken "u liever... "bordspel met geleidende verf, een Arduino microcontroller en sommige elektronica-onderdelen. Spelers om de beurt bewegen langs de game pad zoals geregisseerd door een el
Multitouch Music Controller

Multitouch Music Controller

Dit project is een Arduino-aangedreven infrarood touchscreen / koffietafel interface die ik heb gebruikt om te controleren van verschillende muziek- en grafische toepassingen op mijn computer. Dit is een oude project dat ik heb onlangs tijd terug te
Tastbare Music Player: RFID-kaart gecontroleerd iPodTouch

Tastbare Music Player: RFID-kaart gecontroleerd iPodTouch

Wat is het?Dit is een Arduino gebaseerd iPod hack audio-project waarmee u om tracks te selecteren voor het afspelen van een aangesloten iPod Touch gewoon door het plaatsen van de kaarten op de platte bovenkant van de machine:De kaarten kunnen worden