Timothy Li / Mbed 2 deprecated MIDI-Controller-4180FinalProject

Dependencies:   mbed 4DGL-uLCD-SE

Committer:
EvolutionOfWar
Date:
Mon Dec 12 15:41:57 2016 +0000
Revision:
8:579362817eae
Parent:
7:9e6a031395da
Child:
9:0bd225d33c46
Version 1.8, uLCD and LEDs updated Loop buttons to 3 stages (Record, Play, Stop)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
EvolutionOfWar 0:f2dd277fdbf1 1 #include "mbed.h"
EvolutionOfWar 6:44ee675f46e8 2 #include "uLCD_4DGL.h"
EvolutionOfWar 0:f2dd277fdbf1 3
EvolutionOfWar 7:9e6a031395da 4 #define ORANGE 0xFFA500
EvolutionOfWar 7:9e6a031395da 5
EvolutionOfWar 7:9e6a031395da 6
EvolutionOfWar 6:44ee675f46e8 7 uLCD_4DGL uLCD(p28, p27, p30);
EvolutionOfWar 0:f2dd277fdbf1 8 DigitalIn pb1(p8); // Bottom Row
EvolutionOfWar 0:f2dd277fdbf1 9 DigitalIn pb2(p9);
EvolutionOfWar 0:f2dd277fdbf1 10 DigitalIn pb3(p10);
EvolutionOfWar 0:f2dd277fdbf1 11 DigitalIn pb4(p11);
EvolutionOfWar 0:f2dd277fdbf1 12 DigitalIn pb5(p12); // Middle Row
EvolutionOfWar 0:f2dd277fdbf1 13 DigitalIn pb6(p13);
EvolutionOfWar 0:f2dd277fdbf1 14 DigitalIn pb7(p14);
EvolutionOfWar 0:f2dd277fdbf1 15 DigitalIn pb8(p15);
EvolutionOfWar 0:f2dd277fdbf1 16 DigitalIn pb9(p16); // Loop Controls
EvolutionOfWar 0:f2dd277fdbf1 17 DigitalIn pb10(p17);
EvolutionOfWar 1:8d0795150ea6 18 DigitalIn pb11(p18); // Layering
EvolutionOfWar 7:9e6a031395da 19 //loop control rgb leds
EvolutionOfWar 0:f2dd277fdbf1 20 PwmOut LED_r1(p26);
EvolutionOfWar 0:f2dd277fdbf1 21 PwmOut LED_g1(p25);
EvolutionOfWar 0:f2dd277fdbf1 22 PwmOut LED_b1(p24);
EvolutionOfWar 0:f2dd277fdbf1 23
EvolutionOfWar 0:f2dd277fdbf1 24 PwmOut LED_r2(p23);
EvolutionOfWar 0:f2dd277fdbf1 25 PwmOut LED_g2(p22);
EvolutionOfWar 0:f2dd277fdbf1 26 PwmOut LED_b2(p21);
EvolutionOfWar 7:9e6a031395da 27 //layer control rgb led
EvolutionOfWar 1:8d0795150ea6 28 DigitalOut LED_r3(p5);
EvolutionOfWar 1:8d0795150ea6 29 DigitalOut LED_g3(p6);
EvolutionOfWar 1:8d0795150ea6 30 DigitalOut LED_b3(p7);
EvolutionOfWar 1:8d0795150ea6 31
EvolutionOfWar 0:f2dd277fdbf1 32 Serial pc(USBTX, USBRX); // PC Serial port, use pc.
EvolutionOfWar 0:f2dd277fdbf1 33
EvolutionOfWar 7:9e6a031395da 34 //coordinates for drawing on lcd
EvolutionOfWar 7:9e6a031395da 35 //bottom half is 63-127
EvolutionOfWar 7:9e6a031395da 36 // 4 columns at 127/5 --> 25, 50, 75, 100
EvolutionOfWar 7:9e6a031395da 37 // 2 rows at 64/3 --> 63 + 21, 63 + 42
EvolutionOfWar 7:9e6a031395da 38 int row1_y = 127 - 21;
EvolutionOfWar 7:9e6a031395da 39 int row2_y = 127 - (21*2);
EvolutionOfWar 7:9e6a031395da 40 int col1_x = 25;
EvolutionOfWar 7:9e6a031395da 41 int col2_x = 50;
EvolutionOfWar 7:9e6a031395da 42 int col3_x = 75;
EvolutionOfWar 7:9e6a031395da 43 int col4_x = 100;
EvolutionOfWar 7:9e6a031395da 44 //run this when layer changes or loop turns on
EvolutionOfWar 8:579362817eae 45 void displayLCD(int layer, int l1, int l2){
EvolutionOfWar 7:9e6a031395da 46 //uLCD portion
EvolutionOfWar 7:9e6a031395da 47 //16 lines with 18 characters per line
EvolutionOfWar 7:9e6a031395da 48 uLCD.cls();
EvolutionOfWar 7:9e6a031395da 49 uLCD.locate(6,0);
EvolutionOfWar 7:9e6a031395da 50 uLCD.printf("Layer\n");
EvolutionOfWar 7:9e6a031395da 51 //current Layer
EvolutionOfWar 7:9e6a031395da 52 if (layer%3 == 0){
EvolutionOfWar 7:9e6a031395da 53 uLCD.locate(3,1);
EvolutionOfWar 7:9e6a031395da 54 uLCD.color(BLUE);
EvolutionOfWar 7:9e6a031395da 55 uLCD.printf("1\n");
EvolutionOfWar 7:9e6a031395da 56 }
EvolutionOfWar 7:9e6a031395da 57 else if (layer%3 == 1){
EvolutionOfWar 7:9e6a031395da 58 uLCD.locate(8,1);
EvolutionOfWar 7:9e6a031395da 59 uLCD.color(RED);
EvolutionOfWar 7:9e6a031395da 60 uLCD.printf("2\n");
EvolutionOfWar 7:9e6a031395da 61 }
EvolutionOfWar 7:9e6a031395da 62 else{
EvolutionOfWar 7:9e6a031395da 63 uLCD.locate(13,1);
EvolutionOfWar 7:9e6a031395da 64 uLCD.color(GREEN);
EvolutionOfWar 7:9e6a031395da 65 uLCD.printf("3\n");
EvolutionOfWar 7:9e6a031395da 66 }
EvolutionOfWar 7:9e6a031395da 67 uLCD.color(GREEN);
EvolutionOfWar 7:9e6a031395da 68 uLCD.locate(0,3);
EvolutionOfWar 7:9e6a031395da 69 //loop control circle --> filled = true, unfilled = false
EvolutionOfWar 7:9e6a031395da 70 uLCD.printf("Loop 1 Loop 2\n");
EvolutionOfWar 8:579362817eae 71 if (l1%3 == 1) uLCD.filled_circle(24,44,4, ORANGE);
EvolutionOfWar 8:579362817eae 72 else if (!l1%3 == 2) uLCD.filled_circle(24,44,4, GREEN);
EvolutionOfWar 8:579362817eae 73 else if (!l1%3 == 0) uLCD.circle(24,44,4, ORANGE);
EvolutionOfWar 8:579362817eae 74 if (l2%3 == 1) uLCD.filled_circle(104,44,4,ORANGE);
EvolutionOfWar 8:579362817eae 75 else if (!l1%3 == 2) uLCD.filled_circle(104,44,4, GREEN);
EvolutionOfWar 8:579362817eae 76 else if (!l2%3 == 0) uLCD.circle(104,44,4,ORANGE);
EvolutionOfWar 7:9e6a031395da 77 //draw pushbuttons
EvolutionOfWar 7:9e6a031395da 78 uLCD.circle(col1_x, row1_y, 4, RED); //pb 1
EvolutionOfWar 7:9e6a031395da 79 uLCD.circle(col2_x, row1_y, 4, RED); //pb 2
EvolutionOfWar 7:9e6a031395da 80 uLCD.circle(col3_x, row1_y, 4, RED); //pb 3
EvolutionOfWar 7:9e6a031395da 81 uLCD.circle(col4_x, row1_y, 4, RED); //pb 4
EvolutionOfWar 7:9e6a031395da 82 uLCD.circle(col1_x, row2_y, 4, RED); //pb 5
EvolutionOfWar 7:9e6a031395da 83 uLCD.circle(col2_x, row2_y, 4, RED); //pb 6
EvolutionOfWar 7:9e6a031395da 84 uLCD.circle(col3_x, row2_y, 4, RED); //pb 7
EvolutionOfWar 7:9e6a031395da 85 uLCD.circle(col4_x, row2_y, 4, RED); //pb 8
EvolutionOfWar 7:9e6a031395da 86 }
EvolutionOfWar 0:f2dd277fdbf1 87 int main() {
EvolutionOfWar 7:9e6a031395da 88
EvolutionOfWar 7:9e6a031395da 89 //internal pull ups for the pushbuttons
EvolutionOfWar 0:f2dd277fdbf1 90 pb1.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 91 pb2.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 92 pb3.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 93 pb4.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 94 pb5.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 95 pb6.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 96 pb7.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 97 pb8.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 98 pb9.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 99 pb10.mode(PullUp);
EvolutionOfWar 1:8d0795150ea6 100 pb11.mode(PullUp);
EvolutionOfWar 0:f2dd277fdbf1 101
EvolutionOfWar 0:f2dd277fdbf1 102
EvolutionOfWar 0:f2dd277fdbf1 103
EvolutionOfWar 1:8d0795150ea6 104 int count = 0; // Layer Count
EvolutionOfWar 2:3744fe2f24d5 105 int pb1o;
EvolutionOfWar 2:3744fe2f24d5 106 int pb2o;
EvolutionOfWar 2:3744fe2f24d5 107 int pb3o;
EvolutionOfWar 2:3744fe2f24d5 108 int pb4o;
EvolutionOfWar 2:3744fe2f24d5 109 int pb5o;
EvolutionOfWar 2:3744fe2f24d5 110 int pb6o;
EvolutionOfWar 2:3744fe2f24d5 111 int pb7o;
EvolutionOfWar 2:3744fe2f24d5 112 int pb8o;
EvolutionOfWar 2:3744fe2f24d5 113 int pb9o;
EvolutionOfWar 2:3744fe2f24d5 114 int pb10o;
EvolutionOfWar 2:3744fe2f24d5 115 int pb11o;
EvolutionOfWar 8:579362817eae 116 int loop1 = 0;
EvolutionOfWar 8:579362817eae 117 int loop2 = 0;
EvolutionOfWar 8:579362817eae 118
EvolutionOfWar 7:9e6a031395da 119
EvolutionOfWar 7:9e6a031395da 120 //initialize the layer rgbled
EvolutionOfWar 7:9e6a031395da 121 LED_r3 = 0;
EvolutionOfWar 7:9e6a031395da 122 LED_g3 = 0;
EvolutionOfWar 7:9e6a031395da 123 LED_b3 = 1;
EvolutionOfWar 7:9e6a031395da 124 uLCD.baudrate(300000);
EvolutionOfWar 7:9e6a031395da 125 displayLCD(count,loop1,loop2);
EvolutionOfWar 7:9e6a031395da 126
EvolutionOfWar 0:f2dd277fdbf1 127 while(1)
EvolutionOfWar 0:f2dd277fdbf1 128 {
EvolutionOfWar 7:9e6a031395da 129
EvolutionOfWar 0:f2dd277fdbf1 130
EvolutionOfWar 0:f2dd277fdbf1 131 pb1o = pb1; // Stores previous pushbutton value (defaults to 1 when not pressed)
EvolutionOfWar 0:f2dd277fdbf1 132 pb2o = pb2;
EvolutionOfWar 0:f2dd277fdbf1 133 pb3o = pb3;
EvolutionOfWar 0:f2dd277fdbf1 134 pb4o = pb4;
EvolutionOfWar 0:f2dd277fdbf1 135 pb5o = pb5;
EvolutionOfWar 0:f2dd277fdbf1 136 pb6o = pb6;
EvolutionOfWar 0:f2dd277fdbf1 137 pb7o = pb7;
EvolutionOfWar 0:f2dd277fdbf1 138 pb8o = pb8;
EvolutionOfWar 0:f2dd277fdbf1 139 pb9o = pb9;
EvolutionOfWar 0:f2dd277fdbf1 140 pb10o = pb10;
EvolutionOfWar 1:8d0795150ea6 141 pb11o = pb11;
EvolutionOfWar 0:f2dd277fdbf1 142
EvolutionOfWar 7:9e6a031395da 143 wait(0.01);
EvolutionOfWar 7:9e6a031395da 144 //draw filled circle at pushbutton spot on lcd when pressed, otherwise it's filled black
EvolutionOfWar 7:9e6a031395da 145 if (pb1 ==0)uLCD.filled_circle(col1_x, row1_y, 4, RED); //pb 1
EvolutionOfWar 7:9e6a031395da 146 else uLCD.filled_circle(col1_x,row1_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 147
EvolutionOfWar 7:9e6a031395da 148 if (pb2 ==0)uLCD.filled_circle(col2_x, row1_y, 4, RED); //pb 2
EvolutionOfWar 7:9e6a031395da 149 else uLCD.filled_circle(col2_x,row1_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 150
EvolutionOfWar 7:9e6a031395da 151 if (pb3 ==0)uLCD.filled_circle(col3_x, row1_y, 4, RED); //pb 3
EvolutionOfWar 7:9e6a031395da 152 else uLCD.filled_circle(col3_x,row1_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 153
EvolutionOfWar 7:9e6a031395da 154 if (pb4 ==0)uLCD.filled_circle(col4_x, row1_y, 4, RED); //pb 4
EvolutionOfWar 7:9e6a031395da 155 else uLCD.filled_circle(col4_x,row1_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 156
EvolutionOfWar 7:9e6a031395da 157 if (pb5 ==0)uLCD.filled_circle(col1_x, row2_y, 4, RED); //pb 5
EvolutionOfWar 7:9e6a031395da 158 else uLCD.filled_circle(col1_x,row2_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 159
EvolutionOfWar 7:9e6a031395da 160 if (pb6 ==0)uLCD.filled_circle(col2_x, row2_y, 4, RED); //pb 6
EvolutionOfWar 7:9e6a031395da 161 else uLCD.filled_circle(col2_x,row2_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 162
EvolutionOfWar 7:9e6a031395da 163 if (pb7 ==0)uLCD.filled_circle(col3_x, row2_y, 4, RED); //pb 7
EvolutionOfWar 7:9e6a031395da 164 else uLCD.filled_circle(col3_x,row2_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 165
EvolutionOfWar 7:9e6a031395da 166 if (pb8 ==0)uLCD.filled_circle(col4_x, row2_y, 4, RED); //pb 8
EvolutionOfWar 7:9e6a031395da 167 else uLCD.filled_circle(col4_x,row2_y,3,BLACK);
EvolutionOfWar 7:9e6a031395da 168
EvolutionOfWar 7:9e6a031395da 169 // Pushbuttons - when pressed, send string to serial port
EvolutionOfWar 0:f2dd277fdbf1 170 if(pb1 == 0 && pb1o != pb1)
EvolutionOfWar 0:f2dd277fdbf1 171 {
EvolutionOfWar 7:9e6a031395da 172 pc.printf("1\n");
EvolutionOfWar 0:f2dd277fdbf1 173 }
EvolutionOfWar 0:f2dd277fdbf1 174 if(pb2 == 0 && pb2o != pb2)
EvolutionOfWar 0:f2dd277fdbf1 175 {
EvolutionOfWar 7:9e6a031395da 176 pc.printf("2\n");
EvolutionOfWar 0:f2dd277fdbf1 177 }
EvolutionOfWar 0:f2dd277fdbf1 178 if(pb3 == 0 && pb3o != pb3)
EvolutionOfWar 0:f2dd277fdbf1 179 {
EvolutionOfWar 3:7f781cd41a23 180 pc.printf("3\n");
EvolutionOfWar 0:f2dd277fdbf1 181 }
EvolutionOfWar 0:f2dd277fdbf1 182 if(pb4 == 0 && pb4o != pb4)
EvolutionOfWar 0:f2dd277fdbf1 183 {
EvolutionOfWar 3:7f781cd41a23 184 pc.printf("4\n");
EvolutionOfWar 0:f2dd277fdbf1 185 }
EvolutionOfWar 0:f2dd277fdbf1 186 if(pb5 == 0 && pb5o != pb5)
EvolutionOfWar 0:f2dd277fdbf1 187 {
EvolutionOfWar 3:7f781cd41a23 188 pc.printf("5\n");
EvolutionOfWar 0:f2dd277fdbf1 189 }
EvolutionOfWar 0:f2dd277fdbf1 190 if(pb6 == 0 && pb6o != pb6)
EvolutionOfWar 0:f2dd277fdbf1 191 {
EvolutionOfWar 3:7f781cd41a23 192 pc.printf("6\n");
EvolutionOfWar 0:f2dd277fdbf1 193 }
EvolutionOfWar 0:f2dd277fdbf1 194 if(pb7 == 0 && pb7o != pb7)
EvolutionOfWar 0:f2dd277fdbf1 195 {
EvolutionOfWar 3:7f781cd41a23 196 pc.printf("7\n");
EvolutionOfWar 0:f2dd277fdbf1 197 }
EvolutionOfWar 0:f2dd277fdbf1 198 if(pb8 == 0 && pb8o != pb8)
EvolutionOfWar 0:f2dd277fdbf1 199 {
EvolutionOfWar 3:7f781cd41a23 200 pc.printf("8\n");
EvolutionOfWar 0:f2dd277fdbf1 201 }
EvolutionOfWar 0:f2dd277fdbf1 202 if(pb9 == 0 && pb9o != pb9)
EvolutionOfWar 0:f2dd277fdbf1 203 {
EvolutionOfWar 3:7f781cd41a23 204 pc.printf("9\n");
EvolutionOfWar 8:579362817eae 205 loop1++;
EvolutionOfWar 8:579362817eae 206 if(loop1%3 == 1)
EvolutionOfWar 5:fdc99c07136a 207 {
EvolutionOfWar 5:fdc99c07136a 208 LED_r1.period(0.0005);
EvolutionOfWar 5:fdc99c07136a 209 LED_g1.period(0.0005);
EvolutionOfWar 5:fdc99c07136a 210 LED_b1.period(0.0005);
EvolutionOfWar 0:f2dd277fdbf1 211
EvolutionOfWar 8:579362817eae 212 LED_r1 = 1;
EvolutionOfWar 8:579362817eae 213 LED_g1 = 0.6;
EvolutionOfWar 8:579362817eae 214 LED_b1 = 0;
EvolutionOfWar 5:fdc99c07136a 215
EvolutionOfWar 5:fdc99c07136a 216 }
EvolutionOfWar 8:579362817eae 217 else if(loop1%3 == 2)
EvolutionOfWar 5:fdc99c07136a 218 {
EvolutionOfWar 8:579362817eae 219 LED_r1 = 0;
EvolutionOfWar 8:579362817eae 220 LED_g1 = 1;
EvolutionOfWar 8:579362817eae 221 LED_b1 = 0;
EvolutionOfWar 8:579362817eae 222 }
EvolutionOfWar 8:579362817eae 223 else if(loop1%3 == 0)
EvolutionOfWar 8:579362817eae 224 {
EvolutionOfWar 5:fdc99c07136a 225 LED_r1 = 0;
EvolutionOfWar 5:fdc99c07136a 226 LED_g1 = 0;
EvolutionOfWar 5:fdc99c07136a 227 LED_b1 = 0;
EvolutionOfWar 7:9e6a031395da 228 }
EvolutionOfWar 7:9e6a031395da 229 displayLCD(count,loop1,loop2);
EvolutionOfWar 0:f2dd277fdbf1 230 }
EvolutionOfWar 0:f2dd277fdbf1 231 if(pb10 == 0 && pb10o != pb10)
EvolutionOfWar 0:f2dd277fdbf1 232 {
EvolutionOfWar 3:7f781cd41a23 233 pc.printf("10\n");
EvolutionOfWar 8:579362817eae 234 loop2++;
EvolutionOfWar 8:579362817eae 235 if(loop2%3 == 1)
EvolutionOfWar 5:fdc99c07136a 236 {
EvolutionOfWar 5:fdc99c07136a 237 LED_r2.period(0.0005);
EvolutionOfWar 5:fdc99c07136a 238 LED_g2.period(0.0005);
EvolutionOfWar 5:fdc99c07136a 239 LED_b2.period(0.0005);
EvolutionOfWar 0:f2dd277fdbf1 240
EvolutionOfWar 8:579362817eae 241 LED_r2 = 1;
EvolutionOfWar 8:579362817eae 242 LED_g2 = 0.6;
EvolutionOfWar 8:579362817eae 243 LED_b2 = 0;
EvolutionOfWar 5:fdc99c07136a 244 }
EvolutionOfWar 8:579362817eae 245 else if(loop2%3 == 2)
EvolutionOfWar 5:fdc99c07136a 246 {
EvolutionOfWar 8:579362817eae 247 LED_r2 = 0;
EvolutionOfWar 8:579362817eae 248 LED_g2 = 1;
EvolutionOfWar 8:579362817eae 249 LED_b2 = 0;
EvolutionOfWar 8:579362817eae 250 }
EvolutionOfWar 8:579362817eae 251 else if(loop2%3 == 0)
EvolutionOfWar 8:579362817eae 252 {
EvolutionOfWar 5:fdc99c07136a 253 LED_r2 = 0;
EvolutionOfWar 5:fdc99c07136a 254 LED_g2 = 0;
EvolutionOfWar 5:fdc99c07136a 255 LED_b2 = 0;
EvolutionOfWar 8:579362817eae 256 }
EvolutionOfWar 7:9e6a031395da 257 displayLCD(count,loop1,loop2);
EvolutionOfWar 0:f2dd277fdbf1 258 }
EvolutionOfWar 1:8d0795150ea6 259 if(pb11 == 0 && pb11o != pb11)
EvolutionOfWar 1:8d0795150ea6 260 {
EvolutionOfWar 3:7f781cd41a23 261 pc.printf("11\n");
EvolutionOfWar 1:8d0795150ea6 262 count++;
EvolutionOfWar 1:8d0795150ea6 263 if(count%3 == 1)
EvolutionOfWar 1:8d0795150ea6 264 {
EvolutionOfWar 1:8d0795150ea6 265 LED_r3 = 1;
EvolutionOfWar 1:8d0795150ea6 266 LED_g3 = 0;
EvolutionOfWar 1:8d0795150ea6 267 LED_b3 = 0;
EvolutionOfWar 1:8d0795150ea6 268 }
EvolutionOfWar 1:8d0795150ea6 269 else if(count%3 == 2)
EvolutionOfWar 1:8d0795150ea6 270 {
EvolutionOfWar 1:8d0795150ea6 271 LED_r3 = 0;
EvolutionOfWar 1:8d0795150ea6 272 LED_g3 = 1;
EvolutionOfWar 1:8d0795150ea6 273 LED_b3 = 0;
EvolutionOfWar 1:8d0795150ea6 274 }
EvolutionOfWar 1:8d0795150ea6 275 else if(count%3 == 0)
EvolutionOfWar 1:8d0795150ea6 276 {
EvolutionOfWar 1:8d0795150ea6 277 LED_r3 = 0;
EvolutionOfWar 1:8d0795150ea6 278 LED_g3 = 0;
EvolutionOfWar 1:8d0795150ea6 279 LED_b3 = 1;
EvolutionOfWar 1:8d0795150ea6 280 }
EvolutionOfWar 7:9e6a031395da 281 displayLCD(count,loop1,loop2);
EvolutionOfWar 1:8d0795150ea6 282 }
EvolutionOfWar 0:f2dd277fdbf1 283 }
EvolutionOfWar 0:f2dd277fdbf1 284 }