Count patients as they enter and leave a waiting room. Not working due to button bounce.
Fork of ForLoopIteration by
main.cpp@1:0dc1ade9379d, 2017-10-17 (annotated)
- Committer:
- CSTritt
- Date:
- Tue Oct 17 15:28:01 2017 +0000
- Revision:
- 1:0dc1ade9379d
- Parent:
- 0:9475544275a6
Initial version. Not working.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
CSTritt | 0:9475544275a6 | 1 | /* |
CSTritt | 1:0dc1ade9379d | 2 | Project: PatientCounterIntrp |
CSTritt | 0:9475544275a6 | 3 | File: main.cpp |
CSTritt | 0:9475544275a6 | 4 | |
CSTritt | 1:0dc1ade9379d | 5 | Demonstrates the use of interupts to count patients entering a leaving a |
CSTritt | 1:0dc1ade9379d | 6 | waiting room. However, button bounce appears to make this approach leads to |
CSTritt | 1:0dc1ade9379d | 7 | bounce. |
CSTritt | 0:9475544275a6 | 8 | |
CSTritt | 0:9475544275a6 | 9 | The circuit: |
CSTritt | 0:9475544275a6 | 10 | |
CSTritt | 0:9475544275a6 | 11 | Bargraph LEDs from pins 2 through 11 to ground via 330 Ohm resistors. |
CSTritt | 1:0dc1ade9379d | 12 | Pushbuttons between pins D14 & 15 and ground (internal pullup resistors |
CSTritt | 1:0dc1ade9379d | 13 | used. |
CSTritt | 0:9475544275a6 | 14 | |
CSTritt | 1:0dc1ade9379d | 15 | Created by C. S. Tritt 9/21/17 (v. 1.0) |
CSTritt | 0:9475544275a6 | 16 | |
CSTritt | 0:9475544275a6 | 17 | This example code is in the public domain. |
CSTritt | 0:9475544275a6 | 18 | */ |
CSTritt | 0:9475544275a6 | 19 | |
CSTritt | 0:9475544275a6 | 20 | #include "mbed.h" |
CSTritt | 0:9475544275a6 | 21 | |
CSTritt | 0:9475544275a6 | 22 | BusOut bar_graph(D2,D3,D4,D5,D6,D7,D8,D9,D10,D11); |
CSTritt | 1:0dc1ade9379d | 23 | |
CSTritt | 1:0dc1ade9379d | 24 | InterruptIn inSensor(D12); |
CSTritt | 1:0dc1ade9379d | 25 | InterruptIn outSensor(D13); |
CSTritt | 1:0dc1ade9379d | 26 | |
CSTritt | 1:0dc1ade9379d | 27 | int count = 0; |
CSTritt | 1:0dc1ade9379d | 28 | |
CSTritt | 1:0dc1ade9379d | 29 | void countUp(void) { |
CSTritt | 1:0dc1ade9379d | 30 | count++; |
CSTritt | 1:0dc1ade9379d | 31 | } |
CSTritt | 1:0dc1ade9379d | 32 | |
CSTritt | 1:0dc1ade9379d | 33 | void countDown(void) { |
CSTritt | 1:0dc1ade9379d | 34 | if (count > 0) count--; |
CSTritt | 1:0dc1ade9379d | 35 | } |
CSTritt | 0:9475544275a6 | 36 | |
CSTritt | 0:9475544275a6 | 37 | int main() { |
CSTritt | 1:0dc1ade9379d | 38 | |
CSTritt | 1:0dc1ade9379d | 39 | inSensor.fall(&countUp); |
CSTritt | 1:0dc1ade9379d | 40 | outSensor.fall(&countDown); |
CSTritt | 1:0dc1ade9379d | 41 | |
CSTritt | 0:9475544275a6 | 42 | while(true) { // Keep the lights going back and forth forever. |
CSTritt | 0:9475544275a6 | 43 | |
CSTritt | 1:0dc1ade9379d | 44 | bar_graph = count; // Show count on bar. |
CSTritt | 1:0dc1ade9379d | 45 | // Send count to console. |
CSTritt | 1:0dc1ade9379d | 46 | printf("Count: %d.\n", count); |
CSTritt | 1:0dc1ade9379d | 47 | wait(0.5); // Pause. |
CSTritt | 0:9475544275a6 | 48 | } |
CSTritt | 0:9475544275a6 | 49 | } |