George Cochrane
/
DrumMachine
very preliminary code, pins clearly havent been chosen yet!
readknobs.cpp@1:0404e9aa397f, 2013-07-02 (annotated)
- Committer:
- gcme93
- Date:
- Tue Jul 02 17:50:52 2013 +0000
- Revision:
- 1:0404e9aa397f
- Parent:
- 0:438bb4b2ba51
Very preliminary code, pins clearly not chosen yet!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
gcme93 | 0:438bb4b2ba51 | 1 | #include "mbed.h" |
gcme93 | 0:438bb4b2ba51 | 2 | #include "TextLCD.h" |
gcme93 | 0:438bb4b2ba51 | 3 | #include "readknobs.h" |
gcme93 | 0:438bb4b2ba51 | 4 | |
gcme93 | 1:0404e9aa397f | 5 | //Declare necessary variables |
gcme93 | 0:438bb4b2ba51 | 6 | extern int tempo; |
gcme93 | 0:438bb4b2ba51 | 7 | extern int swing; |
gcme93 | 0:438bb4b2ba51 | 8 | extern int mintempo; |
gcme93 | 0:438bb4b2ba51 | 9 | extern int maxtempo; |
gcme93 | 0:438bb4b2ba51 | 10 | |
gcme93 | 1:0404e9aa397f | 11 | void readknobs() //Function Definition |
gcme93 | 0:438bb4b2ba51 | 12 | { |
gcme93 | 0:438bb4b2ba51 | 13 | |
gcme93 | 0:438bb4b2ba51 | 14 | // SWING CALCULATION |
gcme93 | 0:438bb4b2ba51 | 15 | |
gcme93 | 1:0404e9aa397f | 16 | int a = sw.read() * 10; //Make the analog read an integer from 0-10 |
gcme93 | 0:438bb4b2ba51 | 17 | |
gcme93 | 1:0404e9aa397f | 18 | switch (a) //Segmented solution to each case |
gcme93 | 0:438bb4b2ba51 | 19 | { |
gcme93 | 0:438bb4b2ba51 | 20 | case 0: swing = -150; |
gcme93 | 0:438bb4b2ba51 | 21 | case 1: swing = -150; |
gcme93 | 0:438bb4b2ba51 | 22 | case 2: swing = -100; |
gcme93 | 0:438bb4b2ba51 | 23 | case 3: swing = -60; |
gcme93 | 1:0404e9aa397f | 24 | case 4: // |
gcme93 | 1:0404e9aa397f | 25 | case 5: // Note, plenty of 0 swing to prevent accidental swing |
gcme93 | 1:0404e9aa397f | 26 | case 6: swing = 0; // |
gcme93 | 0:438bb4b2ba51 | 27 | case 7: swing = 60; |
gcme93 | 0:438bb4b2ba51 | 28 | case 8: swing = 100; |
gcme93 | 0:438bb4b2ba51 | 29 | case 9: swing = 100; |
gcme93 | 0:438bb4b2ba51 | 30 | case 10: swing = 150; |
gcme93 | 0:438bb4b2ba51 | 31 | } |
gcme93 | 0:438bb4b2ba51 | 32 | |
gcme93 | 0:438bb4b2ba51 | 33 | // TEMPO CALCULATION |
gcme93 | 0:438bb4b2ba51 | 34 | |
gcme93 | 1:0404e9aa397f | 35 | tempo = mintempo + (maxtempo-mintempo)*tmp.read_u16() / 65535; //Tempo as the analog read percentage multiplied by tempo range |
gcme93 | 0:438bb4b2ba51 | 36 | |
gcme93 | 1:0404e9aa397f | 37 | tempo = (doubletime) ? 2*tempo : tempo; //Double the tempo if doubletime==1 |
gcme93 | 0:438bb4b2ba51 | 38 | |
gcme93 | 0:438bb4b2ba51 | 39 | // DISPLAY INFO |
gcme93 | 1:0404e9aa397f | 40 | char signature[]="x/4"; |
gcme93 | 1:0404e9aa397f | 41 | if (threetime==0) |
gcme93 | 1:0404e9aa397f | 42 | { |
gcme93 | 1:0404e9aa397f | 43 | signature[0]= '4'; |
gcme93 | 1:0404e9aa397f | 44 | } |
gcme93 | 1:0404e9aa397f | 45 | else |
gcme93 | 1:0404e9aa397f | 46 | { |
gcme93 | 1:0404e9aa397f | 47 | signature[0]= '3'; |
gcme93 | 1:0404e9aa397f | 48 | } |
gcme93 | 1:0404e9aa397f | 49 | |
gcme93 | 0:438bb4b2ba51 | 50 | char percentage = 37; |
gcme93 | 0:438bb4b2ba51 | 51 | |
gcme93 | 0:438bb4b2ba51 | 52 | lcd.cls(); |
gcme93 | 0:438bb4b2ba51 | 53 | lcd.locate(0,0); |
gcme93 | 0:438bb4b2ba51 | 54 | lcd.printf("%d bpm", tempo); |
gcme93 | 0:438bb4b2ba51 | 55 | lcd.locate(1,0); |
gcme93 | 0:438bb4b2ba51 | 56 | lcd.printf("Swing: %d %c", swing, percentage); |
gcme93 | 0:438bb4b2ba51 | 57 | lcd.locate(2,0); |
gcme93 | 0:438bb4b2ba51 | 58 | lcd.printf("TimeSig: %s", signature); |
gcme93 | 0:438bb4b2ba51 | 59 | } |