Test funkcnosti HCSR501

Dependencies:   USBDevice mbed millis

Committer:
venhy
Date:
Sat Jan 13 11:48:55 2018 +0000
Revision:
1:ca6f01b3d4ad
Parent:
0:6238d7962d9f
Final;

Who changed what in which revision?

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