keypad piano project

Dependencies:   4DGL-uLCD-SE SDFileSystem Speaker mbed wave_player

Fork of Beat_Demo_full_full by James Hawkins

Committer:
jhawkins38
Date:
Wed Oct 22 01:17:25 2014 +0000
Revision:
0:81b352a233ca
Child:
1:90c01826cdb8
passed playPtr to play method in wave_play class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jhawkins38 0:81b352a233ca 1 #include <mbed.h>
jhawkins38 0:81b352a233ca 2 #include <mpr121.h>
jhawkins38 0:81b352a233ca 3 #include "uLCD_4DGL.h"
jhawkins38 0:81b352a233ca 4 #include "Speaker.h"
jhawkins38 0:81b352a233ca 5 #include "SDFileSystem.h"
jhawkins38 0:81b352a233ca 6 #include "wave_player.h"
jhawkins38 0:81b352a233ca 7
jhawkins38 0:81b352a233ca 8 DigitalOut led1(LED1);
jhawkins38 0:81b352a233ca 9 DigitalOut led2(LED2);
jhawkins38 0:81b352a233ca 10 DigitalOut led3(LED3);
jhawkins38 0:81b352a233ca 11 DigitalOut led4(LED4);
jhawkins38 0:81b352a233ca 12
jhawkins38 0:81b352a233ca 13 SDFileSystem sd(p5, p6, p7, p8,"sd"); //SD card
jhawkins38 0:81b352a233ca 14
jhawkins38 0:81b352a233ca 15 uLCD_4DGL uLCD(p13,p14,p11);
jhawkins38 0:81b352a233ca 16
jhawkins38 0:81b352a233ca 17 AnalogOut DACout(p18);
jhawkins38 0:81b352a233ca 18 wave_player waver(&DACout);
jhawkins38 0:81b352a233ca 19
jhawkins38 0:81b352a233ca 20
jhawkins38 0:81b352a233ca 21 // Create the interrupt receiver object on pin 26
jhawkins38 0:81b352a233ca 22 InterruptIn interrupt(p26);
jhawkins38 0:81b352a233ca 23 InterruptIn pardon(p25);
jhawkins38 0:81b352a233ca 24 // Setup the i2c bus on pins 9 and 10
jhawkins38 0:81b352a233ca 25 I2C i2c(p9, p10);
jhawkins38 0:81b352a233ca 26 I2C i2c2(p28, p27);
jhawkins38 0:81b352a233ca 27 // Setup the Mpr121:
jhawkins38 0:81b352a233ca 28 // constructor(i2c object, i2c address of the mpr121)
jhawkins38 0:81b352a233ca 29 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
jhawkins38 0:81b352a233ca 30 Mpr121 pad(&i2c2, Mpr121::ADD_VSS);
jhawkins38 0:81b352a233ca 31
jhawkins38 0:81b352a233ca 32 //Speaker mySpeaker(p21);
jhawkins38 0:81b352a233ca 33
jhawkins38 0:81b352a233ca 34 int key_code;
jhawkins38 0:81b352a233ca 35 int Past_code;
jhawkins38 0:81b352a233ca 36 int Past_code2;
jhawkins38 0:81b352a233ca 37 bool PlayPtr;
jhawkins38 0:81b352a233ca 38
jhawkins38 0:81b352a233ca 39 // Key hit/release interrupt routine for 1st touchpad
jhawkins38 0:81b352a233ca 40 void fallInterrupt() {
jhawkins38 0:81b352a233ca 41 key_code=77;
jhawkins38 0:81b352a233ca 42 Past_code=77;
jhawkins38 0:81b352a233ca 43 int value=mpr121.read(0x00);
jhawkins38 0:81b352a233ca 44 value +=mpr121.read(0x01)<<8;
jhawkins38 0:81b352a233ca 45
jhawkins38 0:81b352a233ca 46
jhawkins38 0:81b352a233ca 47 // puts key number out to LEDs for demo
jhawkins38 0:81b352a233ca 48 for(int i=0; i<12; i++)
jhawkins38 0:81b352a233ca 49 {
jhawkins38 0:81b352a233ca 50
jhawkins38 0:81b352a233ca 51 if(((value>>i)&0x01) == 1)
jhawkins38 0:81b352a233ca 52 {
jhawkins38 0:81b352a233ca 53 key_code = i;
jhawkins38 0:81b352a233ca 54 }
jhawkins38 0:81b352a233ca 55
jhawkins38 0:81b352a233ca 56 }
jhawkins38 0:81b352a233ca 57
jhawkins38 0:81b352a233ca 58 uLCD.locate(1,2);
jhawkins38 0:81b352a233ca 59 uLCD.printf("%2D",key_code);
jhawkins38 0:81b352a233ca 60 uLCD.cls();
jhawkins38 0:81b352a233ca 61 uLCD.printf("\n%2D\n", key_code);
jhawkins38 0:81b352a233ca 62 uLCD.printf("\n%2D\n", Past_code);
jhawkins38 0:81b352a233ca 63 if(key_code != Past_code)
jhawkins38 0:81b352a233ca 64 {
jhawkins38 0:81b352a233ca 65 PlayPtr = false;
jhawkins38 0:81b352a233ca 66 }
jhawkins38 0:81b352a233ca 67 else
jhawkins38 0:81b352a233ca 68 {
jhawkins38 0:81b352a233ca 69 PlayPtr = true;
jhawkins38 0:81b352a233ca 70 }
jhawkins38 0:81b352a233ca 71 Past_code = key_code;
jhawkins38 0:81b352a233ca 72
jhawkins38 0:81b352a233ca 73
jhawkins38 0:81b352a233ca 74 }
jhawkins38 0:81b352a233ca 75
jhawkins38 0:81b352a233ca 76 //sets up interrupts for 2nd toucpad
jhawkins38 0:81b352a233ca 77 void fallInterrupt2() {
jhawkins38 0:81b352a233ca 78 key_code=77;
jhawkins38 0:81b352a233ca 79 Past_code2=77;
jhawkins38 0:81b352a233ca 80 int value2=pad.read(0x00);
jhawkins38 0:81b352a233ca 81 value2 +=pad.read(0x01)<<8;
jhawkins38 0:81b352a233ca 82
jhawkins38 0:81b352a233ca 83 // puts key number out to LEDs for demo
jhawkins38 0:81b352a233ca 84 for(int j=0; j<12; j++)
jhawkins38 0:81b352a233ca 85 {
jhawkins38 0:81b352a233ca 86
jhawkins38 0:81b352a233ca 87 if(((value2>>j)&0x01) == 1)
jhawkins38 0:81b352a233ca 88 {
jhawkins38 0:81b352a233ca 89 key_code= j +12;
jhawkins38 0:81b352a233ca 90
jhawkins38 0:81b352a233ca 91 }
jhawkins38 0:81b352a233ca 92 }
jhawkins38 0:81b352a233ca 93
jhawkins38 0:81b352a233ca 94 if(key_code != Past_code2)
jhawkins38 0:81b352a233ca 95 {
jhawkins38 0:81b352a233ca 96 PlayPtr = false;
jhawkins38 0:81b352a233ca 97 }
jhawkins38 0:81b352a233ca 98 else
jhawkins38 0:81b352a233ca 99 {
jhawkins38 0:81b352a233ca 100 PlayPtr = true;
jhawkins38 0:81b352a233ca 101 }
jhawkins38 0:81b352a233ca 102 Past_code2 = key_code;
jhawkins38 0:81b352a233ca 103
jhawkins38 0:81b352a233ca 104
jhawkins38 0:81b352a233ca 105 uLCD.locate(1,3);
jhawkins38 0:81b352a233ca 106 uLCD.printf("%2D",key_code);
jhawkins38 0:81b352a233ca 107
jhawkins38 0:81b352a233ca 108
jhawkins38 0:81b352a233ca 109 }
jhawkins38 0:81b352a233ca 110
jhawkins38 0:81b352a233ca 111 int main() {
jhawkins38 0:81b352a233ca 112 pardon.fall(&fallInterrupt2);
jhawkins38 0:81b352a233ca 113 pardon.mode(PullUp);
jhawkins38 0:81b352a233ca 114 interrupt.fall(&fallInterrupt);
jhawkins38 0:81b352a233ca 115 interrupt.mode(PullUp);
jhawkins38 0:81b352a233ca 116
jhawkins38 0:81b352a233ca 117 FILE *wave_file;
jhawkins38 0:81b352a233ca 118
jhawkins38 0:81b352a233ca 119 while(1)
jhawkins38 0:81b352a233ca 120 {
jhawkins38 0:81b352a233ca 121 switch(key_code) //uses a case for each individual touch sensor
jhawkins38 0:81b352a233ca 122 {
jhawkins38 0:81b352a233ca 123 case 0:
jhawkins38 0:81b352a233ca 124 //mySpeaker.PlayNote(969.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 125 wave_file = fopen("/sd/piano_G.wav","r");
jhawkins38 0:81b352a233ca 126 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 127 fclose(wave_file);
jhawkins38 0:81b352a233ca 128 break;
jhawkins38 0:81b352a233ca 129 case 1:
jhawkins38 0:81b352a233ca 130 //mySpeaker.PlayNote(200.0, 0.1, 0.1);
jhawkins38 0:81b352a233ca 131 wave_file = fopen("/sd/piano_F_sharp.wav","r");
jhawkins38 0:81b352a233ca 132 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 133 fclose(wave_file);
jhawkins38 0:81b352a233ca 134 led1 = 1;
jhawkins38 0:81b352a233ca 135 break;
jhawkins38 0:81b352a233ca 136 case 2:
jhawkins38 0:81b352a233ca 137 //mySpeaker.PlayNote(300.0, 0.1, 0.1);
jhawkins38 0:81b352a233ca 138 wave_file = fopen("/sd/piano_B.wav","r");
jhawkins38 0:81b352a233ca 139 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 140 fclose(wave_file);
jhawkins38 0:81b352a233ca 141 break;
jhawkins38 0:81b352a233ca 142 case 3:
jhawkins38 0:81b352a233ca 143 //mySpeaker.PlayNote(500.0, 0.15, 0.1);
jhawkins38 0:81b352a233ca 144 wave_file = fopen("/sd/piano_A_sharp.wav","r");
jhawkins38 0:81b352a233ca 145 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 146 fclose(wave_file);
jhawkins38 0:81b352a233ca 147 break;
jhawkins38 0:81b352a233ca 148 case 4:
jhawkins38 0:81b352a233ca 149 //mySpeaker.PlayNote(700.0, 0.15, 0.1);
jhawkins38 0:81b352a233ca 150 wave_file = fopen("/sd/Gb3.wav","r");
jhawkins38 0:81b352a233ca 151 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 152 fclose(wave_file);
jhawkins38 0:81b352a233ca 153 break;
jhawkins38 0:81b352a233ca 154 case 5:
jhawkins38 0:81b352a233ca 155 //mySpeaker.PlayNote(600.0, 0.15, 0.1);
jhawkins38 0:81b352a233ca 156 wave_file = fopen("/sd/G3.wav","r");
jhawkins38 0:81b352a233ca 157 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 158 fclose(wave_file);
jhawkins38 0:81b352a233ca 159 break;
jhawkins38 0:81b352a233ca 160 case 6:
jhawkins38 0:81b352a233ca 161 //mySpeaker.PlayNote(969.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 162 wave_file = fopen("/sd/F3.wav","r");
jhawkins38 0:81b352a233ca 163 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 164 fclose(wave_file);
jhawkins38 0:81b352a233ca 165 break;
jhawkins38 0:81b352a233ca 166 case 7:
jhawkins38 0:81b352a233ca 167 //mySpeaker.PlayNote(161.0, 0.25, 0.01);
jhawkins38 0:81b352a233ca 168 wave_file = fopen("/sd/Eb4.wav","r");
jhawkins38 0:81b352a233ca 169 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 170 fclose(wave_file);
jhawkins38 0:81b352a233ca 171 break;
jhawkins38 0:81b352a233ca 172 case 8:
jhawkins38 0:81b352a233ca 173 //mySpeaker.PlayNote(869.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 174 wave_file = fopen("/sd/Eb3.wav","r");
jhawkins38 0:81b352a233ca 175 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 176 fclose(wave_file);
jhawkins38 0:81b352a233ca 177 break;
jhawkins38 0:81b352a233ca 178 case 9:
jhawkins38 0:81b352a233ca 179 //mySpeaker.PlayNote(769.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 180 wave_file = fopen("/sd/E3.wav","r");
jhawkins38 0:81b352a233ca 181 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 182 fclose(wave_file);
jhawkins38 0:81b352a233ca 183 break;
jhawkins38 0:81b352a233ca 184 case 10:
jhawkins38 0:81b352a233ca 185 //mySpeaker.PlayNote(669.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 186 wave_file = fopen("/sd/Db4.wav","r");
jhawkins38 0:81b352a233ca 187 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 188 fclose(wave_file);
jhawkins38 0:81b352a233ca 189 break;
jhawkins38 0:81b352a233ca 190 case 11:
jhawkins38 0:81b352a233ca 191 //mySpeaker.PlayNote(469.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 192 wave_file = fopen("/sd/Db3.wav","r");
jhawkins38 0:81b352a233ca 193 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 194 fclose(wave_file);
jhawkins38 0:81b352a233ca 195 break;
jhawkins38 0:81b352a233ca 196 case 12:
jhawkins38 0:81b352a233ca 197 //mySpeaker.PlayNote(969.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 198 wave_file = fopen("/sd/D4.wav","r");
jhawkins38 0:81b352a233ca 199 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 200 fclose(wave_file);
jhawkins38 0:81b352a233ca 201 break;
jhawkins38 0:81b352a233ca 202 case 13:
jhawkins38 0:81b352a233ca 203 //mySpeaker.PlayNote(200.0, 0.1, 0.1);
jhawkins38 0:81b352a233ca 204 wave_file = fopen("/sd/Db3.wav","r");
jhawkins38 0:81b352a233ca 205 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 206 fclose(wave_file);
jhawkins38 0:81b352a233ca 207 led1 = 1;
jhawkins38 0:81b352a233ca 208 uLCD.printf("Hey");
jhawkins38 0:81b352a233ca 209 break;
jhawkins38 0:81b352a233ca 210 case 14:
jhawkins38 0:81b352a233ca 211 //mySpeaker.PlayNote(300.0, 0.1, 0.1);
jhawkins38 0:81b352a233ca 212 wave_file = fopen("/sd/C4.wav","r");
jhawkins38 0:81b352a233ca 213 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 214 fclose(wave_file);
jhawkins38 0:81b352a233ca 215 break;
jhawkins38 0:81b352a233ca 216 case 15:
jhawkins38 0:81b352a233ca 217 //mySpeaker.PlayNote(500.0, 0.15, 0.1);
jhawkins38 0:81b352a233ca 218 wave_file = fopen("/sd/C3.wav","r");
jhawkins38 0:81b352a233ca 219 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 220 fclose(wave_file);
jhawkins38 0:81b352a233ca 221 break;
jhawkins38 0:81b352a233ca 222 case 16:
jhawkins38 0:81b352a233ca 223 //mySpeaker.PlayNote(700.0, 0.15, 0.1);
jhawkins38 0:81b352a233ca 224 wave_file = fopen("/sd/Bb3.wav","r");
jhawkins38 0:81b352a233ca 225 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 226 fclose(wave_file);
jhawkins38 0:81b352a233ca 227 break;
jhawkins38 0:81b352a233ca 228 case 17:
jhawkins38 0:81b352a233ca 229 //mySpeaker.PlayNote(600.0, 0.15, 0.1);
jhawkins38 0:81b352a233ca 230 wave_file = fopen("/sd/Bb2.wav","r");
jhawkins38 0:81b352a233ca 231 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 232 fclose(wave_file);
jhawkins38 0:81b352a233ca 233 break;
jhawkins38 0:81b352a233ca 234 case 18:
jhawkins38 0:81b352a233ca 235 //mySpeaker.PlayNote(969.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 236 wave_file = fopen("/sd/B3.wav","r");
jhawkins38 0:81b352a233ca 237 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 238 fclose(wave_file);
jhawkins38 0:81b352a233ca 239 break;
jhawkins38 0:81b352a233ca 240 case 19:
jhawkins38 0:81b352a233ca 241 //mySpeaker.PlayNote(161.0, 0.25, 0.01);
jhawkins38 0:81b352a233ca 242 wave_file = fopen("/sd/B2.wav","r");
jhawkins38 0:81b352a233ca 243 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 244 fclose(wave_file);
jhawkins38 0:81b352a233ca 245 break;
jhawkins38 0:81b352a233ca 246 case 20:
jhawkins38 0:81b352a233ca 247 //mySpeaker.PlayNote(869.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 248 wave_file = fopen("/sd/Ab3.wav","r");
jhawkins38 0:81b352a233ca 249 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 250 fclose(wave_file);
jhawkins38 0:81b352a233ca 251 break;
jhawkins38 0:81b352a233ca 252 case 21:
jhawkins38 0:81b352a233ca 253 //mySpeaker.PlayNote(769.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 254 wave_file = fopen("/sd/A3.wav","r");
jhawkins38 0:81b352a233ca 255 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 256 fclose(wave_file);
jhawkins38 0:81b352a233ca 257 break;
jhawkins38 0:81b352a233ca 258 case 22:
jhawkins38 0:81b352a233ca 259 //mySpeaker.PlayNote(669.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 260 wave_file = fopen("/sd/C3.wav","r");
jhawkins38 0:81b352a233ca 261 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 262 fclose(wave_file);
jhawkins38 0:81b352a233ca 263 break;
jhawkins38 0:81b352a233ca 264 case 23:
jhawkins38 0:81b352a233ca 265 //mySpeaker.PlayNote(469.0, 0.5, 0.5);
jhawkins38 0:81b352a233ca 266 wave_file = fopen("/sd/C4.wav","r");
jhawkins38 0:81b352a233ca 267 waver.play(wave_file, &PlayPtr);
jhawkins38 0:81b352a233ca 268 fclose(wave_file);
jhawkins38 0:81b352a233ca 269 break;
jhawkins38 0:81b352a233ca 270 }
jhawkins38 0:81b352a233ca 271 }
jhawkins38 0:81b352a233ca 272 }
jhawkins38 0:81b352a233ca 273