ti bisogna il phaserunner

Dependencies:   mbed PID mbed-rtos

Committer:
beacon
Date:
Tue Jun 04 19:03:39 2019 +0000
Revision:
11:39bd79605827
Parent:
7:15e6fc689368
ti bisogna il phaserunner

Who changed what in which revision?

UserRevisionLine numberNew 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 }*/