RGB LEDs Control

Dependencies:   mbed QEI PololuLedStrip

Committer:
whutsup
Date:
Sat May 04 18:51:43 2019 +0000
Revision:
8:2a4298cbae3f
Parent:
6:0882f93da02f
Lune RGB LEDs control;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DavidEGrayson 0:a3a9c486fc68 1 #include "mbed.h"
DavidEGrayson 0:a3a9c486fc68 2 #include "PololuLedStrip.h"
whutsup 8:2a4298cbae3f 3 #include "QEI.h"
whutsup 8:2a4298cbae3f 4 #include "MotorControl.h"
whutsup 8:2a4298cbae3f 5 #include "RgbControl.h"
DavidEGrayson 0:a3a9c486fc68 6
whutsup 8:2a4298cbae3f 7 //Serial bt(USBTX,USBRX);
whutsup 8:2a4298cbae3f 8
whutsup 8:2a4298cbae3f 9 Serial bt(D1,D0);
whutsup 8:2a4298cbae3f 10
whutsup 8:2a4298cbae3f 11 InterruptIn LeftReset(PF_0);
whutsup 8:2a4298cbae3f 12 InterruptIn RightReset(PB_4);
whutsup 8:2a4298cbae3f 13
whutsup 8:2a4298cbae3f 14 QEI re(PA_5,PA_7,NC,220);
DavidEGrayson 0:a3a9c486fc68 15
whutsup 8:2a4298cbae3f 16 Ticker timer1; //control Position
whutsup 8:2a4298cbae3f 17 Timeout ResetTimer;
whutsup 8:2a4298cbae3f 18
DavidEGrayson 0:a3a9c486fc68 19
whutsup 8:2a4298cbae3f 20 int targetDis;
whutsup 8:2a4298cbae3f 21 char rxData[7];
whutsup 8:2a4298cbae3f 22 bool flagRx = 0;
whutsup 8:2a4298cbae3f 23 int dayLed;
DavidEGrayson 0:a3a9c486fc68 24
whutsup 8:2a4298cbae3f 25 int R;
whutsup 8:2a4298cbae3f 26 int G;
whutsup 8:2a4298cbae3f 27 int B;
whutsup 8:2a4298cbae3f 28
whutsup 8:2a4298cbae3f 29 void ReadData()
DavidEGrayson 0:a3a9c486fc68 30 {
whutsup 8:2a4298cbae3f 31 char inChar;
whutsup 8:2a4298cbae3f 32 static char rxCount = 0;
whutsup 8:2a4298cbae3f 33 static char rxBuf[7];
whutsup 8:2a4298cbae3f 34
whutsup 8:2a4298cbae3f 35 while(1 == bt.readable())
whutsup 8:2a4298cbae3f 36 {
whutsup 8:2a4298cbae3f 37
whutsup 8:2a4298cbae3f 38 inChar = bt.getc();
whutsup 8:2a4298cbae3f 39
whutsup 8:2a4298cbae3f 40 if('<' == inChar)
whutsup 8:2a4298cbae3f 41 {
whutsup 8:2a4298cbae3f 42 rxCount = 1;
whutsup 8:2a4298cbae3f 43 }
whutsup 8:2a4298cbae3f 44
whutsup 8:2a4298cbae3f 45 else if (rxCount > 0 && rxCount <8)
whutsup 8:2a4298cbae3f 46 {
whutsup 8:2a4298cbae3f 47 rxBuf[rxCount-1] = inChar;
whutsup 8:2a4298cbae3f 48 rxCount++;
whutsup 8:2a4298cbae3f 49 }
whutsup 8:2a4298cbae3f 50
whutsup 8:2a4298cbae3f 51 else if ( 8 == rxCount && '>' == inChar)
whutsup 8:2a4298cbae3f 52 {
whutsup 8:2a4298cbae3f 53 rxCount = 0;
whutsup 8:2a4298cbae3f 54 flagRx = 1;
whutsup 8:2a4298cbae3f 55 memcpy(rxData, rxBuf, 7);
whutsup 8:2a4298cbae3f 56
whutsup 8:2a4298cbae3f 57 }
whutsup 8:2a4298cbae3f 58 }
whutsup 8:2a4298cbae3f 59 }
whutsup 8:2a4298cbae3f 60
whutsup 8:2a4298cbae3f 61
whutsup 8:2a4298cbae3f 62 void Reset_L()
whutsup 8:2a4298cbae3f 63 {
whutsup 8:2a4298cbae3f 64 MotorTest(0);
whutsup 8:2a4298cbae3f 65 re.reset();
whutsup 8:2a4298cbae3f 66 }
whutsup 8:2a4298cbae3f 67
whutsup 8:2a4298cbae3f 68 void Reset_R()
whutsup 8:2a4298cbae3f 69 {
whutsup 8:2a4298cbae3f 70 MotorTest(0);
whutsup 8:2a4298cbae3f 71 }
whutsup 8:2a4298cbae3f 72
whutsup 8:2a4298cbae3f 73 void Stop()
whutsup 8:2a4298cbae3f 74 {
whutsup 8:2a4298cbae3f 75 MotorTest(0);
DavidEGrayson 0:a3a9c486fc68 76 }
DavidEGrayson 0:a3a9c486fc68 77
DavidEGrayson 0:a3a9c486fc68 78 int main()
DavidEGrayson 0:a3a9c486fc68 79 {
whutsup 8:2a4298cbae3f 80
whutsup 8:2a4298cbae3f 81 bt.baud(115200);
whutsup 8:2a4298cbae3f 82 bt.puts("START\n");
whutsup 8:2a4298cbae3f 83 MotorTest(2);
whutsup 8:2a4298cbae3f 84 ResetTimer.attach(&Stop,15);
whutsup 8:2a4298cbae3f 85
DavidEGrayson 0:a3a9c486fc68 86
whutsup 8:2a4298cbae3f 87 LeftReset.rise(&Reset_L);
whutsup 8:2a4298cbae3f 88 RightReset.rise(&Reset_R);
whutsup 8:2a4298cbae3f 89
whutsup 8:2a4298cbae3f 90 char tmpCommand[4] = {0,}; // [ADD] command
whutsup 8:2a4298cbae3f 91 int rxVal = 0;
whutsup 8:2a4298cbae3f 92
whutsup 8:2a4298cbae3f 93 int modeMotor = 0;
whutsup 8:2a4298cbae3f 94 int modeNum = 0;
whutsup 8:2a4298cbae3f 95 bt.attach(&ReadData, Serial::RxIrq);
whutsup 8:2a4298cbae3f 96
whutsup 8:2a4298cbae3f 97 while(1)
DavidEGrayson 0:a3a9c486fc68 98 {
whutsup 8:2a4298cbae3f 99
whutsup 8:2a4298cbae3f 100 if (1 == flagRx)
whutsup 8:2a4298cbae3f 101 {
whutsup 8:2a4298cbae3f 102 flagRx = 0;
whutsup 8:2a4298cbae3f 103 tmpCommand[0] = rxData[0];
whutsup 8:2a4298cbae3f 104 tmpCommand[1] = rxData[1];
whutsup 8:2a4298cbae3f 105 tmpCommand[2] = rxData[2];
whutsup 8:2a4298cbae3f 106 rxVal = atoi(rxData+3);
whutsup 8:2a4298cbae3f 107
whutsup 8:2a4298cbae3f 108 if (0 == strcmp(tmpCommand,"MOT"))
whutsup 8:2a4298cbae3f 109 {
whutsup 8:2a4298cbae3f 110 bt.putc(tmpCommand[0]);
whutsup 8:2a4298cbae3f 111 modeMotor = rxVal;
whutsup 8:2a4298cbae3f 112 MotorTest(modeMotor);
whutsup 8:2a4298cbae3f 113
whutsup 8:2a4298cbae3f 114 }
whutsup 8:2a4298cbae3f 115
whutsup 8:2a4298cbae3f 116 else if (0 == strcmp(tmpCommand,"POS"))
whutsup 8:2a4298cbae3f 117 {
whutsup 8:2a4298cbae3f 118 bt.putc(tmpCommand[0]);
whutsup 8:2a4298cbae3f 119 targetDis = rxVal;
whutsup 8:2a4298cbae3f 120 timer1.attach(&ControlPos,0.1);
whutsup 8:2a4298cbae3f 121 }
whutsup 8:2a4298cbae3f 122
whutsup 8:2a4298cbae3f 123 else if (0 == strcmp(tmpCommand,"MOD"))
whutsup 8:2a4298cbae3f 124 {
whutsup 8:2a4298cbae3f 125 bt.putc(tmpCommand[0]);
whutsup 8:2a4298cbae3f 126 modeNum = rxVal;
whutsup 8:2a4298cbae3f 127 ModeSelect(modeNum);
whutsup 8:2a4298cbae3f 128
whutsup 8:2a4298cbae3f 129 }
whutsup 8:2a4298cbae3f 130
whutsup 8:2a4298cbae3f 131 else if (0 == strcmp(tmpCommand,"DAY"))
whutsup 8:2a4298cbae3f 132 {
whutsup 8:2a4298cbae3f 133 ModeSelect(4);
whutsup 8:2a4298cbae3f 134 bt.putc(tmpCommand[0]);
whutsup 8:2a4298cbae3f 135 targetDis = atoi(rxData+5); // [ADD] return 2 characters in the back of 4 characters
whutsup 8:2a4298cbae3f 136 dayLed = 0.01*(atoi(rxData+3)-atoi(rxData+5)); // [ADD] return 2 cahracters in the front of 4 characters
whutsup 8:2a4298cbae3f 137 timer1.attach(&ControlPos,0.1);
whutsup 8:2a4298cbae3f 138 }
whutsup 8:2a4298cbae3f 139
whutsup 8:2a4298cbae3f 140 }
whutsup 8:2a4298cbae3f 141
whutsup 8:2a4298cbae3f 142 // int pulse = re.getPulses();
whutsup 8:2a4298cbae3f 143 // int d = pulse/220;
whutsup 8:2a4298cbae3f 144 // int e = LeftReset.read();
whutsup 8:2a4298cbae3f 145 // bt.printf("%d %d \n",d,e);
whutsup 8:2a4298cbae3f 146
whutsup 8:2a4298cbae3f 147 wait(0.1);
whutsup 8:2a4298cbae3f 148
whutsup 8:2a4298cbae3f 149
DavidEGrayson 0:a3a9c486fc68 150 }
whutsup 8:2a4298cbae3f 151
whutsup 8:2a4298cbae3f 152
whutsup 8:2a4298cbae3f 153
whutsup 8:2a4298cbae3f 154 }