IGGE Power board

Dependencies:   mbed ADS1015 USBDevice MCP4725

Committer:
jamesdem1123
Date:
Thu May 08 01:50:11 2014 +0000
Revision:
7:cdd74b6e2595
Parent:
6:7691e36d2337
fix zac

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jamesdem1123 1:dd6f8dc1e54e 1
jamesdem1123 0:54d5ccfcb14c 2 #include "mbed.h"
jamesdem1123 1:dd6f8dc1e54e 3 #include "Adafruit_ADS1015.h"
jamesdem1123 4:d29a7b77b1c6 4 //#include "USBSerial.h"
jamesdem1123 1:dd6f8dc1e54e 5
jamesdem1123 4:d29a7b77b1c6 6 #include <iostream>
jamesdem1123 4:d29a7b77b1c6 7 #include <map>
jamesdem1123 4:d29a7b77b1c6 8 #include <string>
jamesdem1123 4:d29a7b77b1c6 9 #include <stdio.h>
jamesdem1123 4:d29a7b77b1c6 10
jamesdem1123 6:7691e36d2337 11 #define SERIALOUT
jamesdem1123 6:7691e36d2337 12
jamesdem1123 4:d29a7b77b1c6 13 //#define SERIAL_BAUD_RATE 9600
jamesdem1123 1:dd6f8dc1e54e 14
jamesdem1123 1:dd6f8dc1e54e 15 //library function setup
jamesdem1123 1:dd6f8dc1e54e 16 I2C i2c(p28, p27);
jamesdem1123 1:dd6f8dc1e54e 17 Adafruit_ADS1015 ads(&i2c);
jamesdem1123 4:d29a7b77b1c6 18 //USBSerial pc; // USB CDC serial port
jamesdem1123 2:321c8783ea30 19 Ticker graph;
jamesdem1123 1:dd6f8dc1e54e 20
jamesdem1123 4:d29a7b77b1c6 21
jamesdem1123 4:d29a7b77b1c6 22 //can stuff
jamesdem1123 4:d29a7b77b1c6 23 Ticker ticker;
jamesdem1123 6:7691e36d2337 24 //CAN can1(p9, p10);
jamesdem1123 4:d29a7b77b1c6 25 CAN can2(p30, p29);
jamesdem1123 4:d29a7b77b1c6 26 char counter[8] = {1,1,1,1,1,1,1,1};
jamesdem1123 4:d29a7b77b1c6 27 int test=0x0;
jamesdem1123 4:d29a7b77b1c6 28 char counter2=0;
jamesdem1123 4:d29a7b77b1c6 29
jamesdem1123 4:d29a7b77b1c6 30
jamesdem1123 6:7691e36d2337 31 bool fromUsr[5] = {false,false,false,false,false}; //cpupwr, cpu rst, sensor, net, usrint
jamesdem1123 6:7691e36d2337 32
jamesdem1123 6:7691e36d2337 33
jamesdem1123 4:d29a7b77b1c6 34
jamesdem1123 1:dd6f8dc1e54e 35 //leds
jamesdem1123 1:dd6f8dc1e54e 36 DigitalOut led0(LED1);
jamesdem1123 1:dd6f8dc1e54e 37 DigitalOut led1(LED2);
jamesdem1123 1:dd6f8dc1e54e 38 DigitalOut led2(LED3);
jamesdem1123 1:dd6f8dc1e54e 39 DigitalOut led3(LED4);
jamesdem1123 0:54d5ccfcb14c 40
jamesdem1123 1:dd6f8dc1e54e 41 //current readings
jamesdem1123 4:d29a7b77b1c6 42 AnalogIn iBat(p15); //75a PROTO
jamesdem1123 1:dd6f8dc1e54e 43 AnalogIn iTwelve(p17); //31a
jamesdem1123 4:d29a7b77b1c6 44 AnalogIn iFive(p18);//31a PROTO
jamesdem1123 1:dd6f8dc1e54e 45 AnalogIn iMot(p16);//75a
jamesdem1123 1:dd6f8dc1e54e 46 AnalogIn iCpu(p20);//31a
jamesdem1123 1:dd6f8dc1e54e 47 AnalogIn iPeri(p19);//31a
jamesdem1123 1:dd6f8dc1e54e 48
jamesdem1123 1:dd6f8dc1e54e 49 //voltage scalers
jamesdem1123 1:dd6f8dc1e54e 50 #define batScal 12.2
jamesdem1123 1:dd6f8dc1e54e 51 #define motScal 12.2
jamesdem1123 1:dd6f8dc1e54e 52 #define twelveScal 12.2
jamesdem1123 1:dd6f8dc1e54e 53 #define fiveScal 12.2
jamesdem1123 1:dd6f8dc1e54e 54
jamesdem1123 1:dd6f8dc1e54e 55 //Relays
jamesdem1123 5:6b90ed7f3eb1 56 DigitalOut relSens(p21); // PROTO
jamesdem1123 6:7691e36d2337 57 DigitalOut relUsr(p24);
jamesdem1123 1:dd6f8dc1e54e 58 DigitalOut relNet(p23);
jamesdem1123 6:7691e36d2337 59 DigitalOut relCpuRst(p22);
jamesdem1123 1:dd6f8dc1e54e 60 DigitalOut relCpuPower(p25);
jamesdem1123 1:dd6f8dc1e54e 61
jamesdem1123 0:54d5ccfcb14c 62
jamesdem1123 1:dd6f8dc1e54e 63 //30 minute graph arrays
jamesdem1123 4:d29a7b77b1c6 64 uint16_t powerArr [10]; //{iBat,vBat,iTwelve, vTwelve, iFive, vFive, iMot, vMot, iCpu, iPeri}
jamesdem1123 5:6b90ed7f3eb1 65 uint16_t ibat,vbat,itwelve, vtwelve, ifive, vfive, imot, vmot, icpu, iperi= 0;
jamesdem1123 4:d29a7b77b1c6 66
jamesdem1123 1:dd6f8dc1e54e 67
jamesdem1123 1:dd6f8dc1e54e 68
jamesdem1123 1:dd6f8dc1e54e 69 //volt
jamesdem1123 1:dd6f8dc1e54e 70 uint16_t vBat, vTwelve,vFive,vMot ;
jamesdem1123 1:dd6f8dc1e54e 71
jamesdem1123 2:321c8783ea30 72
jamesdem1123 4:d29a7b77b1c6 73
jamesdem1123 4:d29a7b77b1c6 74 void sending_values(long int int1,long int int2,long int int3,long int int4, int ID )
jamesdem1123 4:d29a7b77b1c6 75 {
jamesdem1123 4:d29a7b77b1c6 76 //val();
jamesdem1123 5:6b90ed7f3eb1 77 led1=1;
jamesdem1123 4:d29a7b77b1c6 78 counter[0]=int1 >> 8;
jamesdem1123 4:d29a7b77b1c6 79 counter[1]=int1 & 0xFF;
jamesdem1123 4:d29a7b77b1c6 80 counter[2]=int2 >> 8;
jamesdem1123 4:d29a7b77b1c6 81 counter[3]=int2 & 0xFF;
jamesdem1123 4:d29a7b77b1c6 82 counter[4]=int3 >> 8;
jamesdem1123 4:d29a7b77b1c6 83 counter[5]=int3 & 0xFF;
jamesdem1123 4:d29a7b77b1c6 84 counter[6]=int4 >> 8;
jamesdem1123 4:d29a7b77b1c6 85 counter[7]=int4 & 0xFF;
jamesdem1123 6:7691e36d2337 86 led2=1;
jamesdem1123 6:7691e36d2337 87 if(can2.write(CANMessage(ID, counter, 8))) {
jamesdem1123 5:6b90ed7f3eb1 88
jamesdem1123 6:7691e36d2337 89 // printf("Message sent: %x%x\r\n", counter[1],counter[0]);
jamesdem1123 7:cdd74b6e2595 90 // printf("Should be: %d, %d, %d, %d\r\n", int1,int2,int3,int4);");
jamesdem1123 7:cdd74b6e2595 91 led1=0;
jamesdem1123 5:6b90ed7f3eb1 92 }
jamesdem1123 7:cdd74b6e2595 93 else
jamesdem1123 7:cdd74b6e2595 94 printf("CAN ERROR");
jamesdem1123 7:cdd74b6e2595 95
jamesdem1123 4:d29a7b77b1c6 96 }
jamesdem1123 4:d29a7b77b1c6 97
jamesdem1123 4:d29a7b77b1c6 98
jamesdem1123 5:6b90ed7f3eb1 99
jamesdem1123 4:d29a7b77b1c6 100
jamesdem1123 4:d29a7b77b1c6 101
jamesdem1123 4:d29a7b77b1c6 102
jamesdem1123 6:7691e36d2337 103 void Can_main(long int val1,long int val2,long int val3,long int val4, int the_ID)
jamesdem1123 5:6b90ed7f3eb1 104 {
jamesdem1123 4:d29a7b77b1c6 105
jamesdem1123 4:d29a7b77b1c6 106 std::map <int,string> CanIDMap;
jamesdem1123 4:d29a7b77b1c6 107
jamesdem1123 6:7691e36d2337 108 CanIDMap[0]=" ";
jamesdem1123 6:7691e36d2337 109 CanIDMap[1]="Message id 1: Batt Cur, Batt Volt, Twelve Cur, Twelve Volt";
jamesdem1123 6:7691e36d2337 110 CanIDMap[2]="Message id 2: Five Cur, Five Volt, Mot Cur, Mot Volt,";
jamesdem1123 6:7691e36d2337 111 CanIDMap[3]="Message id 3: Cpu Cur, Perifferal Cur, null, null....";
jamesdem1123 6:7691e36d2337 112 CanIDMap[4]="Message id 4: Network switch, usrint switch, sensor on switch, null";
jamesdem1123 6:7691e36d2337 113 CanIDMap[5]="Message id 5: cpupwr switch, cpu rst switch,null,null.";
jamesdem1123 6:7691e36d2337 114 CanIDMap[6]=" ";
jamesdem1123 6:7691e36d2337 115 CanIDMap[7]=" ";
jamesdem1123 6:7691e36d2337 116 CanIDMap[8]=" ";
jamesdem1123 6:7691e36d2337 117 CanIDMap[9]=" ";
jamesdem1123 6:7691e36d2337 118 CanIDMap[10]=" ";
jamesdem1123 6:7691e36d2337 119 CanIDMap[11]=" ";
jamesdem1123 6:7691e36d2337 120 CanIDMap[12]="Zac is the Worst";
jamesdem1123 6:7691e36d2337 121 CanIDMap[13]="Auto";
jamesdem1123 6:7691e36d2337 122 CanIDMap[14]="Manual";
jamesdem1123 6:7691e36d2337 123
jamesdem1123 6:7691e36d2337 124
jamesdem1123 4:d29a7b77b1c6 125
jamesdem1123 5:6b90ed7f3eb1 126
jamesdem1123 5:6b90ed7f3eb1 127
jamesdem1123 4:d29a7b77b1c6 128 //ticker.attach(&sending_values,1);
jamesdem1123 4:d29a7b77b1c6 129 CANMessage msg;
jamesdem1123 4:d29a7b77b1c6 130 int fixer1=0;
jamesdem1123 4:d29a7b77b1c6 131 int fixer2=0;
jamesdem1123 4:d29a7b77b1c6 132 int fixer3=0;
jamesdem1123 4:d29a7b77b1c6 133 int fixer4=0;
jamesdem1123 5:6b90ed7f3eb1 134
jamesdem1123 6:7691e36d2337 135
jamesdem1123 5:6b90ed7f3eb1 136 if(can2.read(msg)) {
jamesdem1123 5:6b90ed7f3eb1 137 bool tester= CanIDMap.find(msg.id) != CanIDMap.end();
jamesdem1123 5:6b90ed7f3eb1 138 if (tester) {
jamesdem1123 6:7691e36d2337 139 //printf("Message received: %x %x \r\n", msg.data[0], msg.data[1]);
jamesdem1123 5:6b90ed7f3eb1 140
jamesdem1123 4:d29a7b77b1c6 141 //printf("ID of message: %s \r\n", CanIDMap[msg.id]);
jamesdem1123 5:6b90ed7f3eb1 142
jamesdem1123 4:d29a7b77b1c6 143 std::string str=CanIDMap[msg.id];
jamesdem1123 4:d29a7b77b1c6 144 unsigned pos = str.find("_"); // position of "_" in str
jamesdem1123 4:d29a7b77b1c6 145 std::string str3 = str.substr (pos+1); // get from past"_" to the end
jamesdem1123 5:6b90ed7f3eb1 146 // printf("Dealing with: %s \r\n",str3);
jamesdem1123 4:d29a7b77b1c6 147 fixer1=((msg.data[0]<<8) | (msg.data[1]));
jamesdem1123 4:d29a7b77b1c6 148 fixer2=((msg.data[2]<<8) | (msg.data[3]));
jamesdem1123 4:d29a7b77b1c6 149 fixer3=((msg.data[4]<<8) | (msg.data[5]));
jamesdem1123 4:d29a7b77b1c6 150 fixer4=((msg.data[6]<<8) | (msg.data[7]));
jamesdem1123 6:7691e36d2337 151 if(msg.id==4) { // "Message id 4: Network switch, usrint switch, sensor on switch, null";
jamesdem1123 6:7691e36d2337 152 fromUsr[3]=fixer1; //fromUsr=cpupwr, cpu rst, sensor, net, usrint
jamesdem1123 6:7691e36d2337 153 fromUsr[4]= fixer2;
jamesdem1123 6:7691e36d2337 154 fromUsr[2]=fixer3;
jamesdem1123 6:7691e36d2337 155 }
jamesdem1123 6:7691e36d2337 156
jamesdem1123 6:7691e36d2337 157
jamesdem1123 6:7691e36d2337 158 else if(msg.id==5) { // "Message id 5: cpupwr switch, cpu rst switch,";
jamesdem1123 6:7691e36d2337 159 fromUsr[0]=fixer1; //fromUsr=cpupwr, cpu rst, sensor, net, usrint
jamesdem1123 6:7691e36d2337 160 fromUsr[1]= fixer2;
jamesdem1123 6:7691e36d2337 161
jamesdem1123 6:7691e36d2337 162
jamesdem1123 6:7691e36d2337 163 }
jamesdem1123 6:7691e36d2337 164
jamesdem1123 6:7691e36d2337 165 else{
jamesdem1123 6:7691e36d2337 166 led3=!led3;
jamesdem1123 6:7691e36d2337 167 }
jamesdem1123 4:d29a7b77b1c6 168 led2 = !led2;
jamesdem1123 5:6b90ed7f3eb1 169
jamesdem1123 6:7691e36d2337 170 // printf("Resulting Answer back is: %d, %d, %d, %d\r\n\r\n\r\n",fixer1,fixer2,fixer3,fixer4 );
jamesdem1123 5:6b90ed7f3eb1 171
jamesdem1123 4:d29a7b77b1c6 172 }
jamesdem1123 4:d29a7b77b1c6 173
jamesdem1123 5:6b90ed7f3eb1 174 else {
jamesdem1123 5:6b90ed7f3eb1 175
jamesdem1123 6:7691e36d2337 176 // printf("Can Message, not related to this controller\r\n\r\n");
jamesdem1123 5:6b90ed7f3eb1 177
jamesdem1123 5:6b90ed7f3eb1 178 }
jamesdem1123 5:6b90ed7f3eb1 179
jamesdem1123 5:6b90ed7f3eb1 180 //wait(0.2);
jamesdem1123 4:d29a7b77b1c6 181 }
jamesdem1123 4:d29a7b77b1c6 182
jamesdem1123 5:6b90ed7f3eb1 183
jamesdem1123 5:6b90ed7f3eb1 184
jamesdem1123 4:d29a7b77b1c6 185
jamesdem1123 4:d29a7b77b1c6 186
jamesdem1123 4:d29a7b77b1c6 187 }
jamesdem1123 4:d29a7b77b1c6 188
jamesdem1123 4:d29a7b77b1c6 189
jamesdem1123 4:d29a7b77b1c6 190
jamesdem1123 4:d29a7b77b1c6 191
jamesdem1123 5:6b90ed7f3eb1 192 void sendArray (void)
jamesdem1123 2:321c8783ea30 193 {
jamesdem1123 6:7691e36d2337 194 #ifdef SERIALOUT
jamesdem1123 5:6b90ed7f3eb1 195 printf("___________________________\r\n");
jamesdem1123 5:6b90ed7f3eb1 196 printf("Sending messages....\r\n");
jamesdem1123 5:6b90ed7f3eb1 197 printf("Message id 1: Batt Cur = %d, Batt Volt = %d, Twelve Cur = %d, Twelve Volt = %d....",powerArr[0],powerArr[1],powerArr[2],powerArr[3]);
jamesdem1123 5:6b90ed7f3eb1 198 sending_values(powerArr[0],powerArr[1],powerArr[2],powerArr[3],1);
jamesdem1123 5:6b90ed7f3eb1 199 printf("....sent\r\n");
jamesdem1123 5:6b90ed7f3eb1 200 printf("Message id 2: Five Cur = %d, Five Volt = %d, Mot Cur = %d, Mot Volt = %d....",powerArr[4],powerArr[5],powerArr[6],powerArr[7]);
jamesdem1123 5:6b90ed7f3eb1 201 sending_values(powerArr[4],powerArr[5],powerArr[6],powerArr[7],2);
jamesdem1123 5:6b90ed7f3eb1 202 printf("....sent\r\n");
jamesdem1123 6:7691e36d2337 203 printf("Message id 3: Cpu Cur = %d, Perifferal Cur = %d, null, null....",powerArr[8],powerArr[9]);
jamesdem1123 5:6b90ed7f3eb1 204 sending_values(powerArr[8],powerArr[9],0,0,3);
jamesdem1123 5:6b90ed7f3eb1 205 printf("....sent\r\n");
jamesdem1123 5:6b90ed7f3eb1 206 printf("CANBUS TRANMISSION COMPLETE\r\n");
jamesdem1123 5:6b90ed7f3eb1 207 printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~\r\n");
jamesdem1123 6:7691e36d2337 208 //relNet=!relNet;
jamesdem1123 7:cdd74b6e2595 209 // relSens= !relSens;
jamesdem1123 6:7691e36d2337 210
jamesdem1123 6:7691e36d2337 211
jamesdem1123 6:7691e36d2337 212 //relCpuPower=!relCpuPower;
jamesdem1123 6:7691e36d2337 213 //relCpuRst =!relCpuRst;
jamesdem1123 6:7691e36d2337 214 // relUsr=!relUsr;
jamesdem1123 5:6b90ed7f3eb1 215 float neW =(powerArr[1]*.003);
jamesdem1123 5:6b90ed7f3eb1 216 printf("actual vbat= %2.4f volt\r\n", neW);
jamesdem1123 6:7691e36d2337 217 #endif
jamesdem1123 6:7691e36d2337 218 #ifndef SERIALOUT
jamesdem1123 6:7691e36d2337 219 sending_values(powerArr[0],powerArr[1],powerArr[2],powerArr[3],1);
jamesdem1123 6:7691e36d2337 220 sending_values(powerArr[4],powerArr[5],powerArr[6],powerArr[7],2);
jamesdem1123 6:7691e36d2337 221 sending_values(powerArr[8],powerArr[9],0,0,3);
jamesdem1123 7:cdd74b6e2595 222 // relNet=!relNet;
jamesdem1123 7:cdd74b6e2595 223 //relSens= !relSens;
jamesdem1123 6:7691e36d2337 224
jamesdem1123 7:cdd74b6e2595 225 //relCpuPower=!relCpuPower;
jamesdem1123 7:cdd74b6e2595 226 //relCpuRst =!relCpuRst;
jamesdem1123 7:cdd74b6e2595 227 // relUsr=!relUsr;
jamesdem1123 6:7691e36d2337 228 #endif
jamesdem1123 6:7691e36d2337 229
jamesdem1123 5:6b90ed7f3eb1 230 }
jamesdem1123 2:321c8783ea30 231
jamesdem1123 2:321c8783ea30 232
jamesdem1123 2:321c8783ea30 233
jamesdem1123 1:dd6f8dc1e54e 234 void setup(void)
jamesdem1123 1:dd6f8dc1e54e 235 {
jamesdem1123 6:7691e36d2337 236 graph.attach(&sendArray, (1)); //update array every 10 seconds
jamesdem1123 6:7691e36d2337 237
jamesdem1123 7:cdd74b6e2595 238 can2.frequency(500000);
jamesdem1123 1:dd6f8dc1e54e 239 //initialize relays
jamesdem1123 1:dd6f8dc1e54e 240 relSens= 0;
jamesdem1123 6:7691e36d2337 241
jamesdem1123 1:dd6f8dc1e54e 242 relNet =0;
jamesdem1123 1:dd6f8dc1e54e 243 relCpuPower=0;
jamesdem1123 1:dd6f8dc1e54e 244 relCpuRst =0;
jamesdem1123 1:dd6f8dc1e54e 245 relUsr=0;
jamesdem1123 7:cdd74b6e2595 246 wait(3);
jamesdem1123 7:cdd74b6e2595 247 sending_values(1,1,1,1,4);
jamesdem1123 7:cdd74b6e2595 248 wait(.01);
jamesdem1123 7:cdd74b6e2595 249 sending_values(0,0,0,0,4);
jamesdem1123 6:7691e36d2337 250
jamesdem1123 6:7691e36d2337 251
jamesdem1123 6:7691e36d2337 252
jamesdem1123 1:dd6f8dc1e54e 253 }
jamesdem1123 1:dd6f8dc1e54e 254
jamesdem1123 1:dd6f8dc1e54e 255
jamesdem1123 2:321c8783ea30 256
jamesdem1123 1:dd6f8dc1e54e 257 int main()
jamesdem1123 1:dd6f8dc1e54e 258 {
jamesdem1123 1:dd6f8dc1e54e 259 setup();
jamesdem1123 5:6b90ed7f3eb1 260
jamesdem1123 5:6b90ed7f3eb1 261
jamesdem1123 1:dd6f8dc1e54e 262 while (1) {
jamesdem1123 6:7691e36d2337 263 Can_main(0,0,0,0,0);
jamesdem1123 2:321c8783ea30 264
jamesdem1123 1:dd6f8dc1e54e 265
jamesdem1123 1:dd6f8dc1e54e 266
jamesdem1123 5:6b90ed7f3eb1 267 powerArr[0]=ibat = (iBat.read_u16());
jamesdem1123 5:6b90ed7f3eb1 268 powerArr[1]=vBat = ads.readADC_SingleEnded(0); // read channel 0 PROTO
jamesdem1123 5:6b90ed7f3eb1 269
jamesdem1123 5:6b90ed7f3eb1 270 powerArr[2]=itwelve = (iTwelve.read_u16());
jamesdem1123 5:6b90ed7f3eb1 271 powerArr[3]=vtwelve = ads.readADC_SingleEnded(1); // read channel 1
jamesdem1123 5:6b90ed7f3eb1 272
jamesdem1123 5:6b90ed7f3eb1 273 powerArr[4]=ifive = (iFive.read_u16());
jamesdem1123 5:6b90ed7f3eb1 274 powerArr[5]=vfive = ads.readADC_SingleEnded(2); // read channel 0
jamesdem1123 5:6b90ed7f3eb1 275
jamesdem1123 5:6b90ed7f3eb1 276 powerArr[6]=imot = (iMot.read_u16());
jamesdem1123 5:6b90ed7f3eb1 277 powerArr[7]=vmot = ads.readADC_SingleEnded(3); // read channel 0
jamesdem1123 5:6b90ed7f3eb1 278
jamesdem1123 5:6b90ed7f3eb1 279 powerArr[8]=icpu = (iCpu.read_u16());
jamesdem1123 5:6b90ed7f3eb1 280 powerArr[9]=iperi = (iPeri.read_u16());
jamesdem1123 5:6b90ed7f3eb1 281
jamesdem1123 5:6b90ed7f3eb1 282 //powerArr[] = {ibat,vbat,itwelve, vtwelve, ifive, vfive, imot, vmot, icpu, iperi};
jamesdem1123 5:6b90ed7f3eb1 283
jamesdem1123 6:7691e36d2337 284 relCpuPower=fromUsr[0];
jamesdem1123 6:7691e36d2337 285 relCpuRst =fromUsr[1];
jamesdem1123 6:7691e36d2337 286 relSens= fromUsr[2];
jamesdem1123 6:7691e36d2337 287 relNet =fromUsr[3];
jamesdem1123 6:7691e36d2337 288 relUsr=fromUsr[4];
jamesdem1123 6:7691e36d2337 289
jamesdem1123 6:7691e36d2337 290
jamesdem1123 6:7691e36d2337 291 //cpupwr, cpu rst, sensor, net, usrint
jamesdem1123 6:7691e36d2337 292
jamesdem1123 5:6b90ed7f3eb1 293 led0=!led0;
jamesdem1123 4:d29a7b77b1c6 294
jamesdem1123 0:54d5ccfcb14c 295 }
jamesdem1123 0:54d5ccfcb14c 296 }
jamesdem1123 1:dd6f8dc1e54e 297
jamesdem1123 1:dd6f8dc1e54e 298
jamesdem1123 1:dd6f8dc1e54e 299
jamesdem1123 1:dd6f8dc1e54e 300
jamesdem1123 1:dd6f8dc1e54e 301
jamesdem1123 1:dd6f8dc1e54e 302
jamesdem1123 1:dd6f8dc1e54e 303
jamesdem1123 1:dd6f8dc1e54e 304
jamesdem1123 1:dd6f8dc1e54e 305
jamesdem1123 1:dd6f8dc1e54e 306
jamesdem1123 1:dd6f8dc1e54e 307
jamesdem1123 1:dd6f8dc1e54e 308
jamesdem1123 1:dd6f8dc1e54e 309
jamesdem1123 4:d29a7b77b1c6 310
jamesdem1123 4:d29a7b77b1c6 311
jamesdem1123 4:d29a7b77b1c6 312
jamesdem1123 4:d29a7b77b1c6 313
jamesdem1123 4:d29a7b77b1c6 314
jamesdem1123 4:d29a7b77b1c6 315
jamesdem1123 4:d29a7b77b1c6 316