LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)

Dependencies:   AQM0802A DigitalSw mbed

Committer:
suupen
Date:
Sat May 20 12:23:42 2017 +0000
Revision:
1:d4291fd3a94c
Parent:
0:c5384fa0fc28
Child:
2:f22110fb3925
????????????????????????????????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
suupen 1:d4291fd3a94c 1 #include "mbed.h"
suupen 1:d4291fd3a94c 2 #include <AQM0802A.h>
suupen 1:d4291fd3a94c 3 #include "priodMsurement.h"
suupen 1:d4291fd3a94c 4
suupen 1:d4291fd3a94c 5 I2C i2c(p28, p27);
suupen 1:d4291fd3a94c 6 AQM0802A lcd(i2c); // if 5.0v supply, (i2c, false);
suupen 1:d4291fd3a94c 7
suupen 1:d4291fd3a94c 8 Timer timer;
suupen 1:d4291fd3a94c 9 uint16_t onTime;
suupen 1:d4291fd3a94c 10 uint16_t offTime;
suupen 1:d4291fd3a94c 11 int8_t beforeLevel; // 0:Lo 1:Hi -1:timeOut(non Pluse)
suupen 1:d4291fd3a94c 12
suupen 1:d4291fd3a94c 13 InterruptIn lightIn(p22);
suupen 1:d4291fd3a94c 14 DigitalOut monitor(LED4);
suupen 1:d4291fd3a94c 15
suupen 1:d4291fd3a94c 16 void priodMsurementMain(void)
suupen 1:d4291fd3a94c 17 {
suupen 1:d4291fd3a94c 18 if((timer.read_ms() > Z_nonSignalTime) && (beforeLevel != -1)){
suupen 1:d4291fd3a94c 19 printf("end \r\n");
suupen 1:d4291fd3a94c 20 timer.reset();
suupen 1:d4291fd3a94c 21 beforeLevel = -1;
suupen 1:d4291fd3a94c 22 }
suupen 1:d4291fd3a94c 23 }
suupen 1:d4291fd3a94c 24
suupen 1:d4291fd3a94c 25 void ledOn(void)
suupen 1:d4291fd3a94c 26 {
suupen 1:d4291fd3a94c 27 monitor = 1;
suupen 1:d4291fd3a94c 28
suupen 1:d4291fd3a94c 29 switch(beforeLevel) {
suupen 1:d4291fd3a94c 30 case 0:
suupen 1:d4291fd3a94c 31 offTime = timer.read_ms();
suupen 1:d4291fd3a94c 32 timer.reset();
suupen 1:d4291fd3a94c 33
suupen 1:d4291fd3a94c 34 printf(" off = %d\r\n\r\n",offTime);
suupen 1:d4291fd3a94c 35
suupen 1:d4291fd3a94c 36 lcd.cls();
suupen 1:d4291fd3a94c 37 lcd.printf("on %d off %d",onTime, offTime);
suupen 1:d4291fd3a94c 38
suupen 1:d4291fd3a94c 39 break;
suupen 1:d4291fd3a94c 40 case -1:
suupen 1:d4291fd3a94c 41 case 1:
suupen 1:d4291fd3a94c 42 default:
suupen 1:d4291fd3a94c 43 timer.reset();
suupen 1:d4291fd3a94c 44 printf("start: off to on\r\n");
suupen 1:d4291fd3a94c 45 break;
suupen 1:d4291fd3a94c 46
suupen 1:d4291fd3a94c 47 }
suupen 1:d4291fd3a94c 48 beforeLevel = 1;
suupen 1:d4291fd3a94c 49
suupen 1:d4291fd3a94c 50 }
suupen 1:d4291fd3a94c 51
suupen 1:d4291fd3a94c 52 void ledOff(void)
suupen 1:d4291fd3a94c 53 {
suupen 1:d4291fd3a94c 54 monitor = 0;
suupen 1:d4291fd3a94c 55
suupen 1:d4291fd3a94c 56 switch(beforeLevel) {
suupen 1:d4291fd3a94c 57 case 1:
suupen 1:d4291fd3a94c 58 onTime = timer.read_ms();
suupen 1:d4291fd3a94c 59 if(onTime > Z_offNonDetectTime){
suupen 1:d4291fd3a94c 60 timer.reset();
suupen 1:d4291fd3a94c 61 printf(" on = %d\r\n",onTime);
suupen 1:d4291fd3a94c 62 /*
suupen 1:d4291fd3a94c 63 lcd.cls();
suupen 1:d4291fd3a94c 64 lcd.printf("on %d off %d",onTime, offTime);
suupen 1:d4291fd3a94c 65 */
suupen 1:d4291fd3a94c 66 }
suupen 1:d4291fd3a94c 67 else{
suupen 1:d4291fd3a94c 68 // noise or dinamic output have a chancel.
suupen 1:d4291fd3a94c 69 }
suupen 1:d4291fd3a94c 70 break;
suupen 1:d4291fd3a94c 71 case -1:
suupen 1:d4291fd3a94c 72 case 0:
suupen 1:d4291fd3a94c 73 default:
suupen 1:d4291fd3a94c 74 timer.reset();
suupen 1:d4291fd3a94c 75 printf("start: on to off\r\n");
suupen 1:d4291fd3a94c 76 break;
suupen 1:d4291fd3a94c 77
suupen 1:d4291fd3a94c 78 }
suupen 1:d4291fd3a94c 79 beforeLevel = 0;
suupen 1:d4291fd3a94c 80
suupen 1:d4291fd3a94c 81
suupen 1:d4291fd3a94c 82
suupen 1:d4291fd3a94c 83 }
suupen 1:d4291fd3a94c 84
suupen 1:d4291fd3a94c 85 void priodMsurementInitalize(void)
suupen 1:d4291fd3a94c 86 {
suupen 1:d4291fd3a94c 87 timer.start();
suupen 1:d4291fd3a94c 88
suupen 1:d4291fd3a94c 89 lightIn.rise(&ledOn);
suupen 1:d4291fd3a94c 90 lightIn.fall(&ledOff);
suupen 1:d4291fd3a94c 91 }