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 USBDevice PinDetect
Revision 14:262db57746d9, committed 2016-04-17
- Comitter:
- asuszek
- Date:
- Sun Apr 17 21:38:57 2016 +0000
- Parent:
- 13:bb0ec927e458
- Parent:
- 12:104e74166ac1
- Child:
- 15:aa5a4c350251
- Commit message:
- Merged with Nick
Changed in this revision
--- a/LEDController.cpp Sun Apr 17 21:35:23 2016 +0000
+++ b/LEDController.cpp Sun Apr 17 21:38:57 2016 +0000
@@ -18,14 +18,8 @@
DigitalOut myled4_3(p16);
void identifyKeyForLed(int key, int type);
-void chooseLedForKey(int key[4], int type, int signature);
-void setLedToKey(int key[4], int type, int signature, int led);
-
-//If the LED is -1 then it is not in use or free to use.
-int myLed1 = -1;
-int myLed2 = -1;
-int myLed3 = -1;
-int myLed4 = -1;
+void chooseLedForKey(int colors[3], int type, int signature, int key);
+void setLedToKey(int colors[3], int type, int signature, int led, int key);
//These are the notes numbers and RGB values.
//int noteC[] = {24,0,0,0};
@@ -38,69 +32,83 @@
//A larger array of all the keys to be iterated over.
//int keys[7][4] = {noteC, noteD, noteE, noteF, noteG, noteA, noteB};
-int keys[7][4] = {{12,0,0,0}, {14,1,0,0},{16,0,1,0},{17,0,0,1},{19,1,1,0},{21,0,1,1},{23,1,1,1}};
+int colors[12][3] = {{0,0,0},{0,0,0},{1,0,0},{1,0,0},{0,1,0},{0,0,1},{0,0,1},{1,1,0},{1,1,0},{0,1,1},{0,1,1},{1,1,1}};
+
-const int keysSize = 7;
+int keys[11][12] = {{0,1,2,3,4,5,6,7,8,9,10,11},
+ {12,13,14,15,16,17,18,19,20,21,22,23},
+ {24,25,26,27,28,29,30,31,32,33,34,35},
+ {36,37,38,39,40,41,42,43,44,45,46,47},
+ {48,49,50,51,52,53,54,55,56,57,58,59},
+ {60,61,62,63,64,65,66,67,68,69,70,71},
+ {72,73,74,75,76,77,78,79,80,81,82,83},
+ {84,85,86,87,88,89,90,91,92,93,94,95},
+ {96,97,98,99,100,101,102,103,104,105,106,107},
+ {108,109,110,111,112,113,114,115,116,117,118,119},
+ {120,121,122,123,124,125,126,127,0,0,0,0}};
+
+const int keysSize = 12;
+
+int ledKeys[4] = {-1,-1,-1,-1};
LEDController::LEDController() {
-
+
}
void LEDController::identifyKeyForLed(int key, int type){
//pc.printf("\r\nGetting note");
+ int octave = key/12;
+
for(int i = 0; i < keysSize; i++){
- if(key % keys[i][0] == 0){
+ if(keys[octave][i] == key){
//pc.printf("\r\nNote Chosen, no signature");
- chooseLedForKey(keys[i], type,0);
- }else if(key % keys[i][0] == 1){
- chooseLedForKey(keys[i], type, 1);
- //pc.printf("\r\nNote Chosen, no signature");
- }
+ chooseLedForKey(colors[i], type,0, keys[octave][i]);
+ }
}
}
//Chooses which LED to use based upon which are set or if they needed to be turned off.
-void LEDController::chooseLedForKey(int key[4], int type, int signature){
+void LEDController::chooseLedForKey(int colors[3], int type, int signature, int key){
//Determines if the LED is not set and therefore can be used.
//Or if it is in use by the same key being passed in which means it needs to be turned off.
if(type == -1){
- if(myLed1 == key[0] || myLed1 == (key[0] + 1)){
- setLedToKey(key, type, signature, 1);
- }else if(myLed2 == key[0] || myLed2 == (key[0] + 1)){
- setLedToKey(key, type, signature, 2);
- }else if(myLed3 == key[0] || myLed3 == (key[0] + 1)){
- setLedToKey(key, type, signature, 3);
- }else if(myLed4 == key[0] || myLed4 == (key[0] + 1)){
- setLedToKey(key, type, signature, 4);
+ if(ledKeys[0] == key){
+ setLedToKey(colors, type, signature, 1, key);
+ }else if(ledKeys[1] == key){
+ setLedToKey(colors, type, signature, 2, key);
+ }else if(ledKeys[2] == key){
+ setLedToKey(colors, type, signature, 3, key);
+ }else if(ledKeys[3] == key){
+ setLedToKey(colors, type, signature, 4, key);
}
}else{
- if(myLed1 == -1){
+ if(ledKeys[0] == -1){
//pc.printf("\r\nLED1 chosen.");
- setLedToKey(key, type, signature, 1);
- }else if(myLed2 == -1){
- setLedToKey(key, type, signature, 2);
- }else if(myLed3 == -1){
- setLedToKey(key, type, signature, 3);
- }else if(myLed4 == -1){
- setLedToKey(key, type, signature, 4);
+ setLedToKey(colors, type, signature, 1, key);
+ }else if(ledKeys[1] == -1){
+ setLedToKey(colors, type, signature, 2, key);
+ }else if(ledKeys[2] == -1){
+ setLedToKey(colors, type, signature, 3, key);
+ }else if(ledKeys[3] == -1){
+ setLedToKey(colors, type, signature, 4, key);
}
}
}
//This sets the key or clears the previously set key if the type is off.
-void LEDController::setLedToKey(int key[4], int type, int signature, int led){
+void LEDController::setLedToKey(int colors[3], int type, int signature, int led, int key){
if(led == 1){
if(type == 1){
//pc.printf("\r\nTurning on light 1");
- myLed1 = key[0];
- myled1_1 = key[1];
- myled1_2 = key[2];
- myled1_3 = key[3];
+ ledKeys[0] = key;
+ myled1_1 = colors[0];
+ myled1_2 = colors[1];
+ myled1_3 = colors[2];
}else{
//pc.printf("\r\nTurning off light 1");
- myLed1 = -1;
+ ledKeys[0] = -1;
myled1_1 = 0;
myled1_2 = 0;
myled1_3 = 0;
@@ -108,13 +116,13 @@
}else if(led == 2){
if(type == 1){
//pc.printf("\r\nTurning on light 2");
- myLed2 = key[0];
- myled2_1 = key[1];
- myled2_2 = key[2];
- myled2_3 = key[3];
+ ledKeys[1] = key;
+ myled2_1 = colors[0];
+ myled2_2 = colors[1];
+ myled2_3 = colors[2];
}else{
// pc.printf("\r\nTurning off light 2");
- myLed2 = -1;
+ ledKeys[1] = -1;
myled2_1 = 0;
myled2_2 = 0;
myled2_3 = 0;
@@ -122,13 +130,13 @@
}else if(led == 3){
if(type == 1){
// pc.printf("\r\nTurning on light 3");
- myLed3 = key[0];
- myled3_1 = key[1];
- myled3_2 = key[2];
- myled3_3 = key[3];
+ ledKeys[2] = key;
+ myled3_1 = colors[0];
+ myled3_2 = colors[1];
+ myled3_3 = colors[2];
}else{
// pc.printf("\r\nTurning off light 3");
- myLed3 = -1;
+ ledKeys[2] = -1;
myled3_1 = 0;
myled3_2 = 0;
myled3_3 = 0;
@@ -136,13 +144,13 @@
}else if(led == 4){
if(type == 1){
// pc.printf("\r\nTurning on light 4");
- myLed4 = key[0];
- myled4_1 = key[1];
- myled4_2 = key[2];
- myled4_3 = key[3];
+ ledKeys[3] = key;
+ myled4_1 = colors[0];;
+ myled4_2 = colors[1];
+ myled4_3 = colors[2];
}else{
// pc.printf("\r\nTurning off light 4");
- myLed4 = -1;
+ ledKeys[3] = -1;
myled4_1 = 0;
myled4_2 = 0;
myled4_3 = 0;
--- a/LEDController.h Sun Apr 17 21:35:23 2016 +0000
+++ b/LEDController.h Sun Apr 17 21:38:57 2016 +0000
@@ -23,7 +23,7 @@
* @param type This integer determines whether the event coming in is an "on" or "off" event.
* @param signature Determines whether the note is sharp or not
*/
- void chooseLedForKey(int key[4], int type, int signature);
+ void chooseLedForKey(int colors[3], int type, int signature, int key);
/*
* Sets the chosen LED to the proper color of the note passed in.
@@ -32,7 +32,7 @@
* @param signature Determines whether the note is sharp or not
* @param led Determines which LED to light up
*/
- void setLedToKey(int key[4], int type, int signature, int led);
+ void setLedToKey(int colors[3], int type, int signature, int led, int key);
};
\ No newline at end of file
