Count patients as they enter and leave a waiting room. Not working due to button bounce.

Dependencies:   mbed

Fork of ForLoopIteration by Charles Tritt

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?

UserRevisionLine numberNew 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 }