George Cochrane
/
DrumMachine
very preliminary code, pins clearly havent been chosen yet!
readknobs.cpp@0:438bb4b2ba51, 2013-07-02 (annotated)
- Committer:
- gcme93
- Date:
- Tue Jul 02 09:16:17 2013 +0000
- Revision:
- 0:438bb4b2ba51
- Child:
- 1:0404e9aa397f
Full Code (threetime, doubletime, enable, screen output); NO fill; NO alternate; NO user input
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 | 0:438bb4b2ba51 | 5 | extern int tempo; |
gcme93 | 0:438bb4b2ba51 | 6 | extern int swing; |
gcme93 | 0:438bb4b2ba51 | 7 | extern int mintempo; |
gcme93 | 0:438bb4b2ba51 | 8 | extern int maxtempo; |
gcme93 | 0:438bb4b2ba51 | 9 | int k; |
gcme93 | 0:438bb4b2ba51 | 10 | |
gcme93 | 0:438bb4b2ba51 | 11 | |
gcme93 | 0:438bb4b2ba51 | 12 | TextLCD lcd(PTA1, PTA2, PTA4, PTA5, PTC8, PTC9, TextLCD::LCD20x4); // rs, e, d4-d7 |
gcme93 | 0:438bb4b2ba51 | 13 | |
gcme93 | 0:438bb4b2ba51 | 14 | |
gcme93 | 0:438bb4b2ba51 | 15 | void readknobs() |
gcme93 | 0:438bb4b2ba51 | 16 | { |
gcme93 | 0:438bb4b2ba51 | 17 | |
gcme93 | 0:438bb4b2ba51 | 18 | // SWING CALCULATION |
gcme93 | 0:438bb4b2ba51 | 19 | |
gcme93 | 0:438bb4b2ba51 | 20 | int a = sw.read() * 10; |
gcme93 | 0:438bb4b2ba51 | 21 | |
gcme93 | 0:438bb4b2ba51 | 22 | switch (a) |
gcme93 | 0:438bb4b2ba51 | 23 | { |
gcme93 | 0:438bb4b2ba51 | 24 | case 0: swing = -150; |
gcme93 | 0:438bb4b2ba51 | 25 | case 1: swing = -150; |
gcme93 | 0:438bb4b2ba51 | 26 | case 2: swing = -100; |
gcme93 | 0:438bb4b2ba51 | 27 | case 3: swing = -60; |
gcme93 | 0:438bb4b2ba51 | 28 | case 4: |
gcme93 | 0:438bb4b2ba51 | 29 | case 5: |
gcme93 | 0:438bb4b2ba51 | 30 | case 6: swing = 0; |
gcme93 | 0:438bb4b2ba51 | 31 | case 7: swing = 60; |
gcme93 | 0:438bb4b2ba51 | 32 | case 8: swing = 100; |
gcme93 | 0:438bb4b2ba51 | 33 | case 9: swing = 100; |
gcme93 | 0:438bb4b2ba51 | 34 | case 10: swing = 150; |
gcme93 | 0:438bb4b2ba51 | 35 | } |
gcme93 | 0:438bb4b2ba51 | 36 | |
gcme93 | 0:438bb4b2ba51 | 37 | // TEMPO CALCULATION |
gcme93 | 0:438bb4b2ba51 | 38 | |
gcme93 | 0:438bb4b2ba51 | 39 | tempo = mintempo + (maxtempo-mintempo)*tmp.read_u16() / 65535; |
gcme93 | 0:438bb4b2ba51 | 40 | |
gcme93 | 0:438bb4b2ba51 | 41 | tempo = (doubletime) ? 2*tempo : tempo; |
gcme93 | 0:438bb4b2ba51 | 42 | |
gcme93 | 0:438bb4b2ba51 | 43 | // DISPLAY INFO |
gcme93 | 0:438bb4b2ba51 | 44 | char signature = (k==1) ? 3/4 : 4/4; |
gcme93 | 0:438bb4b2ba51 | 45 | char percentage = 37; |
gcme93 | 0:438bb4b2ba51 | 46 | |
gcme93 | 0:438bb4b2ba51 | 47 | lcd.cls(); |
gcme93 | 0:438bb4b2ba51 | 48 | lcd.locate(0,0); |
gcme93 | 0:438bb4b2ba51 | 49 | lcd.printf("%d bpm", tempo); |
gcme93 | 0:438bb4b2ba51 | 50 | lcd.locate(1,0); |
gcme93 | 0:438bb4b2ba51 | 51 | lcd.printf("Swing: %d %c", swing, percentage); |
gcme93 | 0:438bb4b2ba51 | 52 | lcd.locate(2,0); |
gcme93 | 0:438bb4b2ba51 | 53 | lcd.printf("TimeSig: %s", signature); |
gcme93 | 0:438bb4b2ba51 | 54 | } |