Priliminary

Dependencies:   DS1307 MAX17048 MODSERIAL SSD1308_128x64_I2C WatchDog mbed-rpc mbed

Fork of ECGAFE_copy by Zainul Charbiwala

Committer:
zainulcharbiwala
Date:
Wed Sep 30 11:30:56 2015 +0000
Revision:
0:ee0649a9025a
Priliminary

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zainulcharbiwala 0:ee0649a9025a 1 // Copyright 2013, Zainul Charbiwala
zainulcharbiwala 0:ee0649a9025a 2
zainulcharbiwala 0:ee0649a9025a 3 /* Includes */
zainulcharbiwala 0:ee0649a9025a 4 #include "mbed.h"
zainulcharbiwala 0:ee0649a9025a 5 #include "ADS1298.h"
zainulcharbiwala 0:ee0649a9025a 6 #include "SSD1308.h"
zainulcharbiwala 0:ee0649a9025a 7 #include "ds1307.h"
zainulcharbiwala 0:ee0649a9025a 8 #include "MAX17048.h"
zainulcharbiwala 0:ee0649a9025a 9 #include "WatchDog.h"
zainulcharbiwala 0:ee0649a9025a 10 #include "oledicons.h"
zainulcharbiwala 0:ee0649a9025a 11 #include "mbed_rpc.h"
zainulcharbiwala 0:ee0649a9025a 12 #include "DebouncedIn.h"
zainulcharbiwala 0:ee0649a9025a 13 #include "MODSERIAL.h"
zainulcharbiwala 0:ee0649a9025a 14
zainulcharbiwala 0:ee0649a9025a 15 /* mbed Objects */
zainulcharbiwala 0:ee0649a9025a 16 DigitalOut myled(LED1);
zainulcharbiwala 0:ee0649a9025a 17 DigitalOut lWatchdog(LED4);
zainulcharbiwala 0:ee0649a9025a 18 WatchDog_ms wdt(10000);
zainulcharbiwala 0:ee0649a9025a 19 Ticker wdtTicker;
zainulcharbiwala 0:ee0649a9025a 20 MODSERIAL pc(USBTX, USBRX);
zainulcharbiwala 0:ee0649a9025a 21 Timer tt;
zainulcharbiwala 0:ee0649a9025a 22 I2C i2c(p28, p27); // sda, scl
zainulcharbiwala 0:ee0649a9025a 23 SSD1308 oled = SSD1308(i2c, SSD1308_SA0);
zainulcharbiwala 0:ee0649a9025a 24 ADS1298 ads = ADS1298(p5, p6, p7, p24, p23, p22, p21); //mosi, miso, sclk, cs, reset, drdy, start
zainulcharbiwala 0:ee0649a9025a 25 DS1307 rtc(p28,p27); // start DS1307 class and give it pins for connections of the DS1307 device
zainulcharbiwala 0:ee0649a9025a 26 MAX17048 gauge(p28, p27);
zainulcharbiwala 0:ee0649a9025a 27 DigitalIn battChging(p14);
zainulcharbiwala 0:ee0649a9025a 28 DebouncedIn button(p20);
zainulcharbiwala 0:ee0649a9025a 29
zainulcharbiwala 0:ee0649a9025a 30 /* Constants */
zainulcharbiwala 0:ee0649a9025a 31 #define OLEDPAGEMAX 14
zainulcharbiwala 0:ee0649a9025a 32 // Page 0 for general use
zainulcharbiwala 0:ee0649a9025a 33 // Page 1-12 for signals
zainulcharbiwala 0:ee0649a9025a 34 // Page 13 for network status
zainulcharbiwala 0:ee0649a9025a 35 // Page 14 for something else
zainulcharbiwala 0:ee0649a9025a 36
zainulcharbiwala 0:ee0649a9025a 37 /* Global Variables */
zainulcharbiwala 0:ee0649a9025a 38 uint8_t buf[27];
zainulcharbiwala 0:ee0649a9025a 39 char rpcInBuf[256], rpcOutBuf[256];
zainulcharbiwala 0:ee0649a9025a 40 int vCapturing;
zainulcharbiwala 0:ee0649a9025a 41
zainulcharbiwala 0:ee0649a9025a 42 static char oledstr[16];
zainulcharbiwala 0:ee0649a9025a 43 static int vOledPage;
zainulcharbiwala 0:ee0649a9025a 44
zainulcharbiwala 0:ee0649a9025a 45 /* External Functions */
zainulcharbiwala 0:ee0649a9025a 46
zainulcharbiwala 0:ee0649a9025a 47 /* Local Functions */
zainulcharbiwala 0:ee0649a9025a 48 static void dataReady(void);
zainulcharbiwala 0:ee0649a9025a 49 static void wdtKicker();
zainulcharbiwala 0:ee0649a9025a 50 static void oledBattery(uint8_t percentage, uint8_t charging);
zainulcharbiwala 0:ee0649a9025a 51 static void oledNetwork(uint8_t percentage, const char *mode);
zainulcharbiwala 0:ee0649a9025a 52 static void oledTime();
zainulcharbiwala 0:ee0649a9025a 53 static void fCaptureStart(Arguments *arg, Reply *r);
zainulcharbiwala 0:ee0649a9025a 54 static void fCaptureStop(Arguments *arg, Reply *r);
zainulcharbiwala 0:ee0649a9025a 55 static void fButtonLongPress();
zainulcharbiwala 0:ee0649a9025a 56 static void fButtonShortPress();
zainulcharbiwala 0:ee0649a9025a 57 static void fOledPage0();
zainulcharbiwala 0:ee0649a9025a 58 static void fOledPageSignal();
zainulcharbiwala 0:ee0649a9025a 59 static void fOledPageNetwork();
zainulcharbiwala 0:ee0649a9025a 60 static void fOledPageSomethingElse();
zainulcharbiwala 0:ee0649a9025a 61
zainulcharbiwala 0:ee0649a9025a 62
zainulcharbiwala 0:ee0649a9025a 63 /* RPC Variables */
zainulcharbiwala 0:ee0649a9025a 64 RPCVariable<int> rpc_vCapturing(&vCapturing, "vCapturing");
zainulcharbiwala 0:ee0649a9025a 65
zainulcharbiwala 0:ee0649a9025a 66 /* RPC Functions */
zainulcharbiwala 0:ee0649a9025a 67 RPCFunction rpc_fCaptureStart(&fCaptureStart, "fCaptureStart");
zainulcharbiwala 0:ee0649a9025a 68 RPCFunction rpc_fCaptureStop(&fCaptureStop, "fCaptureStop");
zainulcharbiwala 0:ee0649a9025a 69
zainulcharbiwala 0:ee0649a9025a 70
zainulcharbiwala 0:ee0649a9025a 71 static void wdtKicker() {
zainulcharbiwala 0:ee0649a9025a 72 wdt.feed();
zainulcharbiwala 0:ee0649a9025a 73 }
zainulcharbiwala 0:ee0649a9025a 74
zainulcharbiwala 0:ee0649a9025a 75 static void fCaptureStart(Arguments *arg, Reply *r){
zainulcharbiwala 0:ee0649a9025a 76 vCapturing = 1;
zainulcharbiwala 0:ee0649a9025a 77 ads.startCapture();
zainulcharbiwala 0:ee0649a9025a 78 oled.writeString(7, 0, "Capture started.");
zainulcharbiwala 0:ee0649a9025a 79 }
zainulcharbiwala 0:ee0649a9025a 80
zainulcharbiwala 0:ee0649a9025a 81 static void fCaptureStop(Arguments *arg, Reply *r){
zainulcharbiwala 0:ee0649a9025a 82 vCapturing = 0;
zainulcharbiwala 0:ee0649a9025a 83 ads.stopCapture();
zainulcharbiwala 0:ee0649a9025a 84 oled.writeString(7, 0, "Capture stopped.");
zainulcharbiwala 0:ee0649a9025a 85 }
zainulcharbiwala 0:ee0649a9025a 86
zainulcharbiwala 0:ee0649a9025a 87 static void fOledPage0() {
zainulcharbiwala 0:ee0649a9025a 88 oled.writeString(5, 0, " HR: xxx bpm ");
zainulcharbiwala 0:ee0649a9025a 89 oled.writeString(6, 0, " LO: ");
zainulcharbiwala 0:ee0649a9025a 90
zainulcharbiwala 0:ee0649a9025a 91 sprintf(oledstr, "Display Page: %02d", vOledPage);
zainulcharbiwala 0:ee0649a9025a 92 oled.writeString(7, 0, oledstr);
zainulcharbiwala 0:ee0649a9025a 93
zainulcharbiwala 0:ee0649a9025a 94 }
zainulcharbiwala 0:ee0649a9025a 95
zainulcharbiwala 0:ee0649a9025a 96 static void fOledPageSignal() {
zainulcharbiwala 0:ee0649a9025a 97 sprintf(oledstr, "Display Page: %02d", vOledPage);
zainulcharbiwala 0:ee0649a9025a 98 oled.writeString(7, 0, oledstr);
zainulcharbiwala 0:ee0649a9025a 99
zainulcharbiwala 0:ee0649a9025a 100 }
zainulcharbiwala 0:ee0649a9025a 101
zainulcharbiwala 0:ee0649a9025a 102 static void fOledPageNetwork() {
zainulcharbiwala 0:ee0649a9025a 103 sprintf(oledstr, "Display Page: %02d", vOledPage);
zainulcharbiwala 0:ee0649a9025a 104 oled.writeString(7, 0, oledstr);
zainulcharbiwala 0:ee0649a9025a 105
zainulcharbiwala 0:ee0649a9025a 106 }
zainulcharbiwala 0:ee0649a9025a 107
zainulcharbiwala 0:ee0649a9025a 108 static void fOledPageSomethingElse() {
zainulcharbiwala 0:ee0649a9025a 109 sprintf(oledstr, "Display Page: %02d", vOledPage);
zainulcharbiwala 0:ee0649a9025a 110 oled.writeString(7, 0, oledstr);
zainulcharbiwala 0:ee0649a9025a 111
zainulcharbiwala 0:ee0649a9025a 112 }
zainulcharbiwala 0:ee0649a9025a 113
zainulcharbiwala 0:ee0649a9025a 114 static void fButtonShortPress()
zainulcharbiwala 0:ee0649a9025a 115 {
zainulcharbiwala 0:ee0649a9025a 116 // Scroll to the next page of the oled display
zainulcharbiwala 0:ee0649a9025a 117 vOledPage++;
zainulcharbiwala 0:ee0649a9025a 118 if (vOledPage > OLEDPAGEMAX) {
zainulcharbiwala 0:ee0649a9025a 119 vOledPage = 0;
zainulcharbiwala 0:ee0649a9025a 120 }
zainulcharbiwala 0:ee0649a9025a 121 if (vOledPage == 0) {
zainulcharbiwala 0:ee0649a9025a 122 fOledPage0();
zainulcharbiwala 0:ee0649a9025a 123 }
zainulcharbiwala 0:ee0649a9025a 124 if (vOledPage >= 1 && vOledPage <= 12) {
zainulcharbiwala 0:ee0649a9025a 125 fOledPageSignal();
zainulcharbiwala 0:ee0649a9025a 126 }
zainulcharbiwala 0:ee0649a9025a 127 if (vOledPage == 13) {
zainulcharbiwala 0:ee0649a9025a 128 fOledPageNetwork();
zainulcharbiwala 0:ee0649a9025a 129 }
zainulcharbiwala 0:ee0649a9025a 130 if (vOledPage == 0) {
zainulcharbiwala 0:ee0649a9025a 131 fOledPageSomethingElse();
zainulcharbiwala 0:ee0649a9025a 132 }
zainulcharbiwala 0:ee0649a9025a 133 }
zainulcharbiwala 0:ee0649a9025a 134
zainulcharbiwala 0:ee0649a9025a 135 static void fButtonLongPress()
zainulcharbiwala 0:ee0649a9025a 136 {
zainulcharbiwala 0:ee0649a9025a 137 // If in capture mode, stop capture
zainulcharbiwala 0:ee0649a9025a 138 // If not in capture mode, start capture
zainulcharbiwala 0:ee0649a9025a 139 if (vCapturing) {
zainulcharbiwala 0:ee0649a9025a 140 oled.writeString(7, 0, "Capture Stopping");
zainulcharbiwala 0:ee0649a9025a 141 fCaptureStop(NULL, NULL);
zainulcharbiwala 0:ee0649a9025a 142 } else {
zainulcharbiwala 0:ee0649a9025a 143 oled.writeString(7, 0, "Capture Starting");
zainulcharbiwala 0:ee0649a9025a 144 fCaptureStart(NULL, NULL);
zainulcharbiwala 0:ee0649a9025a 145 }
zainulcharbiwala 0:ee0649a9025a 146 }
zainulcharbiwala 0:ee0649a9025a 147
zainulcharbiwala 0:ee0649a9025a 148
zainulcharbiwala 0:ee0649a9025a 149 static void oledBattery(uint8_t percentage, uint8_t charging)
zainulcharbiwala 0:ee0649a9025a 150 {
zainulcharbiwala 0:ee0649a9025a 151 // Hardcoded a 24 column, 1 page high battery meter icon
zainulcharbiwala 0:ee0649a9025a 152 // It has 18 columns that can be set
zainulcharbiwala 0:ee0649a9025a 153 uint8_t battimg[24];
zainulcharbiwala 0:ee0649a9025a 154 uint8_t i;
zainulcharbiwala 0:ee0649a9025a 155 percentage=(percentage>100?100:percentage);
zainulcharbiwala 0:ee0649a9025a 156 memcpy((uint8_t *)battimg, (uint8_t *)iconBattery, 24);
zainulcharbiwala 0:ee0649a9025a 157 for (i=2; i<2+(18*percentage)/100; i++) {
zainulcharbiwala 0:ee0649a9025a 158 battimg[i] |= 0x3C;
zainulcharbiwala 0:ee0649a9025a 159 }
zainulcharbiwala 0:ee0649a9025a 160
zainulcharbiwala 0:ee0649a9025a 161 if (charging) {
zainulcharbiwala 0:ee0649a9025a 162 for (i=0; i<20; i++) {
zainulcharbiwala 0:ee0649a9025a 163 battimg[i+2] ^= iconBattChg[i];
zainulcharbiwala 0:ee0649a9025a 164 }
zainulcharbiwala 0:ee0649a9025a 165 }
zainulcharbiwala 0:ee0649a9025a 166 oled.writeBitmap((uint8_t*) battimg, 0, 0, 104, 127);
zainulcharbiwala 0:ee0649a9025a 167 }
zainulcharbiwala 0:ee0649a9025a 168
zainulcharbiwala 0:ee0649a9025a 169 static void oledNetwork(uint8_t percentage, const char *mode)
zainulcharbiwala 0:ee0649a9025a 170 {
zainulcharbiwala 0:ee0649a9025a 171 // Hardcoded a 16 column, 1 page high network meter icon
zainulcharbiwala 0:ee0649a9025a 172 // It has 6 columns that can be set
zainulcharbiwala 0:ee0649a9025a 173 uint8_t netwimg[16];
zainulcharbiwala 0:ee0649a9025a 174 percentage=(percentage>100?100:percentage);
zainulcharbiwala 0:ee0649a9025a 175 memcpy((uint8_t *)netwimg, (uint8_t *)iconNetwork, 16);
zainulcharbiwala 0:ee0649a9025a 176
zainulcharbiwala 0:ee0649a9025a 177 if (percentage > 0)
zainulcharbiwala 0:ee0649a9025a 178 netwimg[1] = 0xF0;
zainulcharbiwala 0:ee0649a9025a 179 if (percentage > 16)
zainulcharbiwala 0:ee0649a9025a 180 netwimg[2] = 0xF0;
zainulcharbiwala 0:ee0649a9025a 181 if (percentage > 33)
zainulcharbiwala 0:ee0649a9025a 182 netwimg[6] = 0xFC;
zainulcharbiwala 0:ee0649a9025a 183 if (percentage > 49)
zainulcharbiwala 0:ee0649a9025a 184 netwimg[7] = 0xFC;
zainulcharbiwala 0:ee0649a9025a 185 if (percentage > 66)
zainulcharbiwala 0:ee0649a9025a 186 netwimg[11] = 0xFF;
zainulcharbiwala 0:ee0649a9025a 187 if (percentage > 83)
zainulcharbiwala 0:ee0649a9025a 188 netwimg[12] = 0xFF;
zainulcharbiwala 0:ee0649a9025a 189
zainulcharbiwala 0:ee0649a9025a 190 oled.writeBitmap((uint8_t*) netwimg, 0, 0, 0, 15);
zainulcharbiwala 0:ee0649a9025a 191 oled.writeString(0, 2, mode);
zainulcharbiwala 0:ee0649a9025a 192 }
zainulcharbiwala 0:ee0649a9025a 193
zainulcharbiwala 0:ee0649a9025a 194 static void oledTime()
zainulcharbiwala 0:ee0649a9025a 195 {
zainulcharbiwala 0:ee0649a9025a 196 int sec = 0, min = 0, hours = 0;
zainulcharbiwala 0:ee0649a9025a 197 int day = 0, date = 0, month = 0, year = 0;
zainulcharbiwala 0:ee0649a9025a 198 int ret = 0;
zainulcharbiwala 0:ee0649a9025a 199
zainulcharbiwala 0:ee0649a9025a 200 char timestr[7];
zainulcharbiwala 0:ee0649a9025a 201 ret = rtc.gettime( &sec, &min, &hours, &day, &date, &month, &year);
zainulcharbiwala 0:ee0649a9025a 202 if (ret == 0) {
zainulcharbiwala 0:ee0649a9025a 203 if (hours == 0) {
zainulcharbiwala 0:ee0649a9025a 204 sprintf(timestr, "%02d:%02da", hours+12, min);
zainulcharbiwala 0:ee0649a9025a 205 } else if (hours == 12) {
zainulcharbiwala 0:ee0649a9025a 206 sprintf(timestr, "%02d:%02dp", hours, min);
zainulcharbiwala 0:ee0649a9025a 207 } else if (hours>12) {
zainulcharbiwala 0:ee0649a9025a 208 sprintf(timestr, "%02d:%02dp", hours-12, min);
zainulcharbiwala 0:ee0649a9025a 209 } else {
zainulcharbiwala 0:ee0649a9025a 210 sprintf(timestr, "%02d:%02da", hours, min);
zainulcharbiwala 0:ee0649a9025a 211 }
zainulcharbiwala 0:ee0649a9025a 212 oled.writeString(0, 5, timestr);
zainulcharbiwala 0:ee0649a9025a 213 } else {
zainulcharbiwala 0:ee0649a9025a 214 oled.writeString(0, 5, "00:00!");
zainulcharbiwala 0:ee0649a9025a 215 }
zainulcharbiwala 0:ee0649a9025a 216
zainulcharbiwala 0:ee0649a9025a 217 }
zainulcharbiwala 0:ee0649a9025a 218
zainulcharbiwala 0:ee0649a9025a 219 static void fSetTime()
zainulcharbiwala 0:ee0649a9025a 220 {
zainulcharbiwala 0:ee0649a9025a 221 }
zainulcharbiwala 0:ee0649a9025a 222
zainulcharbiwala 0:ee0649a9025a 223 void dataReady()
zainulcharbiwala 0:ee0649a9025a 224 {
zainulcharbiwala 0:ee0649a9025a 225 ads.readData(buf);
zainulcharbiwala 0:ee0649a9025a 226 ads.updateLeadOff(buf);
zainulcharbiwala 0:ee0649a9025a 227
zainulcharbiwala 0:ee0649a9025a 228 if (vCapturing) {
zainulcharbiwala 0:ee0649a9025a 229 // Send it to the serial port
zainulcharbiwala 0:ee0649a9025a 230 // How much time does this take ?
zainulcharbiwala 0:ee0649a9025a 231 // We have 2ms until the next interrupt comes
zainulcharbiwala 0:ee0649a9025a 232 //pc.printf("\r\n%d", tt.read_ms());
zainulcharbiwala 0:ee0649a9025a 233 for (int i=0; i<27; i++) {
zainulcharbiwala 0:ee0649a9025a 234 //if (!(i%3)) pc.printf(" ");
zainulcharbiwala 0:ee0649a9025a 235 //pc.printf("%02x", buf[i]);
zainulcharbiwala 0:ee0649a9025a 236 pc.putc(buf[i]);
zainulcharbiwala 0:ee0649a9025a 237 }
zainulcharbiwala 0:ee0649a9025a 238 }
zainulcharbiwala 0:ee0649a9025a 239 myled = !myled;
zainulcharbiwala 0:ee0649a9025a 240 }
zainulcharbiwala 0:ee0649a9025a 241
zainulcharbiwala 0:ee0649a9025a 242
zainulcharbiwala 0:ee0649a9025a 243
zainulcharbiwala 0:ee0649a9025a 244 int main() {
zainulcharbiwala 0:ee0649a9025a 245 uint8_t lev=0;
zainulcharbiwala 0:ee0649a9025a 246 char ch;
zainulcharbiwala 0:ee0649a9025a 247
zainulcharbiwala 0:ee0649a9025a 248 vOledPage = 0;
zainulcharbiwala 0:ee0649a9025a 249 vCapturing = 0;
zainulcharbiwala 0:ee0649a9025a 250 i2c.frequency(400000); // according to the spec the max bitrate for the SSD1308 is 400 kbit/s
zainulcharbiwala 0:ee0649a9025a 251 battChging.mode(PullUp);
zainulcharbiwala 0:ee0649a9025a 252 pc.baud(921600);
zainulcharbiwala 0:ee0649a9025a 253 pc.printf("starting\r\n");
zainulcharbiwala 0:ee0649a9025a 254
zainulcharbiwala 0:ee0649a9025a 255 wdtTicker.attach(&wdtKicker, 5);
zainulcharbiwala 0:ee0649a9025a 256
zainulcharbiwala 0:ee0649a9025a 257 myled=1;
zainulcharbiwala 0:ee0649a9025a 258 oled.setDisplayOn();
zainulcharbiwala 0:ee0649a9025a 259 oled.writeString(7, 0, "Initializing... ");
zainulcharbiwala 0:ee0649a9025a 260 ads.initialize(&dataReady);
zainulcharbiwala 0:ee0649a9025a 261 if (!gauge.open()) {
zainulcharbiwala 0:ee0649a9025a 262 oled.writeString(7, 0, "Gauge Error !!!");
zainulcharbiwala 0:ee0649a9025a 263 wait(5);
zainulcharbiwala 0:ee0649a9025a 264 }
zainulcharbiwala 0:ee0649a9025a 265
zainulcharbiwala 0:ee0649a9025a 266 fCaptureStart(NULL, NULL);
zainulcharbiwala 0:ee0649a9025a 267
zainulcharbiwala 0:ee0649a9025a 268 while(1) {
zainulcharbiwala 0:ee0649a9025a 269 wait(0.1);
zainulcharbiwala 0:ee0649a9025a 270
zainulcharbiwala 0:ee0649a9025a 271 // Check if there's a command over RPC
zainulcharbiwala 0:ee0649a9025a 272 if (pc.readable()) {
zainulcharbiwala 0:ee0649a9025a 273 pc.gets(rpcInBuf, 256);
zainulcharbiwala 0:ee0649a9025a 274 RPC::call(rpcInBuf, rpcOutBuf);
zainulcharbiwala 0:ee0649a9025a 275 //pc.printf("%s", rpcOutBuf);
zainulcharbiwala 0:ee0649a9025a 276 }
zainulcharbiwala 0:ee0649a9025a 277
zainulcharbiwala 0:ee0649a9025a 278 // Check if there's a user event
zainulcharbiwala 0:ee0649a9025a 279 if (button.releasing()) {
zainulcharbiwala 0:ee0649a9025a 280 // Short press
zainulcharbiwala 0:ee0649a9025a 281 if (button.pressed() < 50) {
zainulcharbiwala 0:ee0649a9025a 282 fButtonShortPress();
zainulcharbiwala 0:ee0649a9025a 283 }
zainulcharbiwala 0:ee0649a9025a 284 // Long press
zainulcharbiwala 0:ee0649a9025a 285 if (button.pressed() > 100) {
zainulcharbiwala 0:ee0649a9025a 286 fButtonLongPress();
zainulcharbiwala 0:ee0649a9025a 287 }
zainulcharbiwala 0:ee0649a9025a 288 }
zainulcharbiwala 0:ee0649a9025a 289
zainulcharbiwala 0:ee0649a9025a 290 // Update battery status icon
zainulcharbiwala 0:ee0649a9025a 291 oledBattery(gauge.socInt(), !battChging);
zainulcharbiwala 0:ee0649a9025a 292 // Update time
zainulcharbiwala 0:ee0649a9025a 293 oledTime();
zainulcharbiwala 0:ee0649a9025a 294 // Update network
zainulcharbiwala 0:ee0649a9025a 295 if (++lev > 100) lev = 0;
zainulcharbiwala 0:ee0649a9025a 296 oledNetwork(lev, "H");
zainulcharbiwala 0:ee0649a9025a 297
zainulcharbiwala 0:ee0649a9025a 298 //Print the current state of charge
zainulcharbiwala 0:ee0649a9025a 299 sprintf(oledstr, "VCell = %.2fV\n", gauge.vcell());
zainulcharbiwala 0:ee0649a9025a 300 oled.writeString(3, 0, oledstr);
zainulcharbiwala 0:ee0649a9025a 301
zainulcharbiwala 0:ee0649a9025a 302 //myled = !myled;
zainulcharbiwala 0:ee0649a9025a 303 }
zainulcharbiwala 0:ee0649a9025a 304
zainulcharbiwala 0:ee0649a9025a 305
zainulcharbiwala 0:ee0649a9025a 306 }