Test funkcnosti HCSR501
Dependencies: USBDevice mbed millis
main.cpp@1:ca6f01b3d4ad, 2018-01-13 (annotated)
- Committer:
- venhy
- Date:
- Sat Jan 13 11:48:55 2018 +0000
- Revision:
- 1:ca6f01b3d4ad
- Parent:
- 0:6238d7962d9f
Final;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
venhy | 0:6238d7962d9f | 1 | #include "mbed.h" |
venhy | 0:6238d7962d9f | 2 | #include "USBSerial.h" |
venhy | 0:6238d7962d9f | 3 | #include "millis.h" |
venhy | 0:6238d7962d9f | 4 | |
venhy | 0:6238d7962d9f | 5 | |
venhy | 0:6238d7962d9f | 6 | DigitalOut myLed(LED1); |
venhy | 0:6238d7962d9f | 7 | DigitalIn digitalOutputPIR(PTB0); |
venhy | 0:6238d7962d9f | 8 | USBSerial serial; |
venhy | 0:6238d7962d9f | 9 | |
venhy | 0:6238d7962d9f | 10 | |
venhy | 1:ca6f01b3d4ad | 11 | int MeasureTriggerDelay(void) { |
venhy | 1:ca6f01b3d4ad | 12 | |
venhy | 1:ca6f01b3d4ad | 13 | uint8_t measureFlagON = 0; |
venhy | 1:ca6f01b3d4ad | 14 | uint8_t completeMeasureFlag = 0; |
venhy | 1:ca6f01b3d4ad | 15 | time_t triggerTime, offTime; |
venhy | 1:ca6f01b3d4ad | 16 | |
venhy | 1:ca6f01b3d4ad | 17 | while(!completeMeasureFlag){ |
venhy | 1:ca6f01b3d4ad | 18 | |
venhy | 1:ca6f01b3d4ad | 19 | if(digitalOutputPIR) { |
venhy | 1:ca6f01b3d4ad | 20 | |
venhy | 1:ca6f01b3d4ad | 21 | myLed = 0; |
venhy | 1:ca6f01b3d4ad | 22 | if(!measureFlagON) { |
venhy | 1:ca6f01b3d4ad | 23 | |
venhy | 1:ca6f01b3d4ad | 24 | triggerTime = millis() / 1000; |
venhy | 1:ca6f01b3d4ad | 25 | serial.printf("/KALIBRACE/ Detekovan pohyb /KALIBRACE/\r\n"); |
venhy | 1:ca6f01b3d4ad | 26 | |
venhy | 1:ca6f01b3d4ad | 27 | } |
venhy | 1:ca6f01b3d4ad | 28 | measureFlagON = 1; |
venhy | 1:ca6f01b3d4ad | 29 | |
venhy | 1:ca6f01b3d4ad | 30 | } |
venhy | 1:ca6f01b3d4ad | 31 | else { |
venhy | 1:ca6f01b3d4ad | 32 | |
venhy | 1:ca6f01b3d4ad | 33 | myLed = 1; |
venhy | 1:ca6f01b3d4ad | 34 | offTime = millis() / 1000; |
venhy | 1:ca6f01b3d4ad | 35 | serial.printf("/KALIBRACE/ Vystup odpojen, trigger delay je %d sekund /KALIBRACE/\r\n", offTime - triggerTime); |
venhy | 1:ca6f01b3d4ad | 36 | if(measureFlagON) completeMeasureFlag = 1; |
venhy | 1:ca6f01b3d4ad | 37 | |
venhy | 1:ca6f01b3d4ad | 38 | } |
venhy | 1:ca6f01b3d4ad | 39 | |
venhy | 1:ca6f01b3d4ad | 40 | } |
venhy | 1:ca6f01b3d4ad | 41 | |
venhy | 1:ca6f01b3d4ad | 42 | return (offTime - triggerTime); |
venhy | 1:ca6f01b3d4ad | 43 | } |
venhy | 1:ca6f01b3d4ad | 44 | |
venhy | 0:6238d7962d9f | 45 | |
venhy | 0:6238d7962d9f | 46 | int main() { |
venhy | 0:6238d7962d9f | 47 | |
venhy | 1:ca6f01b3d4ad | 48 | int triggerDelayTime = 3; //vychozi nastaveni 3 sekundy |
venhy | 1:ca6f01b3d4ad | 49 | uint8_t repeatTriggerCount = 0; |
venhy | 0:6238d7962d9f | 50 | int printFlag = 0; |
venhy | 1:ca6f01b3d4ad | 51 | int triggerTime = 0; |
venhy | 1:ca6f01b3d4ad | 52 | myLed = 1; |
venhy | 1:ca6f01b3d4ad | 53 | |
venhy | 0:6238d7962d9f | 54 | millisStart(); |
venhy | 1:ca6f01b3d4ad | 55 | wait(6); |
venhy | 1:ca6f01b3d4ad | 56 | |
venhy | 1:ca6f01b3d4ad | 57 | serial.printf("Zjistuji dobu aktivniho vystupu - trigger delay\r\n"); |
venhy | 1:ca6f01b3d4ad | 58 | while(digitalOutputPIR != 1) {}; |
venhy | 1:ca6f01b3d4ad | 59 | triggerDelayTime = MeasureTriggerDelay(); |
venhy | 1:ca6f01b3d4ad | 60 | |
venhy | 0:6238d7962d9f | 61 | while(1) { |
venhy | 0:6238d7962d9f | 62 | |
venhy | 0:6238d7962d9f | 63 | if(digitalOutputPIR) |
venhy | 0:6238d7962d9f | 64 | { |
venhy | 0:6238d7962d9f | 65 | myLed = 0; |
venhy | 0:6238d7962d9f | 66 | if(!printFlag) { |
venhy | 0:6238d7962d9f | 67 | |
venhy | 0:6238d7962d9f | 68 | triggerTime = millis()/1000; |
venhy | 0:6238d7962d9f | 69 | serial.printf("Detekovan pohyb %d sekund od zapnuti FRDM\r\n", triggerTime); |
venhy | 0:6238d7962d9f | 70 | printFlag = 1; |
venhy | 0:6238d7962d9f | 71 | |
venhy | 0:6238d7962d9f | 72 | } |
venhy | 0:6238d7962d9f | 73 | } |
venhy | 0:6238d7962d9f | 74 | else { |
venhy | 0:6238d7962d9f | 75 | |
venhy | 0:6238d7962d9f | 76 | int offTime = millis() / 1000; |
venhy | 0:6238d7962d9f | 77 | if(printFlag) { |
venhy | 0:6238d7962d9f | 78 | |
venhy | 1:ca6f01b3d4ad | 79 | repeatTriggerCount = ((offTime - triggerTime) / triggerDelayTime) - 1; |
venhy | 1:ca6f01b3d4ad | 80 | if(((offTime - triggerTime) / triggerDelayTime - 1) < 0) repeatTriggerCount = 0; |
venhy | 1:ca6f01b3d4ad | 81 | |
venhy | 0:6238d7962d9f | 82 | serial.printf("LED vypnuta po %d sekundach od sepnuti\r\n", offTime - triggerTime); |
venhy | 1:ca6f01b3d4ad | 83 | serial.printf("Opakovany trigger probehl %dx krat\r\n", repeatTriggerCount); |
venhy | 1:ca6f01b3d4ad | 84 | |
venhy | 0:6238d7962d9f | 85 | } |
venhy | 0:6238d7962d9f | 86 | myLed = 1; |
venhy | 0:6238d7962d9f | 87 | printFlag = 0; |
venhy | 0:6238d7962d9f | 88 | |
venhy | 0:6238d7962d9f | 89 | } |
venhy | 0:6238d7962d9f | 90 | } |
venhy | 0:6238d7962d9f | 91 | } |
venhy | 0:6238d7962d9f | 92 |