Racing robots
Dependencies: EthernetInterface SPI_TFT_ILI9341 Stopwatch TFT_fonts TextLCD mbed-rtos mbed
Fork of rtos_basic by
main.cpp@8:0499c9bedfca, 2015-05-11 (annotated)
- Committer:
- mbed5_khbo
- Date:
- Mon May 11 20:19:49 2015 +0000
- Revision:
- 8:0499c9bedfca
- Parent:
- 7:925f0328c938
Programma voorlopig zonder ethernet en I?C
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
emilmont | 1:491820ee784d | 1 | #include "mbed.h" |
emilmont | 1:491820ee784d | 2 | #include "rtos.h" |
mbed5_khbo | 7:925f0328c938 | 3 | #include "EthernetInterface.h" |
mbed5_khbo | 7:925f0328c938 | 4 | #include "stdio.h" |
mbed5_khbo | 7:925f0328c938 | 5 | #include "SPI_TFT_ILI9341.h" |
mbed5_khbo | 7:925f0328c938 | 6 | #include "string" |
mbed5_khbo | 7:925f0328c938 | 7 | #include "Arial12x12.h" |
mbed5_khbo | 7:925f0328c938 | 8 | #include "Arial24x23.h" |
mbed5_khbo | 7:925f0328c938 | 9 | #include "Arial28x28.h" |
mbed5_khbo | 7:925f0328c938 | 10 | #include "font_big.h" |
mbed5_khbo | 8:0499c9bedfca | 11 | |
mbed5_khbo | 7:925f0328c938 | 12 | |
mbed5_khbo | 8:0499c9bedfca | 13 | Timer t; |
mbed5_khbo | 8:0499c9bedfca | 14 | DigitalOut led1(p25); |
emilmont | 1:491820ee784d | 15 | DigitalOut led2(LED2); |
mbed5_khbo | 7:925f0328c938 | 16 | DigitalOut led3(LED3); |
mbed5_khbo | 7:925f0328c938 | 17 | DigitalOut led4(LED4); |
mbed5_khbo | 7:925f0328c938 | 18 | DigitalOut rst1(p30); |
mbed5_khbo | 8:0499c9bedfca | 19 | DigitalOut buzzer(p17); |
mbed5_khbo | 8:0499c9bedfca | 20 | DigitalOut startl(p21); |
mbed5_khbo | 7:925f0328c938 | 21 | DigitalIn sensorBasis(p12); |
mbed5_khbo | 8:0499c9bedfca | 22 | DigitalIn test(p23); |
mbed5_khbo | 8:0499c9bedfca | 23 | DigitalIn starta(p12); |
mbed5_khbo | 7:925f0328c938 | 24 | I2C i2c(p28, p27); |
mbed5_khbo | 7:925f0328c938 | 25 | Serial xbee1(p9, p10); |
mbed5_khbo | 7:925f0328c938 | 26 | const int addr = 0x90; |
mbed5_khbo | 8:0499c9bedfca | 27 | int rondeTijden[3]; |
mbed5_khbo | 8:0499c9bedfca | 28 | int rondeTijdenMilli[3]; |
mbed5_khbo | 8:0499c9bedfca | 29 | int rondeTijdenM[3]; |
mbed5_khbo | 7:925f0328c938 | 30 | int stukCircuit=0; |
mbed5_khbo | 8:0499c9bedfca | 31 | int lapcounter; |
mbed5_khbo | 8:0499c9bedfca | 32 | int overzicht; |
mbed5_khbo | 8:0499c9bedfca | 33 | int circuit; |
mbed5_khbo | 8:0499c9bedfca | 34 | int tijds,tijdmilli,tijdm; |
mbed5_khbo | 7:925f0328c938 | 35 | int tellerS=0,tellerM=0,data=125,status,i=3; |
mbed5_khbo | 7:925f0328c938 | 36 | int start,i2cinfo1,i2cinfo2,i2cinfo3; |
mbed5_khbo | 7:925f0328c938 | 37 | bool send; |
mbed5_khbo | 7:925f0328c938 | 38 | char cmd[2]; |
mbed5_khbo | 7:925f0328c938 | 39 | |
mbed5_khbo | 7:925f0328c938 | 40 | LocalFileSystem local("local"); |
emilmont | 1:491820ee784d | 41 | |
mbed5_khbo | 7:925f0328c938 | 42 | extern unsigned char p1[]; // the mbed logo graphic |
mbed5_khbo | 7:925f0328c938 | 43 | |
mbed5_khbo | 7:925f0328c938 | 44 | // the display has a backlight switch on board |
mbed5_khbo | 7:925f0328c938 | 45 | DigitalOut LCD_LED(p21); |
mbed5_khbo | 7:925f0328c938 | 46 | |
mbed5_khbo | 7:925f0328c938 | 47 | // the TFT is connected to SPI pin 5-7 |
mbed5_khbo | 7:925f0328c938 | 48 | SPI_TFT_ILI9341 TFT(p5, p6, p7, p8, p15, p16,"TFT"); // mosi, miso, sclk, cs, reset, dc |
mbed5_khbo | 7:925f0328c938 | 49 | |
mbed5_khbo | 7:925f0328c938 | 50 | |
mbed5_khbo | 7:925f0328c938 | 51 | void rondeTijden_thread(void const *args) { |
emilmont | 1:491820ee784d | 52 | while (true) { |
mbed5_khbo | 7:925f0328c938 | 53 | if(sensorBasis == 1) |
mbed5_khbo | 7:925f0328c938 | 54 | { |
mbed5_khbo | 8:0499c9bedfca | 55 | send=false; |
mbed5_khbo | 7:925f0328c938 | 56 | if(start == 0) |
mbed5_khbo | 7:925f0328c938 | 57 | { |
mbed5_khbo | 8:0499c9bedfca | 58 | buzzer=1; |
mbed5_khbo | 8:0499c9bedfca | 59 | if(lapcounter < 99) |
mbed5_khbo | 8:0499c9bedfca | 60 | { |
mbed5_khbo | 8:0499c9bedfca | 61 | lapcounter++; |
mbed5_khbo | 8:0499c9bedfca | 62 | } |
mbed5_khbo | 8:0499c9bedfca | 63 | else{ |
mbed5_khbo | 8:0499c9bedfca | 64 | lapcounter=0; |
mbed5_khbo | 8:0499c9bedfca | 65 | } |
mbed5_khbo | 8:0499c9bedfca | 66 | t.reset(); |
mbed5_khbo | 8:0499c9bedfca | 67 | t.start(); |
mbed5_khbo | 8:0499c9bedfca | 68 | tijdm=0; |
mbed5_khbo | 7:925f0328c938 | 69 | Thread::wait(500); |
mbed5_khbo | 8:0499c9bedfca | 70 | buzzer=0; |
mbed5_khbo | 7:925f0328c938 | 71 | start=1; |
mbed5_khbo | 7:925f0328c938 | 72 | } |
mbed5_khbo | 7:925f0328c938 | 73 | else |
mbed5_khbo | 7:925f0328c938 | 74 | { |
mbed5_khbo | 7:925f0328c938 | 75 | start=0; |
mbed5_khbo | 8:0499c9bedfca | 76 | buzzer=0; |
mbed5_khbo | 7:925f0328c938 | 77 | send=true; |
mbed5_khbo | 7:925f0328c938 | 78 | rondeTijden[2]=rondeTijden[1]; |
mbed5_khbo | 7:925f0328c938 | 79 | rondeTijden[1]=rondeTijden[0]; |
mbed5_khbo | 8:0499c9bedfca | 80 | rondeTijden[0]=tijds; |
mbed5_khbo | 8:0499c9bedfca | 81 | rondeTijdenMilli[2]=rondeTijdenMilli[1]; |
mbed5_khbo | 8:0499c9bedfca | 82 | rondeTijdenMilli[1]=rondeTijdenMilli[0]; |
mbed5_khbo | 8:0499c9bedfca | 83 | int tijd=t.read(); |
mbed5_khbo | 8:0499c9bedfca | 84 | rondeTijdenMilli[0]=tijdmilli; |
mbed5_khbo | 8:0499c9bedfca | 85 | rondeTijdenM[2]=rondeTijdenM[1]; |
mbed5_khbo | 8:0499c9bedfca | 86 | rondeTijdenM[1]=rondeTijdenM[0]; |
mbed5_khbo | 8:0499c9bedfca | 87 | rondeTijdenM[0]=tijdm; |
mbed5_khbo | 8:0499c9bedfca | 88 | t.stop(); |
mbed5_khbo | 7:925f0328c938 | 89 | } |
mbed5_khbo | 7:925f0328c938 | 90 | } |
mbed5_khbo | 7:925f0328c938 | 91 | else |
mbed5_khbo | 7:925f0328c938 | 92 | { |
mbed5_khbo | 7:925f0328c938 | 93 | led4=0; |
mbed5_khbo | 7:925f0328c938 | 94 | } |
emilmont | 1:491820ee784d | 95 | } |
emilmont | 1:491820ee784d | 96 | } |
emilmont | 1:491820ee784d | 97 | |
mbed5_khbo | 7:925f0328c938 | 98 | |
mbed5_khbo | 7:925f0328c938 | 99 | void meetStation_thread(void const *args) { |
mbed5_khbo | 8:0499c9bedfca | 100 | while(1) |
mbed5_khbo | 8:0499c9bedfca | 101 | { |
mbed5_khbo | 8:0499c9bedfca | 102 | //startl=0; |
mbed5_khbo | 8:0499c9bedfca | 103 | //Thread::wait(500); |
mbed5_khbo | 8:0499c9bedfca | 104 | if(starta==1) |
mbed5_khbo | 8:0499c9bedfca | 105 | { |
mbed5_khbo | 8:0499c9bedfca | 106 | led1=0; |
mbed5_khbo | 8:0499c9bedfca | 107 | for(int i=0 ; i<5; i++) |
mbed5_khbo | 8:0499c9bedfca | 108 | { |
mbed5_khbo | 8:0499c9bedfca | 109 | Thread::wait(500); |
mbed5_khbo | 8:0499c9bedfca | 110 | startl=0; |
mbed5_khbo | 8:0499c9bedfca | 111 | Thread::wait(500); |
mbed5_khbo | 8:0499c9bedfca | 112 | startl=1; |
mbed5_khbo | 8:0499c9bedfca | 113 | |
mbed5_khbo | 8:0499c9bedfca | 114 | } |
mbed5_khbo | 8:0499c9bedfca | 115 | Thread::wait(500); |
mbed5_khbo | 8:0499c9bedfca | 116 | startl=0; |
mbed5_khbo | 8:0499c9bedfca | 117 | Thread::wait(500); |
mbed5_khbo | 8:0499c9bedfca | 118 | startl=1; |
mbed5_khbo | 8:0499c9bedfca | 119 | led1=1; |
mbed5_khbo | 8:0499c9bedfca | 120 | } |
mbed5_khbo | 8:0499c9bedfca | 121 | led1=1; |
mbed5_khbo | 8:0499c9bedfca | 122 | //for(int i=0 ; i<5; i++) |
mbed5_khbo | 8:0499c9bedfca | 123 | //{ |
mbed5_khbo | 8:0499c9bedfca | 124 | //startl=1; |
mbed5_khbo | 8:0499c9bedfca | 125 | //Thread::wait(0.1); |
mbed5_khbo | 8:0499c9bedfca | 126 | //startl=0; |
mbed5_khbo | 8:0499c9bedfca | 127 | //Thread::wait(0.1); |
mbed5_khbo | 8:0499c9bedfca | 128 | //} |
mbed5_khbo | 8:0499c9bedfca | 129 | |
emilmont | 1:491820ee784d | 130 | } |
emilmont | 1:491820ee784d | 131 | } |
mbed5_khbo | 7:925f0328c938 | 132 | |
mbed5_khbo | 7:925f0328c938 | 133 | void ethernet_receive_thread(void const *args) { |
mbed5_khbo | 7:925f0328c938 | 134 | while(1) |
mbed5_khbo | 7:925f0328c938 | 135 | { |
mbed5_khbo | 7:925f0328c938 | 136 | |
mbed5_khbo | 7:925f0328c938 | 137 | EthernetInterface eth; |
mbed5_khbo | 7:925f0328c938 | 138 | eth.init(); //Use DHCP |
mbed5_khbo | 7:925f0328c938 | 139 | eth.connect(); |
mbed5_khbo | 7:925f0328c938 | 140 | //lcd.locate(0,10); |
mbed5_khbo | 7:925f0328c938 | 141 | //lcd.printf("IP Address is %s\n", eth.getIPAddress()); |
mbed5_khbo | 7:925f0328c938 | 142 | TCPSocketConnection sock; |
mbed5_khbo | 7:925f0328c938 | 143 | sock.connect("192.168.0.100", 8006); |
mbed5_khbo | 7:925f0328c938 | 144 | char buffer[10]; |
mbed5_khbo | 8:0499c9bedfca | 145 | string ret; |
mbed5_khbo | 7:925f0328c938 | 146 | ret = sock.receive(buffer, sizeof(buffer)-1); |
mbed5_khbo | 8:0499c9bedfca | 147 | TFT.locate(30,85); |
mbed5_khbo | 8:0499c9bedfca | 148 | TFT.set_font((unsigned char*) Arial12x12); |
mbed5_khbo | 8:0499c9bedfca | 149 | TFT.printf("%s",ret); |
mbed5_khbo | 7:925f0328c938 | 150 | |
mbed5_khbo | 7:925f0328c938 | 151 | } |
mbed5_khbo | 7:925f0328c938 | 152 | } |
mbed5_khbo | 7:925f0328c938 | 153 | |
mbed5_khbo | 7:925f0328c938 | 154 | |
mbed5_khbo | 7:925f0328c938 | 155 | |
mbed5_khbo | 7:925f0328c938 | 156 | void ethernet_transmit_thread(void const *args) { |
mbed5_khbo | 7:925f0328c938 | 157 | EthernetInterface eth; |
mbed5_khbo | 7:925f0328c938 | 158 | eth.init(); //Use DHCP |
mbed5_khbo | 7:925f0328c938 | 159 | eth.connect(); |
mbed5_khbo | 8:0499c9bedfca | 160 | |
mbed5_khbo | 8:0499c9bedfca | 161 | UDPSocket sock; |
mbed5_khbo | 8:0499c9bedfca | 162 | sock.init(); |
mbed5_khbo | 8:0499c9bedfca | 163 | |
mbed5_khbo | 8:0499c9bedfca | 164 | Endpoint nist; |
mbed5_khbo | 8:0499c9bedfca | 165 | nist.set_address("192.168.0.100", 8005); |
mbed5_khbo | 8:0499c9bedfca | 166 | while(1) |
mbed5_khbo | 7:925f0328c938 | 167 | { |
mbed5_khbo | 8:0499c9bedfca | 168 | if(send) |
mbed5_khbo | 8:0499c9bedfca | 169 | { |
mbed5_khbo | 8:0499c9bedfca | 170 | //string buffer=snprintf("2%3d", lapcounter); |
mbed5_khbo | 8:0499c9bedfca | 171 | //string buffer2=snprintf("3%3d.%3d", rondeTijden[0],rondeTijdenM[0]); |
mbed5_khbo | 8:0499c9bedfca | 172 | |
mbed5_khbo | 8:0499c9bedfca | 173 | //char out_buffer[] = {snprintf("1: %3d:%3d", rondeTijden[0],rondeTijdenM[0])}; // Does not matter |
mbed5_khbo | 8:0499c9bedfca | 174 | //sock.sendTo(nist, out_buffer, sizeof(out_buffer)); |
mbed5_khbo | 8:0499c9bedfca | 175 | send=false; |
mbed5_khbo | 8:0499c9bedfca | 176 | } |
mbed5_khbo | 7:925f0328c938 | 177 | } |
mbed5_khbo | 7:925f0328c938 | 178 | } |
mbed5_khbo | 7:925f0328c938 | 179 | |
mbed5_khbo | 7:925f0328c938 | 180 | |
mbed5_khbo | 7:925f0328c938 | 181 | int main() { |
mbed5_khbo | 7:925f0328c938 | 182 | |
mbed5_khbo | 7:925f0328c938 | 183 | xbee1.baud(115200); |
mbed5_khbo | 7:925f0328c938 | 184 | Thread thread1(rondeTijden_thread); |
mbed5_khbo | 7:925f0328c938 | 185 | Thread thread2(meetStation_thread); |
mbed5_khbo | 8:0499c9bedfca | 186 | //Thread thread3(ethernet_receive_thread); |
mbed5_khbo | 8:0499c9bedfca | 187 | //Thread thread4(ethernet_transmit_thread); |
mbed5_khbo | 7:925f0328c938 | 188 | rst1 = 0; |
mbed5_khbo | 7:925f0328c938 | 189 | wait_ms(1); |
mbed5_khbo | 7:925f0328c938 | 190 | rst1 = 1; |
mbed5_khbo | 7:925f0328c938 | 191 | wait_ms(1); |
mbed5_khbo | 7:925f0328c938 | 192 | |
mbed5_khbo | 7:925f0328c938 | 193 | |
mbed5_khbo | 7:925f0328c938 | 194 | |
mbed5_khbo | 7:925f0328c938 | 195 | |
mbed5_khbo | 7:925f0328c938 | 196 | LCD_LED = 1; // backlite on |
mbed5_khbo | 7:925f0328c938 | 197 | TFT.claim(stdout); // send stdout to the TFT display |
mbed5_khbo | 7:925f0328c938 | 198 | TFT.set_orientation(1); |
mbed5_khbo | 7:925f0328c938 | 199 | TFT.background(White); // set background to black |
mbed5_khbo | 7:925f0328c938 | 200 | TFT.foreground(Black); // set chars to white |
mbed5_khbo | 7:925f0328c938 | 201 | TFT.cls(); // clear the screen |
mbed5_khbo | 7:925f0328c938 | 202 | TFT.set_font((unsigned char*) Neu42x35); |
mbed5_khbo | 7:925f0328c938 | 203 | TFT.locate(5,5); |
mbed5_khbo | 7:925f0328c938 | 204 | TFT.printf("Racing robot"); |
mbed5_khbo | 8:0499c9bedfca | 205 | TFT.locate(30,150); |
mbed5_khbo | 8:0499c9bedfca | 206 | TFT.set_font((unsigned char*) Arial12x12); |
mbed5_khbo | 8:0499c9bedfca | 207 | TFT.printf("Overzicht Circuit:"); |
mbed5_khbo | 8:0499c9bedfca | 208 | TFT.locate(250,95); |
mbed5_khbo | 8:0499c9bedfca | 209 | TFT.printf("Ronde:"); |
mbed5_khbo | 8:0499c9bedfca | 210 | TFT.locate(10,215); |
mbed5_khbo | 8:0499c9bedfca | 211 | TFT.printf("© Ei:Joriek Rogge, Arne DeBergh"); |
mbed5_khbo | 8:0499c9bedfca | 212 | TFT.locate(10,227); |
mbed5_khbo | 8:0499c9bedfca | 213 | TFT.printf("© Eo:Sven Priker, Alexander De Geeter"); |
mbed5_khbo | 7:925f0328c938 | 214 | TFT.line(0,50,320,50,White); |
mbed5_khbo | 7:925f0328c938 | 215 | xbee1.baud(115200); |
mbed5_khbo | 7:925f0328c938 | 216 | |
mbed5_khbo | 7:925f0328c938 | 217 | while(1) |
mbed5_khbo | 7:925f0328c938 | 218 | { |
mbed5_khbo | 8:0499c9bedfca | 219 | TFT.locate(20,40); |
mbed5_khbo | 8:0499c9bedfca | 220 | tijds = (t.read()-(tijdm*60)); |
mbed5_khbo | 8:0499c9bedfca | 221 | tijdmilli = ((t.read()*100)-(tijds*100)-(tijdm*6000)); |
mbed5_khbo | 8:0499c9bedfca | 222 | //tijdm = tijds/60; |
mbed5_khbo | 8:0499c9bedfca | 223 | if(tijds>=60) |
mbed5_khbo | 8:0499c9bedfca | 224 | { |
mbed5_khbo | 8:0499c9bedfca | 225 | tijdm++; |
mbed5_khbo | 8:0499c9bedfca | 226 | tijds=0; |
mbed5_khbo | 8:0499c9bedfca | 227 | } |
mbed5_khbo | 8:0499c9bedfca | 228 | TFT.set_font((unsigned char*) Neu42x35); |
mbed5_khbo | 8:0499c9bedfca | 229 | TFT.printf("%-2d:%-2d:%-2d ",tijdm, tijds,tijdmilli); |
mbed5_khbo | 8:0499c9bedfca | 230 | TFT.locate(240,110); |
mbed5_khbo | 8:0499c9bedfca | 231 | TFT.printf("%-2d", lapcounter); |
mbed5_khbo | 8:0499c9bedfca | 232 | //TFT.locate(30,85); |
mbed5_khbo | 8:0499c9bedfca | 233 | //TFT.set_font((unsigned char*) Arial28x28); |
mbed5_khbo | 8:0499c9bedfca | 234 | //TFT.printf("1: %-2d:%-2d:%-2d ",rondeTijdenM[0],rondeTijden[0],rondeTijdenMilli[0]); |
mbed5_khbo | 8:0499c9bedfca | 235 | //TFT.locate(30,115); |
mbed5_khbo | 8:0499c9bedfca | 236 | //TFT.printf("2: %-2d:%-2d:%-2d ",rondeTijdenM[1],rondeTijden[1],rondeTijdenMilli[1]); |
mbed5_khbo | 7:925f0328c938 | 237 | TFT.set_font((unsigned char*) Arial12x12); |
mbed5_khbo | 8:0499c9bedfca | 238 | TFT.circle(275,65,15,Black); |
mbed5_khbo | 8:0499c9bedfca | 239 | if(tijdmilli<80) |
mbed5_khbo | 8:0499c9bedfca | 240 | { |
mbed5_khbo | 8:0499c9bedfca | 241 | TFT.fillcircle(275,65,14,Black); |
mbed5_khbo | 8:0499c9bedfca | 242 | } |
mbed5_khbo | 8:0499c9bedfca | 243 | else |
mbed5_khbo | 8:0499c9bedfca | 244 | { |
mbed5_khbo | 8:0499c9bedfca | 245 | TFT.fillcircle(275,65,14,Red); |
mbed5_khbo | 8:0499c9bedfca | 246 | } |
mbed5_khbo | 7:925f0328c938 | 247 | TFT.rect(10,170,110,210,Black); |
mbed5_khbo | 7:925f0328c938 | 248 | TFT.rect(110,170,210,210,Black); |
mbed5_khbo | 7:925f0328c938 | 249 | TFT.rect(210,170,310,210,Black); |
mbed5_khbo | 8:0499c9bedfca | 250 | switch(circuit) |
mbed5_khbo | 8:0499c9bedfca | 251 | { |
mbed5_khbo | 8:0499c9bedfca | 252 | case 0: |
mbed5_khbo | 8:0499c9bedfca | 253 | TFT.fillrect(11,171,109,209,Red); |
mbed5_khbo | 8:0499c9bedfca | 254 | TFT.fillrect(111,171,209,209,Red); |
mbed5_khbo | 8:0499c9bedfca | 255 | TFT.fillrect(211,171,309,209,Red); |
mbed5_khbo | 8:0499c9bedfca | 256 | break; |
mbed5_khbo | 8:0499c9bedfca | 257 | case 1: |
mbed5_khbo | 8:0499c9bedfca | 258 | TFT.fillrect(11,171,109,209,Green); |
mbed5_khbo | 8:0499c9bedfca | 259 | TFT.fillrect(111,171,209,209,Red); |
mbed5_khbo | 8:0499c9bedfca | 260 | TFT.fillrect(211,171,309,209,Red); |
mbed5_khbo | 8:0499c9bedfca | 261 | break; |
mbed5_khbo | 8:0499c9bedfca | 262 | case 2: |
mbed5_khbo | 8:0499c9bedfca | 263 | TFT.fillrect(11,171,109,209,Green); |
mbed5_khbo | 8:0499c9bedfca | 264 | TFT.fillrect(111,171,209,209,Green); |
mbed5_khbo | 8:0499c9bedfca | 265 | TFT.fillrect(211,171,309,209,Red); |
mbed5_khbo | 8:0499c9bedfca | 266 | break; |
mbed5_khbo | 8:0499c9bedfca | 267 | case 3: |
mbed5_khbo | 8:0499c9bedfca | 268 | TFT.fillrect(11,171,109,209,Green); |
mbed5_khbo | 8:0499c9bedfca | 269 | TFT.fillrect(111,171,209,209,Green); |
mbed5_khbo | 8:0499c9bedfca | 270 | TFT.fillrect(211,171,309,209,Green); |
mbed5_khbo | 8:0499c9bedfca | 271 | break; |
mbed5_khbo | 8:0499c9bedfca | 272 | } |
mbed5_khbo | 8:0499c9bedfca | 273 | //wait_ms(20); |
mbed5_khbo | 7:925f0328c938 | 274 | } |
mbed5_khbo | 7:925f0328c938 | 275 | } |