:)

Dependencies:   MbedJSONValue DebounceIn TextLCD USBDevice mbed WebSocketClient cc3000_hostdriver_mbedsocket Adafruit_LEDBackpack_2

Committer:
jn80842
Date:
Mon Dec 08 19:52:15 2014 +0000
Revision:
14:2d47b97c2028
Parent:
13:209da1dcb6e1
Child:
15:236d90e38951
rewritten for memory issues/code clarity

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ddrew73 0:16d2619002d7 1 #include "mbed.h"
ddrew73 1:0183a7d38878 2 #include <string>
ddrew73 0:16d2619002d7 3 #include "Adafruit_LEDBackpack.h"
ddrew73 0:16d2619002d7 4 #include "Adafruit_GFX.h"
ddrew73 0:16d2619002d7 5 #include "TextLCD.h"
ddrew73 0:16d2619002d7 6 #include "DebounceIn.h"
jn80842 3:161fed8bd027 7 #include "cc3000.h"
jn80842 3:161fed8bd027 8 #include "Websocket.h"
ddrew73 0:16d2619002d7 9
ddrew73 8:725d938b301b 10 //Debug
ddrew73 8:725d938b301b 11 Serial pc(USBTX, USBRX); // tx, rx
ddrew73 8:725d938b301b 12
ddrew73 8:725d938b301b 13 //For oscilliscope
ddrew73 8:725d938b301b 14 Timer timer;
ddrew73 8:725d938b301b 15
ddrew73 0:16d2619002d7 16 //LED stuff
ddrew73 9:5fa90677ff3e 17 I2C i2c_left(PTC11,PTC10);
ddrew73 7:7fbe8dc5e4fa 18 Adafruit_24bargraph ledbar_left=Adafruit_24bargraph(&i2c_left);
ddrew73 4:5d27966f93e4 19
ddrew73 9:5fa90677ff3e 20 I2C i2c_right(D7,D6);
ddrew73 7:7fbe8dc5e4fa 21 Adafruit_24bargraph ledbar_right=Adafruit_24bargraph(&i2c_right);
ddrew73 4:5d27966f93e4 22
jn80842 14:2d47b97c2028 23 void set_led(int index, int color) { // index range from 0-47
jn80842 14:2d47b97c2028 24 if (index<24) {
jn80842 14:2d47b97c2028 25 ledbar_left.setBar(index,color);
jn80842 14:2d47b97c2028 26 } else {
jn80842 14:2d47b97c2028 27 ledbar_right.setBar(index-24,color);
jn80842 14:2d47b97c2028 28 }
jn80842 14:2d47b97c2028 29 }
jn80842 14:2d47b97c2028 30
ddrew73 9:5fa90677ff3e 31 DebounceIn upbutton(PTA16);
ddrew73 10:cfd60b63ed11 32 DebounceIn downbutton(PTC12);
ddrew73 10:cfd60b63ed11 33 DebounceIn leftbutton(PTC17);
ddrew73 10:cfd60b63ed11 34 DebounceIn rightbutton(PTC16);
ddrew73 0:16d2619002d7 35
ddrew73 0:16d2619002d7 36 //Scanner stuff
ddrew73 0:16d2619002d7 37
ddrew73 10:cfd60b63ed11 38 DebounceIn scanbutton(PTC13);
ddrew73 0:16d2619002d7 39
ddrew73 9:5fa90677ff3e 40 DigitalOut A_in(PTB10);
ddrew73 9:5fa90677ff3e 41 DigitalOut B_in(PTB11);
ddrew73 9:5fa90677ff3e 42 DigitalOut C_in(PTE2);
ddrew73 9:5fa90677ff3e 43 DigitalOut D_in(PTE3);
ddrew73 9:5fa90677ff3e 44 DigitalOut E_in(PTE4);
ddrew73 9:5fa90677ff3e 45 DigitalOut F_in(PTE5);
ddrew73 0:16d2619002d7 46
ddrew73 0:16d2619002d7 47 AnalogIn adc(PTB0);
ddrew73 0:16d2619002d7 48
ddrew73 8:725d938b301b 49
ddrew73 0:16d2619002d7 50
ddrew73 0:16d2619002d7 51
ddrew73 0:16d2619002d7 52 //LCD stuff
jn80842 14:2d47b97c2028 53 //TextLCD(PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type = LCD16x2);
ddrew73 9:5fa90677ff3e 54 TextLCD lcd(PTC6,PTC5,D5,D4,D3,D2,TextLCD::LCD20x4);
ddrew73 0:16d2619002d7 55
jn80842 14:2d47b97c2028 56 void lcd_write_selected_info(int selected) {
jn80842 14:2d47b97c2028 57 lcd.cls();
jn80842 14:2d47b97c2028 58 lcd.locate(0,0);
jn80842 14:2d47b97c2028 59 lcd.printf("The ToastBoard");
jn80842 14:2d47b97c2028 60 lcd.locate(0,1);
jn80842 14:2d47b97c2028 61 lcd.printf("Selected row: %d",selected);
jn80842 14:2d47b97c2028 62 }
jn80842 14:2d47b97c2028 63
jn80842 14:2d47b97c2028 64 void lcd_write_voltage_info(float vddval,int selected,float rowval) {
jn80842 14:2d47b97c2028 65 lcd.cls();
jn80842 14:2d47b97c2028 66 lcd.locate(0,1);
jn80842 14:2d47b97c2028 67 lcd.printf("Vdd: %1.1f V",vddval);
jn80842 14:2d47b97c2028 68 lcd.locate(0,0);
jn80842 14:2d47b97c2028 69 lcd.printf("Row %d: %1.1f V",selected+1,rowval);
jn80842 14:2d47b97c2028 70 }
jn80842 14:2d47b97c2028 71
ddrew73 10:cfd60b63ed11 72
ddrew73 10:cfd60b63ed11 73 //WIFI STUFF
jn80842 13:209da1dcb6e1 74
ddrew73 0:16d2619002d7 75
jn80842 3:161fed8bd027 76 // cc3000 KL25Z wifi connection
jn80842 3:161fed8bd027 77 // we need to define connection pins for:
jn80842 3:161fed8bd027 78 // - IRQ => (pin D3)
jn80842 3:161fed8bd027 79 // - Enable => (pin D5)
jn80842 3:161fed8bd027 80 // - SPI CS => (pin D10)
jn80842 3:161fed8bd027 81 // - SPI MOSI => (pin D11)
jn80842 3:161fed8bd027 82 // - SPI MISO => (pin D12)
jn80842 3:161fed8bd027 83 // - SPI CLK => (pin D13)
jn80842 3:161fed8bd027 84 // plus wifi network SSID, password, security level and smart-configuration flag.
jn80842 3:161fed8bd027 85
ddrew73 9:5fa90677ff3e 86 mbed_cc3000::cc3000 wifi(D8, D9, D10, SPI(D11, D12, D13),
jn80842 14:2d47b97c2028 87 "SSID", "PASSWORD", WPA2, false);
jn80842 3:161fed8bd027 88 Websocket ws("ws://sockets.mbed.org/ws/toastboard/rw");
jn80842 3:161fed8bd027 89
jn80842 12:c4b046975527 90 void add_to_json(const std::string& s, std::back_insert_iterator<std::string> oi) {
jn80842 14:2d47b97c2028 91 // this chunk of code lifted from the MbedJSONValue
jn80842 14:2d47b97c2028 92 char buf[7];
jn80842 12:c4b046975527 93 for (std::string::const_iterator i = s.begin(); i != s.end(); ++i) {
jn80842 14:2d47b97c2028 94 if ((unsigned char)*i < 0x20 || *i == 0x7f) {
jn80842 14:2d47b97c2028 95 sprintf(buf, "\\u%04x", *i & 0xff);
jn80842 14:2d47b97c2028 96 copy(buf, buf + 6, oi);
jn80842 14:2d47b97c2028 97 } else {
jn80842 14:2d47b97c2028 98 *oi++ = *i;
jn80842 14:2d47b97c2028 99 }
jn80842 14:2d47b97c2028 100 }
jn80842 14:2d47b97c2028 101 }
jn80842 14:2d47b97c2028 102
jn80842 14:2d47b97c2028 103 std::string build_json(float vddval,int selected,float clientdata[48]) {
jn80842 14:2d47b97c2028 104 std::string s;
jn80842 14:2d47b97c2028 105 std::back_insert_iterator<std::string> json_str = std::back_inserter(s);
jn80842 14:2d47b97c2028 106 char row[1] = ""; // holder for row tokens
jn80842 14:2d47b97c2028 107 char rowvoltage[4] = ""; // holder for voltage values
jn80842 14:2d47b97c2028 108 add_to_json("{\"vddval\":",json_str);
jn80842 14:2d47b97c2028 109 sprintf(rowvoltage,"%.1f",vddval);
jn80842 14:2d47b97c2028 110 add_to_json(rowvoltage,json_str);
jn80842 14:2d47b97c2028 111 add_to_json(", \"selected\":",json_str);
jn80842 14:2d47b97c2028 112 sprintf(rowvoltage,"%d",selected);
jn80842 14:2d47b97c2028 113 add_to_json(", \"rows\": [",json_str);
jn80842 14:2d47b97c2028 114 int append_comma = 0;
jn80842 14:2d47b97c2028 115 for (int i= 0; i < 48; i++) {
jn80842 14:2d47b97c2028 116 if (clientdata[i] != 100.0) { // don't pass on floating row vals
jn80842 14:2d47b97c2028 117 if (append_comma == 1) {
jn80842 14:2d47b97c2028 118 add_to_json(",",json_str);
jn80842 14:2d47b97c2028 119 } else {
jn80842 14:2d47b97c2028 120 append_comma = 1;
jn80842 14:2d47b97c2028 121 }
jn80842 14:2d47b97c2028 122 add_to_json("{\"",json_str);
jn80842 14:2d47b97c2028 123 sprintf(row, "%d", i);
jn80842 14:2d47b97c2028 124 add_to_json(row,json_str);
jn80842 14:2d47b97c2028 125 add_to_json("\":",json_str);
jn80842 14:2d47b97c2028 126 sprintf(rowvoltage,"%.1f",clientdata[i]);
jn80842 14:2d47b97c2028 127 add_to_json(rowvoltage,json_str);
jn80842 14:2d47b97c2028 128 add_to_json("}",json_str);
jn80842 14:2d47b97c2028 129 }
jn80842 14:2d47b97c2028 130 }
jn80842 14:2d47b97c2028 131 add_to_json("]}",json_str);
jn80842 14:2d47b97c2028 132 return s;
jn80842 14:2d47b97c2028 133 }
jn80842 14:2d47b97c2028 134
jn80842 14:2d47b97c2028 135 bool voltages_equal(float voltage1,float voltage2) {
jn80842 14:2d47b97c2028 136 return (voltage1 > voltage2-0.01) && (voltage1 < voltage2+0.01);
jn80842 14:2d47b97c2028 137 }
jn80842 14:2d47b97c2028 138
jn80842 14:2d47b97c2028 139 void read_voltages(float voltages[48]) {
jn80842 14:2d47b97c2028 140 int sn = 0;
jn80842 14:2d47b97c2028 141 for (int x=0;x<2;x++) { // iterate over two columns of breadboard
jn80842 14:2d47b97c2028 142 for (int y=0;y<24;y++) { // iterate over 24 rows of each column
jn80842 14:2d47b97c2028 143 sn = (x*24)+y+1; // maybe?????
jn80842 14:2d47b97c2028 144 A_in = (sn-1)%2;
jn80842 14:2d47b97c2028 145 B_in = ((sn-1)/2)%2;
jn80842 14:2d47b97c2028 146 C_in = ((sn-1)/4)%2;
jn80842 14:2d47b97c2028 147 D_in = ((sn-1)/8)%2;
jn80842 14:2d47b97c2028 148 E_in = ((sn-1)/16)%2;
jn80842 14:2d47b97c2028 149 F_in = ((sn-1)/32)%2;
jn80842 14:2d47b97c2028 150
jn80842 14:2d47b97c2028 151 voltages[sn-1] = adc.read();
jn80842 14:2d47b97c2028 152 }
jn80842 14:2d47b97c2028 153 }
jn80842 14:2d47b97c2028 154 }
jn80842 14:2d47b97c2028 155
jn80842 14:2d47b97c2028 156 void compare_voltages(float voltages[48], float clientdata[48], int colselect, int rowselect, float vddval) {
jn80842 14:2d47b97c2028 157 // get selected row voltage
jn80842 14:2d47b97c2028 158 float rowval = voltages[(colselect*24)+rowselect];
jn80842 14:2d47b97c2028 159 for (int i=0;i<48;i++) {
jn80842 14:2d47b97c2028 160 int client_index = (colselect*24)+rowselect;
jn80842 14:2d47b97c2028 161 int sn = i+1;//(colselect+1)*(rowselect+1);
jn80842 14:2d47b97c2028 162 A_in = (sn-1)%2;
jn80842 14:2d47b97c2028 163 B_in = ((sn-1)/2)%2;
jn80842 14:2d47b97c2028 164 C_in = ((sn-1)/4)%2;
jn80842 14:2d47b97c2028 165 D_in = ((sn-1)/8)%2;
jn80842 14:2d47b97c2028 166 E_in = ((sn-1)/16)%2;
jn80842 14:2d47b97c2028 167 F_in = ((sn-1)/32)%2;
jn80842 14:2d47b97c2028 168
jn80842 14:2d47b97c2028 169 float in_val = adc.read();
jn80842 14:2d47b97c2028 170 if (!voltages_equal(voltages[i],in_val)) {
jn80842 14:2d47b97c2028 171 // this row is floating
jn80842 14:2d47b97c2028 172 set_led(i,LED_RED);
jn80842 14:2d47b97c2028 173 clientdata[client_index] = 100.0;
jn80842 14:2d47b97c2028 174 } else if (voltages_equal(voltages[i],vddval)) {
jn80842 14:2d47b97c2028 175 // this row matches vdd
jn80842 14:2d47b97c2028 176 set_led(i,LED_RED);
jn80842 14:2d47b97c2028 177 clientdata[client_index] = vddval;
jn80842 14:2d47b97c2028 178 } else if (voltages_equal(voltages[i],0.0)) {
jn80842 14:2d47b97c2028 179 // this row matches ground
jn80842 14:2d47b97c2028 180 set_led(i,LED_YELLOW);
jn80842 14:2d47b97c2028 181 clientdata[client_index] = 0.0;
jn80842 14:2d47b97c2028 182 } else if (voltages_equal(voltages[i],rowval)) {
jn80842 14:2d47b97c2028 183 // this row matches selected row
jn80842 14:2d47b97c2028 184 set_led(i,LED_GREEN);
jn80842 14:2d47b97c2028 185 clientdata[client_index] = rowval;
jn80842 14:2d47b97c2028 186 } else {
jn80842 14:2d47b97c2028 187 clientdata[client_index] = voltages[i];
jn80842 12:c4b046975527 188 }
jn80842 12:c4b046975527 189 }
jn80842 12:c4b046975527 190 }
jn80842 12:c4b046975527 191
ddrew73 7:7fbe8dc5e4fa 192
ddrew73 0:16d2619002d7 193 int main()
ddrew73 0:16d2619002d7 194 {
ddrew73 0:16d2619002d7 195
ddrew73 0:16d2619002d7 196 //Scan init
jn80842 14:2d47b97c2028 197 float originalvoltages[48] = {};
ddrew73 7:7fbe8dc5e4fa 198 float clientdata[48] = {};
jn80842 14:2d47b97c2028 199 float vddval = 0.0;
ddrew73 0:16d2619002d7 200
ddrew73 0:16d2619002d7 201 //LED init
ddrew73 7:7fbe8dc5e4fa 202 int rowselect = 0, moved = 1, colselect = 0, selected = 0;
ddrew73 4:5d27966f93e4 203 ledbar_left.begin(0x70);
ddrew73 4:5d27966f93e4 204 ledbar_left.clear();
ddrew73 4:5d27966f93e4 205 ledbar_left.writeDisplay();
ddrew73 5:03d75ad40d5e 206
ddrew73 4:5d27966f93e4 207 ledbar_right.begin(0x70);
ddrew73 4:5d27966f93e4 208 ledbar_right.clear();
ddrew73 4:5d27966f93e4 209 ledbar_right.writeDisplay();
ddrew73 0:16d2619002d7 210
ddrew73 0:16d2619002d7 211 //LCD init
ddrew73 0:16d2619002d7 212 lcd.cls();
jn80842 14:2d47b97c2028 213 int written = 0;
jn80842 14:2d47b97c2028 214
jn80842 13:209da1dcb6e1 215 wifi.init();
ddrew73 11:b520586dc0a1 216
ddrew73 9:5fa90677ff3e 217 //Osci
ddrew73 9:5fa90677ff3e 218 int loopcount = 0, pressed = 0;
ddrew73 9:5fa90677ff3e 219 float begintime = 0, endtime = 0, elapsed = 0;
ddrew73 0:16d2619002d7 220
ddrew73 0:16d2619002d7 221
ddrew73 0:16d2619002d7 222 while(1) {
jn80842 14:2d47b97c2028 223 if (wifi.is_connected() == false) {
jn80842 14:2d47b97c2028 224 pc.printf("trying to connect to wifi\r\n");
jn80842 14:2d47b97c2028 225 if (wifi.connect() == -1) {
jn80842 14:2d47b97c2028 226 pc.printf("Failed to connect\r\n");
jn80842 14:2d47b97c2028 227 } else {
jn80842 14:2d47b97c2028 228 pc.printf("IP address: %s \r\n", wifi.getIPAddress());
jn80842 14:2d47b97c2028 229 }
jn80842 14:2d47b97c2028 230 } else {
jn80842 14:2d47b97c2028 231 Websocket ws("ws://sockets.mbed.org/ws/toastboard/rw");
jn80842 14:2d47b97c2028 232 ws.connect();
jn80842 14:2d47b97c2028 233 }
ddrew73 5:03d75ad40d5e 234
ddrew73 0:16d2619002d7 235 //Display
jn80842 14:2d47b97c2028 236 if (moved ==1) {
ddrew73 5:03d75ad40d5e 237 ledbar_left.clear();
ddrew73 5:03d75ad40d5e 238 ledbar_right.clear();
jn80842 14:2d47b97c2028 239 set_led((colselect*24+rowselect),LED_GREEN);
ddrew73 5:03d75ad40d5e 240 ledbar_left.writeDisplay();
ddrew73 5:03d75ad40d5e 241 ledbar_right.writeDisplay();
ddrew73 7:7fbe8dc5e4fa 242 }
ddrew73 0:16d2619002d7 243 //Moving the selected row
ddrew73 0:16d2619002d7 244 if (upbutton.read() == 0) {
ddrew73 0:16d2619002d7 245 rowselect = rowselect-1;
ddrew73 0:16d2619002d7 246 moved = 1;
jn80842 14:2d47b97c2028 247 written = 0;
ddrew73 0:16d2619002d7 248 wait(0.75);
ddrew73 0:16d2619002d7 249 }
ddrew73 0:16d2619002d7 250
ddrew73 0:16d2619002d7 251 if (downbutton.read() == 0) {
ddrew73 0:16d2619002d7 252 rowselect = rowselect+1;
ddrew73 0:16d2619002d7 253 moved = 1;
jn80842 14:2d47b97c2028 254 written = 0;
ddrew73 0:16d2619002d7 255 wait(0.75);
ddrew73 0:16d2619002d7 256 }
ddrew73 5:03d75ad40d5e 257
ddrew73 4:5d27966f93e4 258 if (leftbutton.read() == 0) {
ddrew73 4:5d27966f93e4 259 colselect = 0;
ddrew73 5:03d75ad40d5e 260 ledbar_right.clear();
ddrew73 5:03d75ad40d5e 261 moved =1;
jn80842 14:2d47b97c2028 262 written = 0;
ddrew73 4:5d27966f93e4 263 wait(0.75);
ddrew73 4:5d27966f93e4 264 }
ddrew73 5:03d75ad40d5e 265
ddrew73 4:5d27966f93e4 266 if (rightbutton.read() == 0) {
ddrew73 4:5d27966f93e4 267 colselect = 1;
ddrew73 5:03d75ad40d5e 268 ledbar_left.clear();
ddrew73 5:03d75ad40d5e 269 moved =1;
jn80842 14:2d47b97c2028 270 written = 0;
ddrew73 4:5d27966f93e4 271 wait(0.75);
ddrew73 5:03d75ad40d5e 272 }
ddrew73 0:16d2619002d7 273
ddrew73 0:16d2619002d7 274 //Boundary checking
ddrew73 0:16d2619002d7 275 if (rowselect > 23) {
ddrew73 0:16d2619002d7 276 rowselect = 23;
ddrew73 0:16d2619002d7 277 }
ddrew73 0:16d2619002d7 278 if (rowselect < 0) {
ddrew73 0:16d2619002d7 279 rowselect = 0;
ddrew73 0:16d2619002d7 280 }
ddrew73 0:16d2619002d7 281
ddrew73 0:16d2619002d7 282 //Implementing scanning
ddrew73 0:16d2619002d7 283
ddrew73 0:16d2619002d7 284 if (scanbutton.read() == 0) {
ddrew73 7:7fbe8dc5e4fa 285 A_in = 1;
ddrew73 7:7fbe8dc5e4fa 286 B_in = 1;
ddrew73 7:7fbe8dc5e4fa 287 C_in = 1;
ddrew73 7:7fbe8dc5e4fa 288 D_in = 1;
ddrew73 7:7fbe8dc5e4fa 289 E_in = 1;
ddrew73 7:7fbe8dc5e4fa 290 F_in = 1;
ddrew73 11:b520586dc0a1 291
ddrew73 7:7fbe8dc5e4fa 292 vddval = adc.read();
ddrew73 0:16d2619002d7 293
ddrew73 7:7fbe8dc5e4fa 294 ledbar_left.clear();
ddrew73 7:7fbe8dc5e4fa 295 ledbar_right.clear();
ddrew73 1:0183a7d38878 296
jn80842 14:2d47b97c2028 297 // first set of voltages read into old_volt_mat
jn80842 14:2d47b97c2028 298 read_voltages(originalvoltages);
jn80842 14:2d47b97c2028 299 // second set for comparison, read into clientdata
jn80842 14:2d47b97c2028 300 compare_voltages(originalvoltages,clientdata,colselect,rowselect,vddval);
ddrew73 0:16d2619002d7 301
jn80842 14:2d47b97c2028 302 selected = rowselect;
jn80842 14:2d47b97c2028 303 if (colselect == 1) {
jn80842 14:2d47b97c2028 304 selected = selected+24;
jn80842 14:2d47b97c2028 305 }
ddrew73 11:b520586dc0a1 306
jn80842 14:2d47b97c2028 307 written = 0;
jn80842 14:2d47b97c2028 308 moved = 0;
ddrew73 11:b520586dc0a1 309
ddrew73 8:725d938b301b 310 //DEBUGGING TOOLS //////////////
ddrew73 11:b520586dc0a1 311
jn80842 14:2d47b97c2028 312 pc.printf("\r\n%1.3f %1.3f \r\n", vddval, clientdata[selected]);
jn80842 14:2d47b97c2028 313 for (int i = 0; i<48; i++) {
jn80842 14:2d47b97c2028 314 pc.printf(" %1.3f ", clientdata[i]);
jn80842 14:2d47b97c2028 315 }
jn80842 14:2d47b97c2028 316 pc.printf(" \r\n \r\n ");
jn80842 14:2d47b97c2028 317 for (int x = 0; x < 48; x++) {
jn80842 14:2d47b97c2028 318 pc.printf("%1.3f \r\n", originalvoltages[x]);
jn80842 14:2d47b97c2028 319 }
jn80842 14:2d47b97c2028 320 ////////////////////////
ddrew73 11:b520586dc0a1 321
ddrew73 11:b520586dc0a1 322
jn80842 14:2d47b97c2028 323 wait(1); //THIS NEEDS TO GO AWAY!
ddrew73 11:b520586dc0a1 324
ddrew73 11:b520586dc0a1 325 } // END OF SCANBUTTON IF STATEMENT
ddrew73 11:b520586dc0a1 326
jn80842 14:2d47b97c2028 327 if (moved==0 && written == 0) {
ddrew73 7:7fbe8dc5e4fa 328 ledbar_left.writeDisplay();
ddrew73 7:7fbe8dc5e4fa 329 ledbar_right.writeDisplay();
jn80842 14:2d47b97c2028 330 lcd_write_voltage_info(vddval,selected+1,clientdata[selected]);
jn80842 13:209da1dcb6e1 331 // send data to websocket
jn80842 14:2d47b97c2028 332 if (wifi.is_connected()) {
jn80842 14:2d47b97c2028 333 std::string json = build_json(vddval,selected,clientdata);
jn80842 14:2d47b97c2028 334 char * writable = new char[json.size() + 1];
jn80842 14:2d47b97c2028 335 std::copy(json.begin(), json.end(), writable);
jn80842 14:2d47b97c2028 336 writable[json.size()] = '\0';
jn80842 14:2d47b97c2028 337 ws.send(writable);
jn80842 14:2d47b97c2028 338 delete[] writable;
jn80842 14:2d47b97c2028 339 delete[] &json;
jn80842 14:2d47b97c2028 340 }
jn80842 14:2d47b97c2028 341 written = 1;
jn80842 14:2d47b97c2028 342 } else if (written == 0) {
jn80842 14:2d47b97c2028 343 lcd_write_selected_info(selected);
jn80842 14:2d47b97c2028 344 written = 1;
ddrew73 11:b520586dc0a1 345 }
ddrew73 5:03d75ad40d5e 346
ddrew73 5:03d75ad40d5e 347
ddrew73 5:03d75ad40d5e 348
ddrew73 5:03d75ad40d5e 349
ddrew73 4:5d27966f93e4 350
ddrew73 11:b520586dc0a1 351
ddrew73 7:7fbe8dc5e4fa 352
ddrew73 7:7fbe8dc5e4fa 353
ddrew73 0:16d2619002d7 354
ddrew73 0:16d2619002d7 355
ddrew73 4:5d27966f93e4 356
ddrew73 4:5d27966f93e4 357
ddrew73 4:5d27966f93e4 358
ddrew73 7:7fbe8dc5e4fa 359 } // END OF WHILE(1)
ddrew73 7:7fbe8dc5e4fa 360
ddrew73 7:7fbe8dc5e4fa 361
ddrew73 7:7fbe8dc5e4fa 362
ddrew73 4:5d27966f93e4 363
ddrew73 7:7fbe8dc5e4fa 364 } // END OF INT MAIN
ddrew73 7:7fbe8dc5e4fa 365
ddrew73 7:7fbe8dc5e4fa 366
ddrew73 11:b520586dc0a1 367 /*
ddrew73 11:b520586dc0a1 368 FLOAT NODE CHECKER
ddrew73 11:b520586dc0a1 369 add another "for" around the two for the 48 row checker:
ddrew73 8:725d938b301b 370
ddrew73 11:b520586dc0a1 371 if (u == 0){
jn80842 14:2d47b97c2028 372 old_volt_mat[x,y] = in_val
ddrew73 11:b520586dc0a1 373 }
ddrew73 11:b520586dc0a1 374 else{
jn80842 14:2d47b97c2028 375 volt_mat[x,y] = in_val
jn80842 14:2d47b97c2028 376 if (old_volt_mat[x,y] != volt_mat[x,y] ) {
jn80842 14:2d47b97c2028 377 volt_mat[x,y] = 100;
ddrew73 11:b520586dc0a1 378 }
ddrew73 11:b520586dc0a1 379
ddrew73 11:b520586dc0a1 380 PUT ALL ROW LIGHTING (CON_MAT) STUFF HERE
ddrew73 8:725d938b301b 381 }
ddrew73 8:725d938b301b 382
ddrew73 11:b520586dc0a1 383 */
ddrew73 8:725d938b301b 384
ddrew73 11:b520586dc0a1 385 /*
ddrew73 11:b520586dc0a1 386 OSCILLISCOPE
ddrew73 7:7fbe8dc5e4fa 387
ddrew73 7:7fbe8dc5e4fa 388
ddrew73 11:b520586dc0a1 389 while (scanbutton == 0){
ddrew73 11:b520586dc0a1 390 if (loopcount = 0){
ddrew73 11:b520586dc0a1 391 timer.reset();
ddrew73 11:b520586dc0a1 392 timer.start();
ddrew73 11:b520586dc0a1 393 begintime = timer.read_ms();
ddrew73 11:b520586dc0a1 394 pressed == 1;
ddrew73 11:b520586dc0a1 395 }
ddrew73 7:7fbe8dc5e4fa 396
ddrew73 11:b520586dc0a1 397 int sn = (colselect + 1)*(rowselect + 1);
ddrew73 11:b520586dc0a1 398 A_in = (sn-1)&2;
ddrew73 11:b520586dc0a1 399 B_in = ((sn-1)/2)%2;
ddrew73 11:b520586dc0a1 400 C_in = ((sn-1)/4)%2;
ddrew73 11:b520586dc0a1 401 D_in = ((sn-1)/8)%2;
ddrew73 11:b520586dc0a1 402 E_in = ((sn-1)/16)%2;
ddrew73 11:b520586dc0a1 403 F_in = ((sn-1)/32)%2;
ddrew73 11:b520586dc0a1 404 volt_buffer[loopcount] = adc.read();
ddrew73 8:725d938b301b 405
ddrew73 8:725d938b301b 406
ddrew73 11:b520586dc0a1 407 loopcount = loopcount +1;
ddrew73 11:b520586dc0a1 408 } // BREAK THE WHILE SCANBUTTON
ddrew73 8:725d938b301b 409
ddrew73 11:b520586dc0a1 410 if (pressed == 1){
ddrew73 11:b520586dc0a1 411 timer.stop();
ddrew73 11:b520586dc0a1 412 endtime = timer.read_ms();
ddrew73 11:b520586dc0a1 413 elapsed = endtime - begintime;
ddrew73 8:725d938b301b 414
ddrew73 11:b520586dc0a1 415 DO ENTIRE SCAN STUFF
ddrew73 8:725d938b301b 416
ddrew73 11:b520586dc0a1 417 pressed = 0;
ddrew73 11:b520586dc0a1 418 }
ddrew73 8:725d938b301b 419
ddrew73 11:b520586dc0a1 420 */