
Factory Monitor
Dependencies: mbed
factory sense HQ
main.cpp@4:7a50e0818a47, 2015-08-15 (annotated)
- Committer:
- melmon
- Date:
- Sat Aug 15 12:47:10 2015 +0000
- Revision:
- 4:7a50e0818a47
- Parent:
- 3:cff56a809a37
- Child:
- 5:faa8843f3990
Code now compiles, with structured main loop; ; Still need to setup LastSensor State
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
melmon | 0:a521da10b15a | 1 | #include "mbed.h" |
melmon | 0:a521da10b15a | 2 | |
melmon | 4:7a50e0818a47 | 3 | #define no_pins 2 |
melmon | 4:7a50e0818a47 | 4 | #define Inputs Values[0] |
melmon | 4:7a50e0818a47 | 5 | #define Outputs Values[1] |
melmon | 4:7a50e0818a47 | 6 | #define Rejects Values[2] |
melmon | 4:7a50e0818a47 | 7 | |
melmon | 4:7a50e0818a47 | 8 | |
melmon | 0:a521da10b15a | 9 | DigitalIn sensorPin1(p5); |
Nick123 | 1:b52588ac9aae | 10 | DigitalIn sensorPin2(p6); |
Nick123 | 1:b52588ac9aae | 11 | //variables |
melmon | 0:a521da10b15a | 12 | |
melmon | 0:a521da10b15a | 13 | // initialize serial communication: |
melmon | 0:a521da10b15a | 14 | Serial pc(USBTX, USBRX); |
melmon | 0:a521da10b15a | 15 | |
Nick123 | 2:cff64a27ae9d | 16 | class PinCheck { |
melmon | 3:cff56a809a37 | 17 | |
Nick123 | 2:cff64a27ae9d | 18 | public: |
Nick123 | 2:cff64a27ae9d | 19 | PinCheck(PinName pin) : _pin(pin) { |
melmon | 3:cff56a809a37 | 20 | |
Nick123 | 2:cff64a27ae9d | 21 | } |
Nick123 | 2:cff64a27ae9d | 22 | |
Nick123 | 2:cff64a27ae9d | 23 | |
melmon | 4:7a50e0818a47 | 24 | int Go_and_check(int a) { |
melmon | 3:cff56a809a37 | 25 | sensorState = _pin; // read the sensor input pin: |
melmon | 4:7a50e0818a47 | 26 | int zero = 0; |
melmon | 4:7a50e0818a47 | 27 | if (sensorState != lastSensorState[a]) // compare the sensorState to its previous state |
melmon | 0:a521da10b15a | 28 | { |
melmon | 0:a521da10b15a | 29 | // if the state has changed, check to see if it is a change from high to low or low to high |
melmon | 3:cff56a809a37 | 30 | if (sensorState == 1){ // if the current state is HIGH then increment the counter |
melmon | 3:cff56a809a37 | 31 | return sensorState; |
melmon | 0:a521da10b15a | 32 | } |
melmon | 0:a521da10b15a | 33 | |
Nick123 | 1:b52588ac9aae | 34 | else { // if the current state is LOW then ignore |
melmon | 4:7a50e0818a47 | 35 | return zero; |
melmon | 0:a521da10b15a | 36 | } |
melmon | 0:a521da10b15a | 37 | } |
melmon | 4:7a50e0818a47 | 38 | return zero; |
Nick123 | 1:b52588ac9aae | 39 | } |
melmon | 3:cff56a809a37 | 40 | |
Nick123 | 2:cff64a27ae9d | 41 | private: |
Nick123 | 2:cff64a27ae9d | 42 | DigitalIn _pin; |
melmon | 4:7a50e0818a47 | 43 | int sensorState; |
melmon | 4:7a50e0818a47 | 44 | int lastSensorState[no_pins]; |
melmon | 4:7a50e0818a47 | 45 | |
melmon | 3:cff56a809a37 | 46 | |
Nick123 | 2:cff64a27ae9d | 47 | }; |
Nick123 | 2:cff64a27ae9d | 48 | |
melmon | 4:7a50e0818a47 | 49 | PinCheck inputs(p6); |
melmon | 4:7a50e0818a47 | 50 | PinCheck outputs(p5); |
Nick123 | 1:b52588ac9aae | 51 | |
Nick123 | 1:b52588ac9aae | 52 | int main() { |
melmon | 4:7a50e0818a47 | 53 | |
melmon | 4:7a50e0818a47 | 54 | int Values[3]; // counter for the number of products passing through |
Nick123 | 1:b52588ac9aae | 55 | |
Nick123 | 1:b52588ac9aae | 56 | while(1) |
Nick123 | 1:b52588ac9aae | 57 | { |
melmon | 4:7a50e0818a47 | 58 | |
melmon | 4:7a50e0818a47 | 59 | for(int i = 0; i < no_pins; i ++){ |
melmon | 4:7a50e0818a47 | 60 | if (i == Inputs){ Values[i] += inputs.Go_and_check(i); } |
melmon | 4:7a50e0818a47 | 61 | if (i == Outputs){ Values[i] += outputs.Go_and_check(i); } |
melmon | 4:7a50e0818a47 | 62 | |
melmon | 4:7a50e0818a47 | 63 | }; |
Nick123 | 1:b52588ac9aae | 64 | |
melmon | 0:a521da10b15a | 65 | } |
melmon | 0:a521da10b15a | 66 | } |