Image Writer
/
Nucleo_ondelay_onshot
Ondelay OneShot timer example
main.cpp@0:d31d989a13fc, 2018-11-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |