First Last
/
PiezoClick
Using a piezo both for capacitive readout, and auditive feedback
main.cpp@3:a5ea404d7df0, 2013-06-29 (annotated)
- Committer:
- vsluiter
- Date:
- Sat Jun 29 13:40:41 2013 +0000
- Revision:
- 3:a5ea404d7df0
- Parent:
- 2:41a66a63ceda
Publishing...
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
vsluiter | 0:24ec0148bed5 | 1 | #include "mbed.h" |
vsluiter | 0:24ec0148bed5 | 2 | #include "TSISensor.h" |
vsluiter | 0:24ec0148bed5 | 3 | |
vsluiter | 0:24ec0148bed5 | 4 | DigitalInOut click(PTE20); |
vsluiter | 1:04e030810a44 | 5 | TSISensor tsi; |
vsluiter | 1:04e030810a44 | 6 | int beeper_on = 0, pressed = 0; |
vsluiter | 1:04e030810a44 | 7 | uint16_t value_now, value_prev; |
vsluiter | 1:04e030810a44 | 8 | PwmOut rled(LED_RED); |
vsluiter | 1:04e030810a44 | 9 | |
vsluiter | 0:24ec0148bed5 | 10 | void beeper(void) |
vsluiter | 0:24ec0148bed5 | 11 | { |
vsluiter | 0:24ec0148bed5 | 12 | static uint8_t toggle = 0; |
vsluiter | 0:24ec0148bed5 | 13 | if(toggle) |
vsluiter | 0:24ec0148bed5 | 14 | toggle = 0; |
vsluiter | 0:24ec0148bed5 | 15 | else |
vsluiter | 0:24ec0148bed5 | 16 | toggle = 1; |
vsluiter | 0:24ec0148bed5 | 17 | if(beeper_on) |
vsluiter | 0:24ec0148bed5 | 18 | click = toggle; |
vsluiter | 0:24ec0148bed5 | 19 | } |
vsluiter | 0:24ec0148bed5 | 20 | |
vsluiter | 1:04e030810a44 | 21 | void read_sensor(void) |
vsluiter | 1:04e030810a44 | 22 | { |
vsluiter | 1:04e030810a44 | 23 | value_prev = value_now; |
vsluiter | 1:04e030810a44 | 24 | if(!beeper_on) |
vsluiter | 1:04e030810a44 | 25 | value_now = tsi.readValue(2); |
vsluiter | 1:04e030810a44 | 26 | if((value_now-2)> value_prev) |
vsluiter | 1:04e030810a44 | 27 | pressed = 1; |
vsluiter | 1:04e030810a44 | 28 | |
vsluiter | 1:04e030810a44 | 29 | } |
vsluiter | 1:04e030810a44 | 30 | |
vsluiter | 1:04e030810a44 | 31 | void led_off(void) |
vsluiter | 1:04e030810a44 | 32 | { |
vsluiter | 1:04e030810a44 | 33 | rled = 1; |
vsluiter | 1:04e030810a44 | 34 | } |
vsluiter | 2:41a66a63ceda | 35 | |
vsluiter | 2:41a66a63ceda | 36 | void do_beep(void) |
vsluiter | 2:41a66a63ceda | 37 | { |
vsluiter | 2:41a66a63ceda | 38 | click.output(); |
vsluiter | 2:41a66a63ceda | 39 | beeper_on = 1; |
vsluiter | 2:41a66a63ceda | 40 | wait(0.1); |
vsluiter | 2:41a66a63ceda | 41 | beeper_on = 0; |
vsluiter | 2:41a66a63ceda | 42 | click.input(); |
vsluiter | 2:41a66a63ceda | 43 | } |
vsluiter | 1:04e030810a44 | 44 | |
vsluiter | 1:04e030810a44 | 45 | int main() { |
vsluiter | 0:24ec0148bed5 | 46 | Ticker beep; |
vsluiter | 1:04e030810a44 | 47 | Ticker read; |
vsluiter | 1:04e030810a44 | 48 | beep.attach(beeper,0.00025); |
vsluiter | 1:04e030810a44 | 49 | read.attach(read_sensor,0.1); |
vsluiter | 1:04e030810a44 | 50 | Timeout timeout; |
vsluiter | 0:24ec0148bed5 | 51 | rled = 1; |
vsluiter | 0:24ec0148bed5 | 52 | while(1) { |
vsluiter | 1:04e030810a44 | 53 | if(pressed) |
vsluiter | 0:24ec0148bed5 | 54 | { |
vsluiter | 1:04e030810a44 | 55 | pressed = 0; |
vsluiter | 1:04e030810a44 | 56 | rled = 0.5; |
vsluiter | 1:04e030810a44 | 57 | timeout.detach(); |
vsluiter | 1:04e030810a44 | 58 | timeout.attach(led_off,0.5); |
vsluiter | 2:41a66a63ceda | 59 | do_beep(); |
vsluiter | 0:24ec0148bed5 | 60 | } |
vsluiter | 0:24ec0148bed5 | 61 | } |
vsluiter | 0:24ec0148bed5 | 62 | } |
vsluiter | 0:24ec0148bed5 | 63 | //PTB0 - > ELECTRODE3 -> TSI_CH0 |