James Nagendran
/
AT42QT1010_Hello_world
Example Hello World example for interfacing the AT42QT1010 Device
main.cpp@1:6f970f5a63d4, 2014-10-20 (annotated)
- Committer:
- jnagendran3
- Date:
- Mon Oct 20 21:43:47 2014 +0000
- Revision:
- 1:6f970f5a63d4
- Parent:
- 0:3009c861d060
Fixed interrupt routine
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jnagendran3 | 0:3009c861d060 | 1 | #include "mbed.h" |
jnagendran3 | 0:3009c861d060 | 2 | #include "AT42QT1010.h" |
jnagendran3 | 0:3009c861d060 | 3 | |
jnagendran3 | 0:3009c861d060 | 4 | DigitalOut read_led(LED1); |
jnagendran3 | 0:3009c861d060 | 5 | DigitalOut auto_led(LED2); |
jnagendran3 | 1:6f970f5a63d4 | 6 | DigitalOut i_led1(LED3); |
jnagendran3 | 1:6f970f5a63d4 | 7 | DigitalOut i_led2(LED4); |
jnagendran3 | 1:6f970f5a63d4 | 8 | AT42QT1010 touch_sensor(p23,p21); |
jnagendran3 | 1:6f970f5a63d4 | 9 | |
jnagendran3 | 1:6f970f5a63d4 | 10 | //Global variables to control interrupt timing |
jnagendran3 | 1:6f970f5a63d4 | 11 | int _old_sig=0; |
jnagendran3 | 1:6f970f5a63d4 | 12 | int _new_sig=0; |
jnagendran3 | 0:3009c861d060 | 13 | |
jnagendran3 | 1:6f970f5a63d4 | 14 | void rise_interrupt(){ |
jnagendran3 | 1:6f970f5a63d4 | 15 | static int count=0; |
jnagendran3 | 1:6f970f5a63d4 | 16 | //Only execute on true rise |
jnagendran3 | 1:6f970f5a63d4 | 17 | if(_old_sig==0 && _new_sig==1){ |
jnagendran3 | 1:6f970f5a63d4 | 18 | _old_sig=1; |
jnagendran3 | 1:6f970f5a63d4 | 19 | //Use LED3 and LED4 to display count |
jnagendran3 | 1:6f970f5a63d4 | 20 | count++; |
jnagendran3 | 1:6f970f5a63d4 | 21 | i_led2=(count)%2; |
jnagendran3 | 1:6f970f5a63d4 | 22 | i_led1=(count>>1)%2; |
jnagendran3 | 1:6f970f5a63d4 | 23 | } |
jnagendran3 | 1:6f970f5a63d4 | 24 | } |
jnagendran3 | 1:6f970f5a63d4 | 25 | void fall_interrupt(){ |
jnagendran3 | 1:6f970f5a63d4 | 26 | //Trigger indication of true fall |
jnagendran3 | 1:6f970f5a63d4 | 27 | if(_new_sig==0) _old_sig=0; |
jnagendran3 | 0:3009c861d060 | 28 | } |
jnagendran3 | 0:3009c861d060 | 29 | |
jnagendran3 | 0:3009c861d060 | 30 | int main() { |
jnagendran3 | 1:6f970f5a63d4 | 31 | //Set up the rising and falling edge interrupts |
jnagendran3 | 1:6f970f5a63d4 | 32 | touch_sensor.attach_rise(&rise_interrupt); |
jnagendran3 | 1:6f970f5a63d4 | 33 | touch_sensor.attach_fall(&fall_interrupt); |
jnagendran3 | 0:3009c861d060 | 34 | while(1) { |
jnagendran3 | 1:6f970f5a63d4 | 35 | //Declare the current status of the sensor, |
jnagendran3 | 1:6f970f5a63d4 | 36 | //and give a window of time to process. |
jnagendran3 | 1:6f970f5a63d4 | 37 | _new_sig = touch_sensor; |
jnagendran3 | 1:6f970f5a63d4 | 38 | wait(.1); |
jnagendran3 | 1:6f970f5a63d4 | 39 | //Member function demonstration |
jnagendran3 | 0:3009c861d060 | 40 | read_led = touch_sensor.read(); |
jnagendran3 | 0:3009c861d060 | 41 | auto_led = touch_sensor; |
jnagendran3 | 1:6f970f5a63d4 | 42 | touch_sensor.write(!auto_led); |
jnagendran3 | 0:3009c861d060 | 43 | } |
jnagendran3 | 0:3009c861d060 | 44 | } |