Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed PID mbed-rtos
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 }*/
Generated on Mon Aug 1 2022 09:49:43 by
