Ondelay OneShot timer example

Dependencies:   mbed

Committer:
ImageWriter
Date:
Wed Nov 21 05:48:43 2018 +0000
Revision:
0:d31d989a13fc
Child:
1:2416bbc70934
Child:
2:2e40a6f0c892
ON delay One shot for Nepcon2019;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ImageWriter 0:d31d989a13fc 1 // Nucleo OnDeley Oneshot
ImageWriter 0:d31d989a13fc 2 #include "mbed.h"
ImageWriter 0:d31d989a13fc 3
ImageWriter 0:d31d989a13fc 4 // IO instance
ImageWriter 0:d31d989a13fc 5 //#define F746ZG
ImageWriter 0:d31d989a13fc 6 #undef F746ZG
ImageWriter 0:d31d989a13fc 7 #ifdef F746ZG
ImageWriter 0:d31d989a13fc 8 DigitalOut myled(PB_0); // Green
ImageWriter 0:d31d989a13fc 9 DigitalOut myled2(PB_7); // Blue
ImageWriter 0:d31d989a13fc 10 DigitalOut myled3(PB_14); // Red
ImageWriter 0:d31d989a13fc 11 DigitalIn mySw(PC_13); // User button
ImageWriter 0:d31d989a13fc 12 #define MYSWLOGIC 1
ImageWriter 0:d31d989a13fc 13 #endif
ImageWriter 0:d31d989a13fc 14
ImageWriter 0:d31d989a13fc 15 #define F411RE
ImageWriter 0:d31d989a13fc 16 //#undef F411RE
ImageWriter 0:d31d989a13fc 17 #ifdef F411RE
ImageWriter 0:d31d989a13fc 18 DigitalOut myled(D13); // LED
ImageWriter 0:d31d989a13fc 19 DigitalOut myled2(D12); //
ImageWriter 0:d31d989a13fc 20 DigitalOut myled3(D11); //
ImageWriter 0:d31d989a13fc 21 DigitalIn mySw(PC_13); // User button
ImageWriter 0:d31d989a13fc 22 #define MYSWLOGIC 0
ImageWriter 0:d31d989a13fc 23 #endif
ImageWriter 0:d31d989a13fc 24
ImageWriter 0:d31d989a13fc 25
ImageWriter 0:d31d989a13fc 26 // Timer instance
ImageWriter 0:d31d989a13fc 27 Timeout delay1;
ImageWriter 0:d31d989a13fc 28 Timeout oneShot1;
ImageWriter 0:d31d989a13fc 29
ImageWriter 0:d31d989a13fc 30 // Timer flag
ImageWriter 0:d31d989a13fc 31 bool swon = false; // Switch status. Set true when press. Set false when Time up and release.
ImageWriter 0:d31d989a13fc 32 bool tmon = false; // Timer status. Set to the true when the OneShot timer starts. Set to the false when time up.
ImageWriter 0:d31d989a13fc 33
ImageWriter 0:d31d989a13fc 34 // Function prototype
ImageWriter 0:d31d989a13fc 35 void upDelay1();
ImageWriter 0:d31d989a13fc 36 void upOneShot1();
ImageWriter 0:d31d989a13fc 37
ImageWriter 0:d31d989a13fc 38 // Functions
ImageWriter 0:d31d989a13fc 39 // Up time from delay timer.
ImageWriter 0:d31d989a13fc 40 void upDelay1(){
ImageWriter 0:d31d989a13fc 41 myled2 = 1; // LED on
ImageWriter 0:d31d989a13fc 42 oneShot1.attach_us(&upOneShot1, 50000); // Set oneShot
ImageWriter 0:d31d989a13fc 43 tmon = true; // tmon flag set.
ImageWriter 0:d31d989a13fc 44 }
ImageWriter 0:d31d989a13fc 45
ImageWriter 0:d31d989a13fc 46 // Up time from oneShot timeer.
ImageWriter 0:d31d989a13fc 47 void upOneShot1(){
ImageWriter 0:d31d989a13fc 48 myled2 = 0; // LED off
ImageWriter 0:d31d989a13fc 49 delay1.detach(); // Timeout::detach
ImageWriter 0:d31d989a13fc 50 oneShot1.detach(); // Timeout::detach
ImageWriter 0:d31d989a13fc 51 tmon = false; // tmon flag reset.
ImageWriter 0:d31d989a13fc 52 }
ImageWriter 0:d31d989a13fc 53
ImageWriter 0:d31d989a13fc 54 int main() {
ImageWriter 0:d31d989a13fc 55 while(1) {
ImageWriter 0:d31d989a13fc 56 myled3 = !myled3;
ImageWriter 0:d31d989a13fc 57 if (mySw == MYSWLOGIC){ // If sw on,
ImageWriter 0:d31d989a13fc 58 myled = 1; // Monitor LED ON
ImageWriter 0:d31d989a13fc 59 if(myled2 == 0 && swon == false){ // If timer is not started,
ImageWriter 0:d31d989a13fc 60 swon = true; // flag on
ImageWriter 0:d31d989a13fc 61 delay1.attach_us(&upDelay1, 50000); // Start delay timer.
ImageWriter 0:d31d989a13fc 62 }
ImageWriter 0:d31d989a13fc 63 }else{ // If sw off,
ImageWriter 0:d31d989a13fc 64 myled = 0; // LED is OFF // Monitor LED off
ImageWriter 0:d31d989a13fc 65 if(tmon == false){ // If timer is completed,
ImageWriter 0:d31d989a13fc 66 swon = false; // frag reset.
ImageWriter 0:d31d989a13fc 67 delay1.detach(); // Cansel the on delay timer.
ImageWriter 0:d31d989a13fc 68 }
ImageWriter 0:d31d989a13fc 69 }
ImageWriter 0:d31d989a13fc 70 }
ImageWriter 0:d31d989a13fc 71 }