Myoware
Dependencies: 4DGL-uLCD-SE mbed
main.cpp@0:f34afc468487, 2017-03-14 (annotated)
- Committer:
- kyle207
- Date:
- Tue Mar 14 14:08:16 2017 +0000
- Revision:
- 0:f34afc468487
Myoware;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kyle207 | 0:f34afc468487 | 1 | #include "mbed.h" |
kyle207 | 0:f34afc468487 | 2 | #include "uLCD_4DGL.h" |
kyle207 | 0:f34afc468487 | 3 | DigitalOut myled(LED1); |
kyle207 | 0:f34afc468487 | 4 | DigitalOut myled2(LED2); |
kyle207 | 0:f34afc468487 | 5 | DigitalOut myled3(LED3); |
kyle207 | 0:f34afc468487 | 6 | DigitalOut myled4(LED4); |
kyle207 | 0:f34afc468487 | 7 | AnalogIn signal(p20); |
kyle207 | 0:f34afc468487 | 8 | AnalogIn rawSignal(p19); |
kyle207 | 0:f34afc468487 | 9 | InterruptIn cutoffSwitch(p8); |
kyle207 | 0:f34afc468487 | 10 | Serial dev(p13,p14); |
kyle207 | 0:f34afc468487 | 11 | uLCD_4DGL uLCD(p28,p27,p11); |
kyle207 | 0:f34afc468487 | 12 | |
kyle207 | 0:f34afc468487 | 13 | void interruptRoutine() { |
kyle207 | 0:f34afc468487 | 14 | dev.printf("%f",9999); |
kyle207 | 0:f34afc468487 | 15 | myled = 1; |
kyle207 | 0:f34afc468487 | 16 | myled2 = 1; |
kyle207 | 0:f34afc468487 | 17 | myled3 = 1; |
kyle207 | 0:f34afc468487 | 18 | myled4 = 1; |
kyle207 | 0:f34afc468487 | 19 | while(1){} |
kyle207 | 0:f34afc468487 | 20 | } |
kyle207 | 0:f34afc468487 | 21 | |
kyle207 | 0:f34afc468487 | 22 | int main() { |
kyle207 | 0:f34afc468487 | 23 | float EMG[130]; |
kyle207 | 0:f34afc468487 | 24 | cutoffSwitch.rise(&interruptRoutine); |
kyle207 | 0:f34afc468487 | 25 | |
kyle207 | 0:f34afc468487 | 26 | float EMG_raw[130]; |
kyle207 | 0:f34afc468487 | 27 | int index = 5; |
kyle207 | 0:f34afc468487 | 28 | EMG[0] = 60; |
kyle207 | 0:f34afc468487 | 29 | EMG[1] = 60; |
kyle207 | 0:f34afc468487 | 30 | EMG[2] = 60; |
kyle207 | 0:f34afc468487 | 31 | EMG[3] = 60; |
kyle207 | 0:f34afc468487 | 32 | EMG[4] = 60; |
kyle207 | 0:f34afc468487 | 33 | uLCD.baudrate(600000); |
kyle207 | 0:f34afc468487 | 34 | dev.baud(9600); |
kyle207 | 0:f34afc468487 | 35 | uLCD.printf("Waiting for \nbluetooth \nhandshake signal!"); |
kyle207 | 0:f34afc468487 | 36 | uLCD.filled_rectangle(35, 55, 45, 65, RED); |
kyle207 | 0:f34afc468487 | 37 | uLCD.filled_rectangle(50, 55, 60, 65, RED); |
kyle207 | 0:f34afc468487 | 38 | uLCD.filled_rectangle(65, 55, 75, 65, RED); |
kyle207 | 0:f34afc468487 | 39 | uLCD.filled_rectangle(80, 55, 90, 65, RED); |
kyle207 | 0:f34afc468487 | 40 | int counter = 0; |
kyle207 | 0:f34afc468487 | 41 | while(!dev.readable()){ |
kyle207 | 0:f34afc468487 | 42 | if(counter/100 == 0) |
kyle207 | 0:f34afc468487 | 43 | { |
kyle207 | 0:f34afc468487 | 44 | uLCD.filled_rectangle(35, 55, 45, 65, BLACK); |
kyle207 | 0:f34afc468487 | 45 | uLCD.filled_rectangle(50, 55, 60, 65, RED); |
kyle207 | 0:f34afc468487 | 46 | uLCD.filled_rectangle(65, 55, 75, 65, RED); |
kyle207 | 0:f34afc468487 | 47 | uLCD.filled_rectangle(80, 55, 90, 65, RED); |
kyle207 | 0:f34afc468487 | 48 | } |
kyle207 | 0:f34afc468487 | 49 | if(counter/100 == 1) |
kyle207 | 0:f34afc468487 | 50 | { |
kyle207 | 0:f34afc468487 | 51 | uLCD.filled_rectangle(50, 55, 60, 65, BLACK); |
kyle207 | 0:f34afc468487 | 52 | uLCD.filled_rectangle(35, 55, 45, 65, RED); |
kyle207 | 0:f34afc468487 | 53 | uLCD.filled_rectangle(65, 55, 75, 65, RED); |
kyle207 | 0:f34afc468487 | 54 | uLCD.filled_rectangle(80, 55, 90, 65, RED); |
kyle207 | 0:f34afc468487 | 55 | } |
kyle207 | 0:f34afc468487 | 56 | if(counter/100 == 2) |
kyle207 | 0:f34afc468487 | 57 | { |
kyle207 | 0:f34afc468487 | 58 | uLCD.filled_rectangle(65, 55, 75, 65, BLACK); |
kyle207 | 0:f34afc468487 | 59 | uLCD.filled_rectangle(35, 55, 45, 65, RED); |
kyle207 | 0:f34afc468487 | 60 | uLCD.filled_rectangle(50, 55, 60, 65, RED); |
kyle207 | 0:f34afc468487 | 61 | uLCD.filled_rectangle(80, 55, 90, 65, RED); |
kyle207 | 0:f34afc468487 | 62 | } |
kyle207 | 0:f34afc468487 | 63 | if(counter/100 == 3) |
kyle207 | 0:f34afc468487 | 64 | { |
kyle207 | 0:f34afc468487 | 65 | uLCD.filled_rectangle(80, 55, 90, 65, BLACK); |
kyle207 | 0:f34afc468487 | 66 | uLCD.filled_rectangle(35, 55, 45, 65, RED); |
kyle207 | 0:f34afc468487 | 67 | uLCD.filled_rectangle(50, 55, 60, 65, RED); |
kyle207 | 0:f34afc468487 | 68 | uLCD.filled_rectangle(65, 55, 75, 65, RED); |
kyle207 | 0:f34afc468487 | 69 | |
kyle207 | 0:f34afc468487 | 70 | } |
kyle207 | 0:f34afc468487 | 71 | if(counter >= 400) |
kyle207 | 0:f34afc468487 | 72 | { |
kyle207 | 0:f34afc468487 | 73 | counter = 0; |
kyle207 | 0:f34afc468487 | 74 | } |
kyle207 | 0:f34afc468487 | 75 | counter++; |
kyle207 | 0:f34afc468487 | 76 | } |
kyle207 | 0:f34afc468487 | 77 | int choice = dev.getc(); |
kyle207 | 0:f34afc468487 | 78 | uLCD.cls(); |
kyle207 | 0:f34afc468487 | 79 | uLCD.line(5, 0, 5, 62, WHITE); |
kyle207 | 0:f34afc468487 | 80 | uLCD.line(5, 65, 5, 127, WHITE); |
kyle207 | 0:f34afc468487 | 81 | uLCD.line(0, 60, 130, 60, WHITE); |
kyle207 | 0:f34afc468487 | 82 | uLCD.line(0, 125, 130, 125, WHITE); |
kyle207 | 0:f34afc468487 | 83 | int offset = 0; |
kyle207 | 0:f34afc468487 | 84 | while(1) { |
kyle207 | 0:f34afc468487 | 85 | |
kyle207 | 0:f34afc468487 | 86 | |
kyle207 | 0:f34afc468487 | 87 | myled = !myled; |
kyle207 | 0:f34afc468487 | 88 | float voltage_rectified = signal; |
kyle207 | 0:f34afc468487 | 89 | float voltage_raw = rawSignal; |
kyle207 | 0:f34afc468487 | 90 | //EMG[index] = 60 - voltage_rectified * 60; |
kyle207 | 0:f34afc468487 | 91 | EMG_raw[index] = 150 - voltage_raw * 240; |
kyle207 | 0:f34afc468487 | 92 | EMG[index] = 60 - voltage_rectified * 55; |
kyle207 | 0:f34afc468487 | 93 | //printf("Voltage: %3f \r\n",EMG_raw[index]); |
kyle207 | 0:f34afc468487 | 94 | |
kyle207 | 0:f34afc468487 | 95 | while(!dev.writeable()){} |
kyle207 | 0:f34afc468487 | 96 | if(choice == '1') |
kyle207 | 0:f34afc468487 | 97 | { |
kyle207 | 0:f34afc468487 | 98 | dev.printf("%.2f",voltage_raw); |
kyle207 | 0:f34afc468487 | 99 | } |
kyle207 | 0:f34afc468487 | 100 | if(choice == '2') |
kyle207 | 0:f34afc468487 | 101 | { |
kyle207 | 0:f34afc468487 | 102 | dev.printf("%.2f",voltage_rectified); |
kyle207 | 0:f34afc468487 | 103 | } |
kyle207 | 0:f34afc468487 | 104 | |
kyle207 | 0:f34afc468487 | 105 | int ref = EMG[index-1]; |
kyle207 | 0:f34afc468487 | 106 | |
kyle207 | 0:f34afc468487 | 107 | if((ref > EMG[index])&&((index-1) != 4)) |
kyle207 | 0:f34afc468487 | 108 | { |
kyle207 | 0:f34afc468487 | 109 | if(index < 124) |
kyle207 | 0:f34afc468487 | 110 | { |
kyle207 | 0:f34afc468487 | 111 | uLCD.filled_rectangle(index, 0 +offset, index+5, 55 + offset, BLACK); |
kyle207 | 0:f34afc468487 | 112 | |
kyle207 | 0:f34afc468487 | 113 | } |
kyle207 | 0:f34afc468487 | 114 | while(ref > EMG[index]) |
kyle207 | 0:f34afc468487 | 115 | { |
kyle207 | 0:f34afc468487 | 116 | uLCD.pixel(index,ref+offset,RED); |
kyle207 | 0:f34afc468487 | 117 | ref = ref-3; |
kyle207 | 0:f34afc468487 | 118 | } |
kyle207 | 0:f34afc468487 | 119 | } |
kyle207 | 0:f34afc468487 | 120 | else if((ref < EMG[index])&&((index-1) != 4)) |
kyle207 | 0:f34afc468487 | 121 | { |
kyle207 | 0:f34afc468487 | 122 | if(index < 124) |
kyle207 | 0:f34afc468487 | 123 | { |
kyle207 | 0:f34afc468487 | 124 | uLCD.filled_rectangle(index, 0 +offset, index + 5, 59 + offset, BLACK); |
kyle207 | 0:f34afc468487 | 125 | |
kyle207 | 0:f34afc468487 | 126 | } |
kyle207 | 0:f34afc468487 | 127 | uLCD.filled_rectangle(index, 0 +offset, index, 59 + offset, BLACK); |
kyle207 | 0:f34afc468487 | 128 | while(ref < EMG[index]) |
kyle207 | 0:f34afc468487 | 129 | { |
kyle207 | 0:f34afc468487 | 130 | uLCD.pixel(index,ref+offset,RED); |
kyle207 | 0:f34afc468487 | 131 | ref = ref+3; |
kyle207 | 0:f34afc468487 | 132 | } |
kyle207 | 0:f34afc468487 | 133 | } |
kyle207 | 0:f34afc468487 | 134 | uLCD.pixel(index,EMG[index] + offset,RED); |
kyle207 | 0:f34afc468487 | 135 | //ADDED |
kyle207 | 0:f34afc468487 | 136 | ref = EMG_raw[index-1]; |
kyle207 | 0:f34afc468487 | 137 | if((ref > EMG_raw[index])&&((index-1) != 4)) |
kyle207 | 0:f34afc468487 | 138 | { |
kyle207 | 0:f34afc468487 | 139 | if(index < 124) |
kyle207 | 0:f34afc468487 | 140 | { |
kyle207 | 0:f34afc468487 | 141 | uLCD.filled_rectangle(index, 0 +61, index+5, 59 + 65, BLACK); |
kyle207 | 0:f34afc468487 | 142 | |
kyle207 | 0:f34afc468487 | 143 | } |
kyle207 | 0:f34afc468487 | 144 | while(ref > EMG_raw[index]) |
kyle207 | 0:f34afc468487 | 145 | { |
kyle207 | 0:f34afc468487 | 146 | uLCD.pixel(index,ref+65,GREEN); |
kyle207 | 0:f34afc468487 | 147 | ref = ref-3; |
kyle207 | 0:f34afc468487 | 148 | } |
kyle207 | 0:f34afc468487 | 149 | } |
kyle207 | 0:f34afc468487 | 150 | else if((ref < EMG_raw[index])&&((index-1) != 4)) |
kyle207 | 0:f34afc468487 | 151 | { |
kyle207 | 0:f34afc468487 | 152 | if(index < 124) |
kyle207 | 0:f34afc468487 | 153 | { |
kyle207 | 0:f34afc468487 | 154 | uLCD.filled_rectangle(index, 0 +65, index + 5, 59 + 65, BLACK); |
kyle207 | 0:f34afc468487 | 155 | |
kyle207 | 0:f34afc468487 | 156 | } |
kyle207 | 0:f34afc468487 | 157 | uLCD.filled_rectangle(index, 0 +65, index, 59 + 65, BLACK); |
kyle207 | 0:f34afc468487 | 158 | while(ref < EMG_raw[index]) |
kyle207 | 0:f34afc468487 | 159 | { |
kyle207 | 0:f34afc468487 | 160 | uLCD.pixel(index,ref+65,GREEN); |
kyle207 | 0:f34afc468487 | 161 | ref = ref+3; |
kyle207 | 0:f34afc468487 | 162 | } |
kyle207 | 0:f34afc468487 | 163 | } |
kyle207 | 0:f34afc468487 | 164 | uLCD.pixel(index,EMG_raw[index] + 65,GREEN); |
kyle207 | 0:f34afc468487 | 165 | // |
kyle207 | 0:f34afc468487 | 166 | index++; |
kyle207 | 0:f34afc468487 | 167 | |
kyle207 | 0:f34afc468487 | 168 | |
kyle207 | 0:f34afc468487 | 169 | if(index == 130) |
kyle207 | 0:f34afc468487 | 170 | { |
kyle207 | 0:f34afc468487 | 171 | index = 5; |
kyle207 | 0:f34afc468487 | 172 | |
kyle207 | 0:f34afc468487 | 173 | } |
kyle207 | 0:f34afc468487 | 174 | wait(.1); |
kyle207 | 0:f34afc468487 | 175 | } |
kyle207 | 0:f34afc468487 | 176 | } |