eBike / Mbed 2 deprecated ENCODER_TEST3_peddep

Dependencies:   mbed PID mbed-rtos

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LED_Ring.cpp Source File

LED_Ring.cpp

00001 #include "LED_Ring.h"
00002 
00003 LED_Ring::LED_Ring(): redLED(PC_9), greenLED(PB_8){
00004 
00005     //this->redLED = new PmwOut(PC_9);
00006     //this->greenLED = new PwmOut(PB_8);
00007 
00008     redLED.period_ms(1);
00009     greenLED.period_ms(1);
00010 
00011     ledState = off;
00012 
00013     //thread.start(callback(this, &LED_Ring::run));
00014     this->ticker.attach(callback(this, &LED_Ring::run), 0.001f);
00015 }
00016 
00017 /**
00018  * TODO: run() ist jetzt mit Ticker Realisiert. Statt warten kann jetzt jeder Prozess einmal gemacht werden. => Tickerfrequenz = wait^-1.
00019  */
00020 
00021 void LED_Ring::run(){
00022     static uint16_t blink = 0;
00023     static bool orange = false;
00024 
00025     //while( true ){
00026         switch( ledState ){
00027             case off:
00028                 redLED.write(0.0f);
00029                 greenLED.write(0.0f);
00030                 Thread::wait(1);
00031                 break;
00032     
00033             case shine_red:
00034                 redLED.write(1.0f);
00035                 greenLED.write(0.0f);
00036                 Thread::wait(1);
00037                 break;
00038     
00039             case shine_green:
00040                 redLED.write(0.0f);
00041                 greenLED.write(1.0f);
00042                 Thread::wait(1);
00043                 break;
00044     
00045             /*case shine_orange:
00046                 redLED.write(1.0f);
00047                 greenLED.write(0.0f);
00048                 Thread::wait(1);
00049                 redLED.write(0.0f);
00050                 greenLED.write(0.8f);
00051                 break;*/
00052     
00053             case blink_red:
00054                 if( blink <= 500 ){
00055                     redLED.write(1.0f);
00056                     greenLED.write(0.0f);
00057                     Thread::wait(1);
00058                 } else {
00059                     redLED.write(0.0f);
00060                     greenLED.write(0.0f);
00061                     Thread::wait(1);
00062                 }
00063                 break;
00064     
00065             case blink_green:
00066                 if( blink <= 500 ){
00067                     redLED.write(0.0f);
00068                     greenLED.write(1.0f);
00069                     Thread::wait(1);
00070                 } else {
00071                     redLED.write(0.0f);
00072                     greenLED.write(0.0f);
00073                     Thread::wait(1);
00074                 }
00075                 break;
00076                 
00077             case blink_red_green:
00078                 if( blink <= 500 ){
00079                     redLED.write(0.0f);
00080                     greenLED.write(1.0f);
00081                     Thread::wait(1);
00082                 } else {
00083                     redLED.write(1.0f);
00084                     greenLED.write(0.0f);
00085                     Thread::wait(1);
00086                 }
00087                 break;
00088     
00089             /*case blink_orange:
00090                 if( blink <= 500 ){
00091                     if( orange ){
00092                         redLED.write(0.6f);
00093                         greenLED.write(0.0f);
00094                         Thread::wait(1);
00095                         redLED.write(0.0f);
00096                         greenLED.write(0.8f);
00097                     }
00098                 } else {
00099                     redLED.write(0.0f);
00100                     greenLED.write(0.0f);
00101                     Thread::wait(1);
00102                 }
00103                 break;*/
00104         }
00105         blink++;
00106         if( blink >= 1000) blink = 0;
00107         orange = !orange;
00108         Thread::wait(1);
00109     //}
00110 }
00111 void LED_Ring::shineRed(){
00112     ledState = shine_red;
00113 }
00114 void LED_Ring::shineGreen(){
00115     ledState = shine_green;
00116 }
00117 void LED_Ring::shineOrange(){
00118     ledState = shine_orange;
00119 }
00120 void LED_Ring::blinkRed(){
00121     ledState = blink_red;
00122 }
00123 void LED_Ring::blinkGreen(){
00124     ledState = blink_green;
00125 }
00126 void LED_Ring::blinkOrange(){
00127     ledState = blink_orange;
00128 }
00129 void LED_Ring::blinkRedGreen(){
00130     ledState = blink_red_green;
00131 }
00132 void LED_Ring::turnOfLED(){
00133     ledState = off;
00134 }
00135 
00136 /*void LED_Ring::operator=(string cmd){
00137     if( "off" == cmd ) turnOfLED();
00138     else if( "shine red" == cmd )       shineRed();
00139     else if( "shine green" == cmd )     shineGreen();
00140     else if( "shine orange" == cmd )    shineOrange();
00141     else if( "blink red" == cmd )       blinkRed();
00142     else if( "blink green" == cmd )     blinkGreen();
00143     else if( "blink orange" == cmd )    blinkOrange();
00144 }*/