Dependencies:   mbed

main.cpp

Committer:
XkLi
Date:
2011-11-30
Revision:
0:2fab16867d73
Child:
1:44f0b9d5883b

File content as of revision 0:2fab16867d73:

#include <mbed.h>
#include <mpr121.h>
#include "strings.h"
DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

InterruptIn interrupt0(p8); //interrupt pin for touch0
InterruptIn interrupt1(p21); //interrupt for touch1

// Setup the i2c bus on pins 9 and 10
I2C i2c2(p9, p10); // I2C is used by both touch sensors
I2C i2c(p28, p27); // I2C is used by both touch sensors

Mpr121 touch1(&i2c, Mpr121::ADD_VSS);//setup touch1 address for vdd
Mpr121 touch0(&i2c2, Mpr121::ADD_VSS);//setup touch0 address for vss


//set serial port
Serial device(p13, p14);  // tx, rx


Serial pc(USBTX, USBRX);
 
unsigned int key_code0;
unsigned int key_code1;


// Key hit/release interrupt routine for touch 0
void fallInterrupt0() {
  key_code0=0;
  char i=0;
  int value=touch0.read(0x00);
  value +=touch0.read(0x01)<<8;
  // LED demo mod
  i=0;
  // puts key number out to LEDs for demo
  for (i=0; i<12; i++) {
  if (((value>>i)&0x01)==1) key_code0=i+1;
  }
  led4=key_code0 & 0x01;
  led3=(key_code0>>1) & 0x01;
  led2=(key_code0>>2) & 0x01;
  led1=(key_code0>>3) & 0x01;

}


//fall interrupt for touch1
void fallInterrupt1() {

  key_code1=0;
  char i=0;
  int value=touch1.read(0x00);
  value +=touch1.read(0x01)<<8;
  // LED demo mod
  i=0;
  // puts key number out to LEDs for demo
  for (i=0; i<12; i++) {
  if (((value>>i)&0x01)==1) key_code1=i+1;
  }
  led4=key_code1 & 0x01;
  led3=(key_code1>>1) & 0x01;
  led2=(key_code1>>2) & 0x01;
  led1=(key_code1>>3) & 0x01;
}







int main() {

pc.printf("Starting \r\n");


char *key_buf;//buffer for data transmit to pc via serial
char frompc=0;
  device.baud(9600); 
  interrupt0.fall(&fallInterrupt0);
  interrupt0.mode(PullUp);
  interrupt1.fall(&fallInterrupt1);
  interrupt1.mode(PullUp);
  
  while (1) {
  wait(10);
  if(device.readable()) //checks if ebox sends request
  frompc=device.getc();
  pc.printf(&frompc);//writes received data to pc for testing options
  
    switch(device.getc())//read character and check it
       {
        case '0':           //if character is '0' send key data from touch 0
            sprintf(key_buf,"%d",key_code0);
            device.printf(key_buf);
            break;
        
        case '1':           //if character is '1' send key data from touch 1
            sprintf(key_buf,"%d",key_code1);
            device.printf(key_buf);
            break;
           
        case 'A': //case for string value
        sprintf(key_buf,"%d",Strings());
        device.printf(key_buf);
            break;
            
        default:
            break;
       }
       
  pc.printf(key_buf);//writes received data to pc for testing options
  }
}