Myoware

Dependencies:   4DGL-uLCD-SE mbed

Committer:
kyle207
Date:
Tue Mar 14 14:08:16 2017 +0000
Revision:
0:f34afc468487
Myoware;

Who changed what in which revision?

UserRevisionLine numberNew 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 }