RGB LEDs Control

Dependencies:   mbed QEI PololuLedStrip

Files at this revision

API Documentation at this revision

Comitter:
whutsup
Date:
Sat May 04 18:51:43 2019 +0000
Parent:
7:050f086f6f5c
Commit message:
Lune RGB LEDs control;

Changed in this revision

MotorControl.cpp Show annotated file Show diff for this revision Revisions of this file
MotorControl.h Show annotated file Show diff for this revision Revisions of this file
QEI.lib Show annotated file Show diff for this revision Revisions of this file
RgbControl.cpp Show annotated file Show diff for this revision Revisions of this file
RgbControl.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MotorControl.cpp	Sat May 04 18:51:43 2019 +0000
@@ -0,0 +1,83 @@
+#include "mbed.h"
+#include "QEI.h"
+ 
+extern              Serial bt;
+DigitalOut          Enable(A0);
+DigitalOut          M1(PA_1);
+DigitalOut          M2(PF_1);
+
+
+extern              QEI re;
+extern              Ticker      timer1;
+extern int          targetDis;
+
+void MotorTest(int mode)
+{
+    
+    switch (mode)
+    
+    {
+        case 0 : //stop
+            
+            Enable = 0;
+            timer1.detach();
+
+            break;
+    
+        case 1 : // right
+    
+            Enable = 1;
+            M1 = 1;
+            M2 = 0;            
+    
+            break;
+    
+        case 2 : // left
+        
+            Enable = 1;
+            M1 = 0;
+            M2 = 1;
+        
+            break;       
+            
+    }
+    
+              
+}
+
+void ControlPos()
+{
+        
+        int pulse = re.getPulses();
+        int d = pulse/200;
+       
+        float ref_d = (targetDis-d);
+        float abs_ref_d = abs(ref_d);
+//        float s;
+//        s = abs_ref_d; 
+        
+        if(-0.8f > ref_d)
+        {
+                Enable = 1;
+                M1 = 0;
+                M2 = 1; //(s<3)?s/5:1;
+                
+        }
+        
+        else if ( 0.8f <ref_d)
+        {
+                    
+                Enable = 1;
+                M1 = 1; //(s<3)?s/5:1;
+                M2 = 0;
+                        
+        }
+        
+        if (abs_ref_d < 0.8f)
+        {
+            
+                Enable = 0;
+                timer1.detach();
+                  
+        }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MotorControl.h	Sat May 04 18:51:43 2019 +0000
@@ -0,0 +1,2 @@
+void MotorTest(int mode);
+void ControlPos();
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QEI.lib	Sat May 04 18:51:43 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/aberk/code/QEI/#5c2ad81551aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RgbControl.cpp	Sat May 04 18:51:43 2019 +0000
@@ -0,0 +1,656 @@
+#include "mbed.h"
+#include "QEI.h"
+#include "PololuLedStrip.h"
+
+
+PololuLedStrip      led7(PB_0);
+PololuLedStrip      led6(PA_12);
+PololuLedStrip      led5(PB_6);
+PololuLedStrip      led4(PB_1);
+PololuLedStrip      led3(PA_8);
+PololuLedStrip      led2(PA_11);
+PololuLedStrip      led1(PA_3);
+PololuLedStrip      led0(PA_4);
+
+#define LED_COUNT 16
+
+rgb_color colors0[LED_COUNT];
+rgb_color colors1[LED_COUNT];
+rgb_color colors2[LED_COUNT];
+rgb_color colors3[LED_COUNT];
+rgb_color colors4[LED_COUNT];
+rgb_color colors5[LED_COUNT];
+rgb_color colors6[LED_COUNT];
+rgb_color colors7[LED_COUNT];
+
+Ticker      led;
+
+extern              QEI re;
+extern int R;
+extern int G;
+extern int B;
+extern              Serial bt;
+extern int dayLed;
+
+void LedOn1()
+{
+        
+        int pulse = re.getPulses();  
+        int d = pulse/200;
+        
+        if(48>=d)
+        {
+            
+            uint8_t r[8];
+            uint8_t g[8];
+            uint8_t b[8];   
+            
+            for (int i=0 ; i<8 ; i++)
+            {
+                int n = (i+1); 
+                int moveL_r = ((R/6)*(d-1*n*6))+R;
+                int moveL_g = ((G/6)*(d-1*n*6))+G;
+                int moveL_b = ((B/6)*(d-1*n*6))+B;
+                
+                moveL_r = (0 >= moveL_r) ? 0: moveL_r;
+                moveL_g = (0 >= moveL_g) ? 0: moveL_g;
+                moveL_b = (0 >= moveL_b) ? 0: moveL_b;
+                
+                moveL_r = (R <= moveL_r) ? R: moveL_r;
+                moveL_g = (G <= moveL_g) ? G: moveL_g;
+                moveL_b = (B <= moveL_b) ? B: moveL_b;
+                
+                
+                r[i] = moveL_r;
+                g[i] = moveL_g;
+                b[i] = moveL_b;
+                
+            } 
+            
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+        else if(52<=d)
+        {
+            uint8_t r[8];
+            uint8_t g[8];
+            uint8_t b[8];
+                                    
+            for (int i=0 ; i<8 ; i++)
+            {
+                int moveR_r = -1*(R/6)*(d-1*(52+(i+1)*6))+R;
+                int moveR_g = -1*(G/6)*(d-1*(52+(i+1)*6))+G;
+                int moveR_b = -1*(B/6)*(d-1*(52+(i+1)*6))+B;
+                                
+                
+                moveR_r = (0 >= moveR_r) ? 0: moveR_r;
+                moveR_g = (0 >= moveR_g) ? 0: moveR_g;
+                moveR_b = (0 >= moveR_b) ? 0: moveR_b;
+                
+                moveR_r = (R <= moveR_r) ? R: moveR_r;
+                moveR_g = (G <= moveR_g) ? G: moveR_g;
+                moveR_b = (B <= moveR_b) ? B: moveR_b;
+                
+                
+                r[i] = moveR_r;
+                g[i] = moveR_g;
+                b[i] = moveR_b;
+            }
+
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+        else
+        {
+            
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ R, G, B };
+                colors1[i] = (rgb_color){ R, G, B };
+                colors2[i] = (rgb_color){ R, G, B };
+                colors3[i] = (rgb_color){ R, G, B };
+                colors4[i] = (rgb_color){ R, G, B };
+                colors5[i] = (rgb_color){ R, G, B };
+                colors6[i] = (rgb_color){ R, G, B };
+                colors7[i] = (rgb_color){ R, G, B };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+        }
+    
+}
+
+
+void LedOn2()
+{
+    
+        int pulse = re.getPulses();  
+        int p = pulse/200;
+        uint8_t k[8];
+        int n = 8;
+        int d = 6;
+        double bi= 0.02f;
+        
+        uint8_t r[8];
+        uint8_t g[8];
+        uint8_t b[8];
+        
+        for (int i=0 ; i<8 ; i++)
+        {
+            k[i] = ((n-i)*d)/log((1/bi)+1);
+        }
+        
+        
+        if(48>=p)
+        {
+
+
+            for (int i=0 ; i<8 ; i++)
+            {
+
+                int moveL_r = R*bi*(10^((p-1*i*d)/k[i])-1);
+                int moveL_g = G*bi*(10^((p-1*i*d)/k[i])-1);
+                int moveL_b = B*bi*(10^((p-1*i*d)/k[i])-1);;
+                 
+                moveL_r = (0 >= moveL_r) ? 0: moveL_r;
+                moveL_g = (0 >= moveL_g) ? 0: moveL_g;
+                moveL_b = (0 >= moveL_b) ? 0: moveL_b;
+                
+                moveL_r = (R <= moveL_r) ? R: moveL_r;
+                moveL_g = (G <= moveL_g) ? G: moveL_g;
+                moveL_b = (B <= moveL_b) ? B: moveL_b;
+                 
+                r[i] = moveL_r;
+                g[i] = moveL_g;
+                b[i] = moveL_b;
+    
+            } 
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+ 
+          
+        }
+        
+        else if(49<=p)
+        {
+
+                                    
+            for (int i=0 ; i<8 ; i++)
+            {
+
+                int moveR_r = R*bi*(10^((-1*p+(n+1+i)*d)/k[n-1-i])-1);
+                int moveR_g = G*bi*(10^((-1*p+(n+1+i)*d)/k[n-1-i])-1);
+                int moveR_b = B*bi*(10^((-1*p+(n+1+i)*d)/k[n-1-i])-1);
+                
+                moveR_r = (0 >= moveR_r) ? 0: moveR_r;
+                moveR_g = (0 >= moveR_g) ? 0: moveR_g;
+                moveR_b = (0 >= moveR_b) ? 0: moveR_b;
+                
+                moveR_r = (R <= moveR_r) ? R: moveR_r;
+                moveR_g = (G <= moveR_g) ? G: moveR_g;
+                moveR_b = (B <= moveR_b) ? B: moveR_b;
+                
+                r[i] = moveR_r;
+                g[i] = moveR_g;
+                b[i] = moveR_b;
+                                
+            }
+
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+//        else
+//        {
+//            
+//            for(int i=0; i<16; i++)
+//            {
+//                colors0[i] = (rgb_color){ R, G, B };
+//                colors1[i] = (rgb_color){ R, G, B };
+//                colors2[i] = (rgb_color){ R, G, B };
+//                colors3[i] = (rgb_color){ R, G, B };
+//                colors4[i] = (rgb_color){ R, G, B };
+//                colors5[i] = (rgb_color){ R, G, B };
+//                colors6[i] = (rgb_color){ R, G, B };
+//                colors7[i] = (rgb_color){ R, G, B };
+//            }
+//            
+//            
+//            led0.write(colors0, LED_COUNT);
+//            led1.write(colors1, LED_COUNT);
+//            led2.write(colors2, LED_COUNT);
+//            led3.write(colors3, LED_COUNT);
+//            led4.write(colors4, LED_COUNT);
+//            led5.write(colors5, LED_COUNT);
+//            led6.write(colors6, LED_COUNT);
+//            led7.write(colors7, LED_COUNT);
+//        }
+
+}
+
+void LedOn3()
+{
+    
+        int pulse = re.getPulses();  
+        int d = pulse/200;
+        
+        
+        if(48>=d)
+        {
+            
+            uint8_t r[8];
+            uint8_t g[8];
+            uint8_t b[8];   
+
+            
+            for (int i=0 ; i<8 ; i++)
+            { 
+                int moveL_r = ((R/(48-6*(i)))+1)*(d-48)+R;
+                int moveL_g = ((G/(48-6*(i)))+1)*(d-48)+G;
+                int moveL_b = ((B/(48-6*(i)))+1)*(d-48)+B;
+                
+                r[i] = (0 >= moveL_r) ? 0: moveL_r;
+                g[i] = (0 >= moveL_g) ? 0: moveL_g;
+                b[i] = (0 >= moveL_b) ? 0: moveL_b;
+            } 
+            
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+        else if(52<=d)
+        {
+            uint8_t r[8];
+            uint8_t g[8];
+            uint8_t b[8];
+                                    
+            for (int i=0 ; i<8 ; i++)
+            {
+                int moveR_r = ((-1*R/(6+6*(i)))-1)*(d-52)+R;
+                int moveR_g = ((-1*G/(6+6*(i)))-1)*(d-52)+G;
+                int moveR_b = ((-1*B/(6+6*(i)))-1)*(d-52)+B;
+                                
+                r[i] = (0 >= moveR_r) ? 0:moveR_r ;
+                g[i] = (0 >= moveR_g) ? 0:moveR_g ;
+                b[i] = (0 >= moveR_b) ? 0:moveR_b ;
+            }
+
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+        else
+        {
+            
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ R, G, B };
+                colors1[i] = (rgb_color){ R, G, B };
+                colors2[i] = (rgb_color){ R, G, B };
+                colors3[i] = (rgb_color){ R, G, B };
+                colors4[i] = (rgb_color){ R, G, B };
+                colors5[i] = (rgb_color){ R, G, B };
+                colors6[i] = (rgb_color){ R, G, B };
+                colors7[i] = (rgb_color){ R, G, B };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+        }
+    
+}
+
+void MoonPhase()
+{
+         
+        int d = dayLed;;
+        
+        if(48>=d)
+        {
+            
+            uint8_t r[8];
+            uint8_t g[8];
+            uint8_t b[8];   
+            
+            for (int i=0 ; i<8 ; i++)
+            {
+                int n = (i+1); 
+                int moveL_r = ((R/6)*(d-1*n*6))+R;
+                int moveL_g = ((G/6)*(d-1*n*6))+G;
+                int moveL_b = ((B/6)*(d-1*n*6))+B;
+                
+                moveL_r = (0 >= moveL_r) ? 0: moveL_r;
+                moveL_g = (0 >= moveL_g) ? 0: moveL_g;
+                moveL_b = (0 >= moveL_b) ? 0: moveL_b;
+                
+                moveL_r = (R <= moveL_r) ? R: moveL_r;
+                moveL_g = (G <= moveL_g) ? G: moveL_g;
+                moveL_b = (B <= moveL_b) ? B: moveL_b;
+                
+                
+                r[i] = moveL_r;
+                g[i] = moveL_g;
+                b[i] = moveL_b;
+                
+            } 
+            
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+        else if(52<=d)
+        {
+            uint8_t r[8];
+            uint8_t g[8];
+            uint8_t b[8];
+                                    
+            for (int i=0 ; i<8 ; i++)
+            {
+                int moveR_r = -1*(R/6)*(d-1*(52+(i+1)*6))+R;
+                int moveR_g = -1*(G/6)*(d-1*(52+(i+1)*6))+G;
+                int moveR_b = -1*(B/6)*(d-1*(52+(i+1)*6))+B;
+                                
+                
+                moveR_r = (0 >= moveR_r) ? 0: moveR_r;
+                moveR_g = (0 >= moveR_g) ? 0: moveR_g;
+                moveR_b = (0 >= moveR_b) ? 0: moveR_b;
+                
+                moveR_r = (R <= moveR_r) ? R: moveR_r;
+                moveR_g = (G <= moveR_g) ? G: moveR_g;
+                moveR_b = (B <= moveR_b) ? B: moveR_b;
+                
+                
+                r[i] = moveR_r;
+                g[i] = moveR_g;
+                b[i] = moveR_b;
+            }
+
+            
+        
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ r[0], g[0], b[0] };
+                colors1[i] = (rgb_color){ r[1], g[1], b[1] };
+                colors2[i] = (rgb_color){ r[2], g[2], b[2] };
+                colors3[i] = (rgb_color){ r[3], g[3], b[3] };
+                colors4[i] = (rgb_color){ r[4], g[4], b[4] };
+                colors5[i] = (rgb_color){ r[5], g[5], b[5] };
+                colors6[i] = (rgb_color){ r[6], g[6], b[6] };
+                colors7[i] = (rgb_color){ r[7], g[7], b[7] };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+            
+        }
+        
+        else
+        {
+            
+            for(int i=0; i<16; i++)
+            {
+                colors0[i] = (rgb_color){ R, G, B };
+                colors1[i] = (rgb_color){ R, G, B };
+                colors2[i] = (rgb_color){ R, G, B };
+                colors3[i] = (rgb_color){ R, G, B };
+                colors4[i] = (rgb_color){ R, G, B };
+                colors5[i] = (rgb_color){ R, G, B };
+                colors6[i] = (rgb_color){ R, G, B };
+                colors7[i] = (rgb_color){ R, G, B };
+            }
+            
+            
+            led0.write(colors0, LED_COUNT);
+            led1.write(colors1, LED_COUNT);
+            led2.write(colors2, LED_COUNT);
+            led3.write(colors3, LED_COUNT);
+            led4.write(colors4, LED_COUNT);
+            led5.write(colors5, LED_COUNT);
+            led6.write(colors6, LED_COUNT);
+            led7.write(colors7, LED_COUNT);
+        }
+    
+}
+
+
+void ModeSelect(int mode)
+{
+    
+    switch(mode)
+    {
+        
+        case 0 :
+        
+        led.detach();
+
+        
+        break;
+        
+        case 1 :
+        led.detach();
+        
+        R = 119;
+        G = 66;
+        B = 255;
+        
+        led.attach(&LedOn1, 0.05);
+        
+        break;
+        
+        case 2 :
+
+        led.detach();
+        
+        R = 119;
+        G = 66;
+        B = 255;
+        
+        led.attach(&LedOn2, 0.05);
+        break;
+        
+        case 3 :
+    
+        led.detach();
+        
+        R = 119;
+        G = 66;
+        B = 255;
+        
+        led.attach(&LedOn3, 0.05);
+        
+        break;
+        
+        case 4 :
+    
+        led.detach();
+        
+        R = 119;
+        G = 66;
+        B = 255;
+        
+        led.attach(&MoonPhase, 0.05);
+        
+        break;
+        
+    }
+    
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RgbControl.h	Sat May 04 18:51:43 2019 +0000
@@ -0,0 +1,5 @@
+void LedOn1();
+void LedOn2();
+void LedOn3();
+void MoonPhase();
+void ModeSelect(int mode);
\ No newline at end of file
--- a/main.cpp	Wed Nov 01 23:15:43 2017 +0000
+++ b/main.cpp	Sat May 04 18:51:43 2019 +0000
@@ -1,48 +1,154 @@
 #include "mbed.h"
 #include "PololuLedStrip.h"
+#include "QEI.h"
+#include "MotorControl.h"
+#include "RgbControl.h"
 
-PololuLedStrip ledStrip(D8);
+//Serial              bt(USBTX,USBRX);
+
+Serial          bt(D1,D0);
+
+InterruptIn         LeftReset(PF_0);
+InterruptIn         RightReset(PB_4);
+
+QEI                 re(PA_5,PA_7,NC,220);
 
-#define LED_COUNT 60
-rgb_color colors[LED_COUNT];
+Ticker              timer1; //control Position
+Timeout             ResetTimer;
+
 
-Timer timer;
+int                 targetDis;
+char                rxData[7];
+bool                flagRx = 0;
+int                 dayLed;
 
-// Converts a color from the HSV representation to RGB.
-rgb_color hsvToRgb(float h, float s, float v)
+int R;
+int G;
+int B;
+
+void ReadData()
 {
-    int i = floor(h * 6);
-    float f = h * 6 - i;
-    float p = v * (1 - s);
-    float q = v * (1 - f * s);
-    float t = v * (1 - (1 - f) * s);
-    float r = 0, g = 0, b = 0;
-    switch(i % 6){
-        case 0: r = v; g = t; b = p; break;
-        case 1: r = q; g = v; b = p; break;
-        case 2: r = p; g = v; b = t; break;
-        case 3: r = p; g = q; b = v; break;
-        case 4: r = t; g = p; b = v; break;
-        case 5: r = v; g = p; b = q; break;
-    }
-    return (rgb_color){r * 255, g * 255, b * 255};
+    char inChar;
+    static char rxCount = 0;
+    static char rxBuf[7];
+    
+    while(1 == bt.readable())
+    {
+        
+        inChar = bt.getc();
+     
+        if('<' == inChar)
+        {
+            rxCount = 1;
+        }
+        
+        else if (rxCount > 0 && rxCount <8)
+        {
+            rxBuf[rxCount-1] = inChar;
+            rxCount++;            
+        }
+        
+        else if ( 8 == rxCount && '>' == inChar)
+        {
+            rxCount = 0;
+            flagRx = 1;
+            memcpy(rxData, rxBuf, 7);
+            
+        }
+    }  
+}
+
+
+void Reset_L()
+{   
+    MotorTest(0);
+    re.reset();
+}
+
+void Reset_R()
+{   
+    MotorTest(0);
+}
+
+void Stop()
+{
+    MotorTest(0);
 }
 
 int main()
 {
-    timer.start();
+    
+        bt.baud(115200);
+        bt.puts("START\n");
+                MotorTest(2);
+        ResetTimer.attach(&Stop,15);
+        
 
-    while(1)
-    {
-        // Update the colors array.
-        uint32_t time = timer.read_ms();       
-        for(int i = 0; i < LED_COUNT; i++)
+        LeftReset.rise(&Reset_L);
+        RightReset.rise(&Reset_R);
+        
+        char tmpCommand[4] = {0,};                     // [ADD] command
+        int rxVal = 0;
+        
+        int modeMotor = 0;
+        int modeNum = 0;
+        bt.attach(&ReadData, Serial::RxIrq);
+
+        while(1)
         {
-            uint8_t phase = (time >> 4) - (i << 2);
-            colors[i] = hsvToRgb(phase / 256.0, 1.0, 1.0);
+            
+            if (1 == flagRx)
+            {
+                flagRx = 0;
+                tmpCommand[0] = rxData[0];
+                tmpCommand[1] = rxData[1];
+                tmpCommand[2] = rxData[2];
+                rxVal = atoi(rxData+3);
+                
+                if (0 == strcmp(tmpCommand,"MOT"))
+                {               
+                    bt.putc(tmpCommand[0]);
+                    modeMotor = rxVal;
+                    MotorTest(modeMotor);              
+                                    
+                }
+                
+                else if (0 == strcmp(tmpCommand,"POS"))
+                {
+                    bt.putc(tmpCommand[0]);     
+                    targetDis = rxVal;
+                    timer1.attach(&ControlPos,0.1);
+                }
+                
+                else if (0 == strcmp(tmpCommand,"MOD"))
+                {  
+                    bt.putc(tmpCommand[0]);     
+                    modeNum = rxVal;
+                    ModeSelect(modeNum);
+                    
+                }
+                
+                else if (0 == strcmp(tmpCommand,"DAY"))
+                {   
+                    ModeSelect(4);
+                    bt.putc(tmpCommand[0]);     
+                    targetDis = atoi(rxData+5);                                     // [ADD] return 2 characters in the back of 4 characters
+                    dayLed = 0.01*(atoi(rxData+3)-atoi(rxData+5));                 // [ADD] return 2 cahracters in the front of 4 characters
+                    timer1.attach(&ControlPos,0.1);            
+                }                
+                
+           }
+            
+//            int pulse = re.getPulses();  
+//            int d = pulse/220;
+//            int e = LeftReset.read();
+//            bt.printf("%d %d \n",d,e);
+
+            wait(0.1);
+
+                    
         }
-    
-        // Send the colors to the LED strip.
-        ledStrip.write(colors, LED_COUNT);
-    }
-}
+
+
+
+}
\ No newline at end of file
--- a/mbed.bld	Wed Nov 01 23:15:43 2017 +0000
+++ b/mbed.bld	Sat May 04 18:51:43 2019 +0000
@@ -1,1 +1,1 @@
-https://os.mbed.com/users/mbed_official/code/mbed/builds/fb8e0ae1cceb
\ No newline at end of file
+https://os.mbed.com/users/mbed_official/code/mbed/builds/3a7713b1edbc
\ No newline at end of file