![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
ece 4180 project 2019
Dependencies: mbed wave_player mbed-rtos 4DGL-uLCD-SE SDFileSystem FATFileSystem
main.cpp@0:567492543056, 2019-04-12 (annotated)
- Committer:
- rhuang77
- Date:
- Fri Apr 12 01:18:47 2019 +0000
- Revision:
- 0:567492543056
- Child:
- 1:549f56cb4740
new electric piano code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rhuang77 | 0:567492543056 | 1 | #include <mbed.h> |
rhuang77 | 0:567492543056 | 2 | #include <mpr121.h> |
rhuang77 | 0:567492543056 | 3 | #include "mbed.h" |
rhuang77 | 0:567492543056 | 4 | #include "uLCD_4DGL.h" |
rhuang77 | 0:567492543056 | 5 | #include "SDFileSystem.h" |
rhuang77 | 0:567492543056 | 6 | #include "FATFileSystem.h" |
rhuang77 | 0:567492543056 | 7 | #include "wave_player.h" |
rhuang77 | 0:567492543056 | 8 | #include <stdio.h> |
rhuang77 | 0:567492543056 | 9 | #include "Speaker.h" |
rhuang77 | 0:567492543056 | 10 | DigitalOut led1(LED1); |
rhuang77 | 0:567492543056 | 11 | DigitalOut led2(LED2); |
rhuang77 | 0:567492543056 | 12 | DigitalOut led3(LED3); |
rhuang77 | 0:567492543056 | 13 | DigitalOut led4(LED4); |
rhuang77 | 0:567492543056 | 14 | // Create the interrupt receiver object on pin 26 |
rhuang77 | 0:567492543056 | 15 | InterruptIn interrupt(p26); |
rhuang77 | 0:567492543056 | 16 | // Setup the i2c bus on pins 9 and 10 |
rhuang77 | 0:567492543056 | 17 | I2C i2c(p9, p10); |
rhuang77 | 0:567492543056 | 18 | // Setup the Mpr121: |
rhuang77 | 0:567492543056 | 19 | // constructor(i2c object, i2c address of the mpr121) |
rhuang77 | 0:567492543056 | 20 | Mpr121 mpr121(&i2c, Mpr121::ADD_VSS); |
rhuang77 | 0:567492543056 | 21 | |
rhuang77 | 0:567492543056 | 22 | SDFileSystem sd(p5, p6, p7, p8, "sd"); |
rhuang77 | 0:567492543056 | 23 | |
rhuang77 | 0:567492543056 | 24 | AnalogOut DACout(p18); |
rhuang77 | 0:567492543056 | 25 | wave_player waver(&DACout); |
rhuang77 | 0:567492543056 | 26 | FILE *wave_file; |
rhuang77 | 0:567492543056 | 27 | |
rhuang77 | 0:567492543056 | 28 | |
rhuang77 | 0:567492543056 | 29 | // Key hit/release interrupt routine |
rhuang77 | 0:567492543056 | 30 | |
rhuang77 | 0:567492543056 | 31 | int key_code; |
rhuang77 | 0:567492543056 | 32 | void fallInterrupt() { |
rhuang77 | 0:567492543056 | 33 | key_code = 0; |
rhuang77 | 0:567492543056 | 34 | int i=0; |
rhuang77 | 0:567492543056 | 35 | int value=mpr121.read(0x00); |
rhuang77 | 0:567492543056 | 36 | value +=mpr121.read(0x01)<<8; |
rhuang77 | 0:567492543056 | 37 | // LED demo mod |
rhuang77 | 0:567492543056 | 38 | i=0; |
rhuang77 | 0:567492543056 | 39 | // puts key number out to LEDs for demo |
rhuang77 | 0:567492543056 | 40 | for (i=0; i<12; i++) { |
rhuang77 | 0:567492543056 | 41 | if (((value>>i)&0x01)==1) { |
rhuang77 | 0:567492543056 | 42 | key_code=i+1; |
rhuang77 | 0:567492543056 | 43 | |
rhuang77 | 0:567492543056 | 44 | } |
rhuang77 | 0:567492543056 | 45 | } |
rhuang77 | 0:567492543056 | 46 | // wave_file=fopen("/sd/piano/a1.wav","r"); |
rhuang77 | 0:567492543056 | 47 | // if(wave_file==NULL) printf("file open error!\n\n\r"); |
rhuang77 | 0:567492543056 | 48 | // printf("test"); |
rhuang77 | 0:567492543056 | 49 | // waver.play(wave_file); |
rhuang77 | 0:567492543056 | 50 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 51 | printf("%d", key_code); |
rhuang77 | 0:567492543056 | 52 | led4=key_code & 0x01; |
rhuang77 | 0:567492543056 | 53 | led3=(key_code>>1) & 0x01; |
rhuang77 | 0:567492543056 | 54 | led2=(key_code>>2) & 0x01; |
rhuang77 | 0:567492543056 | 55 | led1=(key_code>>3) & 0x01; |
rhuang77 | 0:567492543056 | 56 | } |
rhuang77 | 0:567492543056 | 57 | |
rhuang77 | 0:567492543056 | 58 | int main() { |
rhuang77 | 0:567492543056 | 59 | // Speaker mySpeaker(p18); |
rhuang77 | 0:567492543056 | 60 | interrupt.fall(&fallInterrupt); |
rhuang77 | 0:567492543056 | 61 | interrupt.mode(PullUp); |
rhuang77 | 0:567492543056 | 62 | // while(1){ |
rhuang77 | 0:567492543056 | 63 | |
rhuang77 | 0:567492543056 | 64 | //} |
rhuang77 | 0:567492543056 | 65 | while (1) { |
rhuang77 | 0:567492543056 | 66 | |
rhuang77 | 0:567492543056 | 67 | |
rhuang77 | 0:567492543056 | 68 | switch(key_code) //uses a case statement for each individual touch sensor |
rhuang77 | 0:567492543056 | 69 | { |
rhuang77 | 0:567492543056 | 70 | case 1: |
rhuang77 | 0:567492543056 | 71 | wave_file = fopen("/sd/piano/a12.wav","r"); |
rhuang77 | 0:567492543056 | 72 | waver.play(wave_file); |
rhuang77 | 0:567492543056 | 73 | fclose(wave_file); |
rhuang77 | 0:567492543056 | 74 | // mySpeaker.PlayNote(969.0, 0.5, 1.0); |
rhuang77 | 0:567492543056 | 75 | // mySpeaker.PlayNote(200.0, 0.1, 0.1); |
rhuang77 | 0:567492543056 | 76 | // mySpeaker.PlayNote(200.0, 0.1, 0.1); |
rhuang77 | 0:567492543056 | 77 | |
rhuang77 | 0:567492543056 | 78 | // led1 = 1; |
rhuang77 | 0:567492543056 | 79 | break; |
rhuang77 | 0:567492543056 | 80 | case 2: |
rhuang77 | 0:567492543056 | 81 | |
rhuang77 | 0:567492543056 | 82 | wave_file = fopen("/sd/piano/c12.wav","r"); |
rhuang77 | 0:567492543056 | 83 | waver.play(wave_file); |
rhuang77 | 0:567492543056 | 84 | fclose(wave_file); |
rhuang77 | 0:567492543056 | 85 | //mySpeaker.PlayNote(300.0, 0.1, 0.1); |
rhuang77 | 0:567492543056 | 86 | // wave_file = fopen("/sd/piano_B.wav","r"); |
rhuang77 | 0:567492543056 | 87 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 88 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 89 | break; |
rhuang77 | 0:567492543056 | 90 | case 3: |
rhuang77 | 0:567492543056 | 91 | // mySpeaker.PlayNote(500.0, 0.15, 0.1); |
rhuang77 | 0:567492543056 | 92 | // wave_file = fopen("/sd/piano_A_sharp.wav","r"); |
rhuang77 | 0:567492543056 | 93 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 94 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 95 | break; |
rhuang77 | 0:567492543056 | 96 | case 4: |
rhuang77 | 0:567492543056 | 97 | // mySpeaker.PlayNote(700.0, 0.15, 0.1); |
rhuang77 | 0:567492543056 | 98 | // wave_file = fopen("/sd/Gb3.wav","r"); |
rhuang77 | 0:567492543056 | 99 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 100 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 101 | break; |
rhuang77 | 0:567492543056 | 102 | case 5: |
rhuang77 | 0:567492543056 | 103 | // mySpeaker.PlayNote(600.0, 0.15, 0.1); |
rhuang77 | 0:567492543056 | 104 | // wave_file = fopen("/sd/G3.wav","r"); |
rhuang77 | 0:567492543056 | 105 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 106 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 107 | break; |
rhuang77 | 0:567492543056 | 108 | case 6: |
rhuang77 | 0:567492543056 | 109 | // mySpeaker.PlayNote(969.0, 0.5, 0.5); |
rhuang77 | 0:567492543056 | 110 | // wave_file = fopen("/sd/F3.wav","r"); |
rhuang77 | 0:567492543056 | 111 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 112 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 113 | break; |
rhuang77 | 0:567492543056 | 114 | case 7: |
rhuang77 | 0:567492543056 | 115 | // mySpeaker.PlayNote(161.0, 0.25, 0.01); |
rhuang77 | 0:567492543056 | 116 | // wave_file = fopen("/sd/Eb4.wav","r"); |
rhuang77 | 0:567492543056 | 117 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 118 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 119 | break; |
rhuang77 | 0:567492543056 | 120 | case 8: |
rhuang77 | 0:567492543056 | 121 | // mySpeaker.PlayNote(869.0, 0.5, 0.5); |
rhuang77 | 0:567492543056 | 122 | // wave_file = fopen("/sd/Eb3.wav","r"); |
rhuang77 | 0:567492543056 | 123 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 124 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 125 | break; |
rhuang77 | 0:567492543056 | 126 | case 9: |
rhuang77 | 0:567492543056 | 127 | // mySpeaker.PlayNote(769.0, 0.5, 0.5); |
rhuang77 | 0:567492543056 | 128 | // wave_file = fopen("/sd/E3.wav","r"); |
rhuang77 | 0:567492543056 | 129 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 130 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 131 | break; |
rhuang77 | 0:567492543056 | 132 | case 10: |
rhuang77 | 0:567492543056 | 133 | // mySpeaker.PlayNote(669.0, 0.5, 0.5); |
rhuang77 | 0:567492543056 | 134 | // wave_file = fopen("/sd/Db4.wav","r"); |
rhuang77 | 0:567492543056 | 135 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 136 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 137 | break; |
rhuang77 | 0:567492543056 | 138 | case 11: |
rhuang77 | 0:567492543056 | 139 | // mySpeaker.PlayNote(469.0, 0.5, 0.5); |
rhuang77 | 0:567492543056 | 140 | // wave_file = fopen("/sd/Db3.wav","r"); |
rhuang77 | 0:567492543056 | 141 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 142 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 143 | break; |
rhuang77 | 0:567492543056 | 144 | case 12: |
rhuang77 | 0:567492543056 | 145 | // mySpeaker.PlayNote(969.0, 0.5, 0.5); |
rhuang77 | 0:567492543056 | 146 | // wave_file = fopen("/sd/D4.wav","r"); |
rhuang77 | 0:567492543056 | 147 | // waver.play(wave_file, &PlayPtr); |
rhuang77 | 0:567492543056 | 148 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 149 | break; |
rhuang77 | 0:567492543056 | 150 | default: |
rhuang77 | 0:567492543056 | 151 | // wave_file = fopen("/sd/piano/a12.wav","r"); |
rhuang77 | 0:567492543056 | 152 | // waver.play(wave_file); |
rhuang77 | 0:567492543056 | 153 | // fclose(wave_file); |
rhuang77 | 0:567492543056 | 154 | // mySpeaker.PlayNote(969.0, 0, 0); |
rhuang77 | 0:567492543056 | 155 | break; |
rhuang77 | 0:567492543056 | 156 | } |
rhuang77 | 0:567492543056 | 157 | } |
rhuang77 | 0:567492543056 | 158 | } |
rhuang77 | 0:567492543056 | 159 |