ti bisogna il phaserunner
Dependencies: mbed PID mbed-rtos
Peripherien/LED_Ring.cpp@7:15e6fc689368, 2019-05-16 (annotated)
- Committer:
- EpicG10
- Date:
- Thu May 16 20:42:39 2019 +0000
- Revision:
- 7:15e6fc689368
Implementation Regler (not finished)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
EpicG10 | 7:15e6fc689368 | 1 | #include "LED_Ring.h" |
EpicG10 | 7:15e6fc689368 | 2 | |
EpicG10 | 7:15e6fc689368 | 3 | LED_Ring::LED_Ring(): redLED(PC_9), greenLED(PB_8){ |
EpicG10 | 7:15e6fc689368 | 4 | |
EpicG10 | 7:15e6fc689368 | 5 | //this->redLED = new PmwOut(PC_9); |
EpicG10 | 7:15e6fc689368 | 6 | //this->greenLED = new PwmOut(PB_8); |
EpicG10 | 7:15e6fc689368 | 7 | |
EpicG10 | 7:15e6fc689368 | 8 | redLED.period_ms(1); |
EpicG10 | 7:15e6fc689368 | 9 | greenLED.period_ms(1); |
EpicG10 | 7:15e6fc689368 | 10 | |
EpicG10 | 7:15e6fc689368 | 11 | ledState = off; |
EpicG10 | 7:15e6fc689368 | 12 | |
EpicG10 | 7:15e6fc689368 | 13 | //thread.start(callback(this, &LED_Ring::run)); |
EpicG10 | 7:15e6fc689368 | 14 | this->ticker.attach(callback(this, &LED_Ring::run), 0.001f); |
EpicG10 | 7:15e6fc689368 | 15 | } |
EpicG10 | 7:15e6fc689368 | 16 | |
EpicG10 | 7:15e6fc689368 | 17 | /** |
EpicG10 | 7:15e6fc689368 | 18 | * TODO: run() ist jetzt mit Ticker Realisiert. Statt warten kann jetzt jeder Prozess einmal gemacht werden. => Tickerfrequenz = wait^-1. |
EpicG10 | 7:15e6fc689368 | 19 | */ |
EpicG10 | 7:15e6fc689368 | 20 | |
EpicG10 | 7:15e6fc689368 | 21 | void LED_Ring::run(){ |
EpicG10 | 7:15e6fc689368 | 22 | static uint16_t blink = 0; |
EpicG10 | 7:15e6fc689368 | 23 | static bool orange = false; |
EpicG10 | 7:15e6fc689368 | 24 | |
EpicG10 | 7:15e6fc689368 | 25 | //while( true ){ |
EpicG10 | 7:15e6fc689368 | 26 | switch( ledState ){ |
EpicG10 | 7:15e6fc689368 | 27 | case off: |
EpicG10 | 7:15e6fc689368 | 28 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 29 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 30 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 31 | break; |
EpicG10 | 7:15e6fc689368 | 32 | |
EpicG10 | 7:15e6fc689368 | 33 | case shine_red: |
EpicG10 | 7:15e6fc689368 | 34 | redLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 35 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 36 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 37 | break; |
EpicG10 | 7:15e6fc689368 | 38 | |
EpicG10 | 7:15e6fc689368 | 39 | case shine_green: |
EpicG10 | 7:15e6fc689368 | 40 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 41 | greenLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 42 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 43 | break; |
EpicG10 | 7:15e6fc689368 | 44 | |
EpicG10 | 7:15e6fc689368 | 45 | /*case shine_orange: |
EpicG10 | 7:15e6fc689368 | 46 | redLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 47 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 48 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 49 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 50 | greenLED.write(0.8f); |
EpicG10 | 7:15e6fc689368 | 51 | break;*/ |
EpicG10 | 7:15e6fc689368 | 52 | |
EpicG10 | 7:15e6fc689368 | 53 | case blink_red: |
EpicG10 | 7:15e6fc689368 | 54 | if( blink <= 500 ){ |
EpicG10 | 7:15e6fc689368 | 55 | redLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 56 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 57 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 58 | } else { |
EpicG10 | 7:15e6fc689368 | 59 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 60 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 61 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 62 | } |
EpicG10 | 7:15e6fc689368 | 63 | break; |
EpicG10 | 7:15e6fc689368 | 64 | |
EpicG10 | 7:15e6fc689368 | 65 | case blink_green: |
EpicG10 | 7:15e6fc689368 | 66 | if( blink <= 500 ){ |
EpicG10 | 7:15e6fc689368 | 67 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 68 | greenLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 69 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 70 | } else { |
EpicG10 | 7:15e6fc689368 | 71 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 72 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 73 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 74 | } |
EpicG10 | 7:15e6fc689368 | 75 | break; |
EpicG10 | 7:15e6fc689368 | 76 | |
EpicG10 | 7:15e6fc689368 | 77 | case blink_red_green: |
EpicG10 | 7:15e6fc689368 | 78 | if( blink <= 500 ){ |
EpicG10 | 7:15e6fc689368 | 79 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 80 | greenLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 81 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 82 | } else { |
EpicG10 | 7:15e6fc689368 | 83 | redLED.write(1.0f); |
EpicG10 | 7:15e6fc689368 | 84 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 85 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 86 | } |
EpicG10 | 7:15e6fc689368 | 87 | break; |
EpicG10 | 7:15e6fc689368 | 88 | |
EpicG10 | 7:15e6fc689368 | 89 | /*case blink_orange: |
EpicG10 | 7:15e6fc689368 | 90 | if( blink <= 500 ){ |
EpicG10 | 7:15e6fc689368 | 91 | if( orange ){ |
EpicG10 | 7:15e6fc689368 | 92 | redLED.write(0.6f); |
EpicG10 | 7:15e6fc689368 | 93 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 94 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 95 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 96 | greenLED.write(0.8f); |
EpicG10 | 7:15e6fc689368 | 97 | } |
EpicG10 | 7:15e6fc689368 | 98 | } else { |
EpicG10 | 7:15e6fc689368 | 99 | redLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 100 | greenLED.write(0.0f); |
EpicG10 | 7:15e6fc689368 | 101 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 102 | } |
EpicG10 | 7:15e6fc689368 | 103 | break;*/ |
EpicG10 | 7:15e6fc689368 | 104 | } |
EpicG10 | 7:15e6fc689368 | 105 | blink++; |
EpicG10 | 7:15e6fc689368 | 106 | if( blink >= 1000) blink = 0; |
EpicG10 | 7:15e6fc689368 | 107 | orange = !orange; |
EpicG10 | 7:15e6fc689368 | 108 | Thread::wait(1); |
EpicG10 | 7:15e6fc689368 | 109 | //} |
EpicG10 | 7:15e6fc689368 | 110 | } |
EpicG10 | 7:15e6fc689368 | 111 | void LED_Ring::shineRed(){ |
EpicG10 | 7:15e6fc689368 | 112 | ledState = shine_red; |
EpicG10 | 7:15e6fc689368 | 113 | } |
EpicG10 | 7:15e6fc689368 | 114 | void LED_Ring::shineGreen(){ |
EpicG10 | 7:15e6fc689368 | 115 | ledState = shine_green; |
EpicG10 | 7:15e6fc689368 | 116 | } |
EpicG10 | 7:15e6fc689368 | 117 | void LED_Ring::shineOrange(){ |
EpicG10 | 7:15e6fc689368 | 118 | ledState = shine_orange; |
EpicG10 | 7:15e6fc689368 | 119 | } |
EpicG10 | 7:15e6fc689368 | 120 | void LED_Ring::blinkRed(){ |
EpicG10 | 7:15e6fc689368 | 121 | ledState = blink_red; |
EpicG10 | 7:15e6fc689368 | 122 | } |
EpicG10 | 7:15e6fc689368 | 123 | void LED_Ring::blinkGreen(){ |
EpicG10 | 7:15e6fc689368 | 124 | ledState = blink_green; |
EpicG10 | 7:15e6fc689368 | 125 | } |
EpicG10 | 7:15e6fc689368 | 126 | void LED_Ring::blinkOrange(){ |
EpicG10 | 7:15e6fc689368 | 127 | ledState = blink_orange; |
EpicG10 | 7:15e6fc689368 | 128 | } |
EpicG10 | 7:15e6fc689368 | 129 | void LED_Ring::blinkRedGreen(){ |
EpicG10 | 7:15e6fc689368 | 130 | ledState = blink_red_green; |
EpicG10 | 7:15e6fc689368 | 131 | } |
EpicG10 | 7:15e6fc689368 | 132 | void LED_Ring::turnOfLED(){ |
EpicG10 | 7:15e6fc689368 | 133 | ledState = off; |
EpicG10 | 7:15e6fc689368 | 134 | } |
EpicG10 | 7:15e6fc689368 | 135 | |
EpicG10 | 7:15e6fc689368 | 136 | /*void LED_Ring::operator=(string cmd){ |
EpicG10 | 7:15e6fc689368 | 137 | if( "off" == cmd ) turnOfLED(); |
EpicG10 | 7:15e6fc689368 | 138 | else if( "shine red" == cmd ) shineRed(); |
EpicG10 | 7:15e6fc689368 | 139 | else if( "shine green" == cmd ) shineGreen(); |
EpicG10 | 7:15e6fc689368 | 140 | else if( "shine orange" == cmd ) shineOrange(); |
EpicG10 | 7:15e6fc689368 | 141 | else if( "blink red" == cmd ) blinkRed(); |
EpicG10 | 7:15e6fc689368 | 142 | else if( "blink green" == cmd ) blinkGreen(); |
EpicG10 | 7:15e6fc689368 | 143 | else if( "blink orange" == cmd ) blinkOrange(); |
EpicG10 | 7:15e6fc689368 | 144 | }*/ |