background image

 

 

 

 

Communicating with the Shield:

 

Once you’ve got your shield assembled, it’s time

 

to start talking to it! You can download the example 

code

 

from Software

  

Open up the

 

Touch_Sensor_Shield_Example.ino

 

file. The other files set the register definitions for the 

MPR121 chip, so you shouldn’t need to mess with these at all.

 

    //

 

Match

 

key

 

inputs

 

with

 

electrode

 

numbers

 

    #define

 

ONE

 

8

 

    #define

 

TWO

 

5

 

    #define

 

THREE

 

2

 

    #define

 

FOUR

 

7

 

    #define

 

FIVE

 

4

 

    #define

 

SIX

 

1

 

    #define

 

SEVEN

 

6

 

    #define

 

EIGHT

 

3

 

    #define

 

NINE

 

0

 

    //extras

 

(not

 

connected

 

to

 

button)

 

    #define

 

ELE9

 

9

 

    #define

 

ELE10

 

10

 

    #define

 

ELE11

 

11

 

    //interupt

 

pin

 

    int

 

irqPin

 

=

 

2;  //

 

D2

 

First thing the code shows is the pin definitions. This is laying out the keypad functionality (ONE, 
TWO, etc.) and defining which electrode pin corresponds to each number. As the comment states, 
electrode pins 9, 10 and 11 are not currently connected to anything, but if you did solder on additional 
buttons to those pins on the shield, you can change this.

 

The interrupt pin is also defined as D2. This can’t be modified without some hardware hacking on the 
shield, so keep that in mind if you are interfacing additional hardware into your set up.

 

    void

 

setup()

 

    {

 

      //make

 

sure

 

the

 

interrupt

 

pin

 

is

 

an

 

input

 

and

 

pulled

 

high

 

      pinMode(irqPin,

 

INPUT);

 

      digitalWrite(irqPin,

 

HIGH);

 

      //configure serial out
      Serial.begin(9600);

      // initalize I2C bus. Wiring lib not used.
      i2cInit();
      // initialize mpr121
      mpr121QuickConfig();
      // Create and interrupt to trigger when a button
      // is hit, the IRQ pin goes low, and the function getNumber is run.
      attachInterrupt(0,getNumber,LOW);
      // prints 'Ready...' when you can start hitting numbers
      Serial.println("Ready...");
    }

The setup loop starts by setting the interrupt pin as an input and pulling it high. The serial bus is 
started at 9600 bps. Next, the code initializes the I

2

C communication lines without using the Wiring 

library.
The MPR121 chip is then configured with the proper sensitivity settings on the electrodes. The final 
step in the setup loop creates an interrupt in the code that will trigger when any of the buttons are hit.
    void loop()

{
  //You can put additional code here. The interrupt will run in the backgound.
}

w w w . e k t

2

. c o m

Electronics 

Katrangi

 Trading

Summary of Contents for Arduino R3

Page 1: ... pins and to digital pin 2 This connects to the INT pin on the MPR121 sensor We generally use stackable headers for attaching shields to Arduino boards but you can use standard male headers if you prefer The R3 Stackable Header Kit is the easiest option to use if you are planning on stackable headers For detailed instructions on how to assemble your shield have a look at our Shield Tutorial The sh...

Page 2: ...lso defined as D2 This can t be modified without some hardware hacking on the shield so keep that in mind if you are interfacing additional hardware into your set up void setup make sure the interrupt pin is an input and pulled high pinMode irqPin INPUT digitalWrite irqPin HIGH configure serial out Serial begin 9600 initalize I2C bus Wiring lib not used i2cInit initialize mpr121 mpr121QuickConfig ...

Page 3: ...ently as the button presses use the interrupt we created in the setup loop If you did have additional hardware you wanted to incorporate into your project the code for it can live in this loop The last two functions in the example code tell the Arduino to check the electrode states for a button press and what to print out when a button press is detected void getNumber digits 5 else if touchstatus ...

Page 4: ...onal buttons here You will also need to update the code You ll want to add the following block of code into the example sketch right beforeSerial println digits You can change the digits values to have the buttons output different values instead of A B or C else if touchstatus 1 ELE9 digits A else if touchstatus 1 ELE10 digits B else if touchstatus 1 ELE11 digits C do nothing if more than one butt...

Reviews: