Tomoyuki Saito / Mbed 2 deprecated galvano_driver

Dependencies:   TextLCD mbed

Committer:
4000263
Date:
Thu Sep 25 01:40:14 2014 +0000
Revision:
0:2ead13cba2ae
Child:
1:51a340435086
galvano_v1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
4000263 0:2ead13cba2ae 1 //**********************************************************************
4000263 0:2ead13cba2ae 2 #include "mbed.h"
4000263 0:2ead13cba2ae 3 #include "TextLCD.h"
4000263 0:2ead13cba2ae 4
4000263 0:2ead13cba2ae 5 #include "star.h"
4000263 0:2ead13cba2ae 6 #include "square.h"
4000263 0:2ead13cba2ae 7 #include "jibanyan.h"
4000263 0:2ead13cba2ae 8
4000263 0:2ead13cba2ae 9 #include <stdlib.h>
4000263 0:2ead13cba2ae 10
4000263 0:2ead13cba2ae 11 #define soft 0
4000263 0:2ead13cba2ae 12
4000263 0:2ead13cba2ae 13 Serial pc(USBTX, USBRX); // tx, rx
4000263 0:2ead13cba2ae 14 TextLCD lcd(p26, p25, p24, p23, p22, p21); // rs, e, d4-d7
4000263 0:2ead13cba2ae 15
4000263 0:2ead13cba2ae 16
4000263 0:2ead13cba2ae 17 uint8_t f8=0; //if f8 == 1 , dac8bit emu
4000263 0:2ead13cba2ae 18
4000263 0:2ead13cba2ae 19 DigitalOut led1(LED1);
4000263 0:2ead13cba2ae 20 DigitalOut led2(LED2);
4000263 0:2ead13cba2ae 21 DigitalOut led3(LED3);
4000263 0:2ead13cba2ae 22 DigitalOut led4(LED4);
4000263 0:2ead13cba2ae 23
4000263 0:2ead13cba2ae 24 #if soft
4000263 0:2ead13cba2ae 25 DigitalOut CS(p10);
4000263 0:2ead13cba2ae 26 DigitalOut SCK(p13); ///
4000263 0:2ead13cba2ae 27 DigitalOut SDI(p11);
4000263 0:2ead13cba2ae 28 DigitalOut LDAC(p9);
4000263 0:2ead13cba2ae 29 #else
4000263 0:2ead13cba2ae 30 SPI spi(p11, p12, p13); // mosi, miso, sclk
4000263 0:2ead13cba2ae 31 DigitalOut CS(p10);
4000263 0:2ead13cba2ae 32 DigitalOut LDAC(p9);
4000263 0:2ead13cba2ae 33 #endif
4000263 0:2ead13cba2ae 34
4000263 0:2ead13cba2ae 35 DigitalOut BLK(p8); // laser blanking
4000263 0:2ead13cba2ae 36
4000263 0:2ead13cba2ae 37 #define CHA 0x7000 // //0x0000 //0x7000
4000263 0:2ead13cba2ae 38 #define CHB 0xF000 // //0x8000 //0xF000
4000263 0:2ead13cba2ae 39
4000263 0:2ead13cba2ae 40 //**********************************************************************
4000263 0:2ead13cba2ae 41
4000263 0:2ead13cba2ae 42 void mcp4922DataSet(char ch, uint16_t dt)
4000263 0:2ead13cba2ae 43 {
4000263 0:2ead13cba2ae 44 if (dt >= 4096) {
4000263 0:2ead13cba2ae 45 //return;
4000263 0:2ead13cba2ae 46 dt = dt &0x0FFF;
4000263 0:2ead13cba2ae 47 }
4000263 0:2ead13cba2ae 48 //return;
4000263 0:2ead13cba2ae 49 //
4000263 0:2ead13cba2ae 50 if (ch == 'A') {
4000263 0:2ead13cba2ae 51 dt = CHA | dt ; //dt = 0b0111000000000000 | dt;
4000263 0:2ead13cba2ae 52 } else {
4000263 0:2ead13cba2ae 53 dt = CHB | dt ; //dt = 0b1111000000000000 | dt;
4000263 0:2ead13cba2ae 54 }
4000263 0:2ead13cba2ae 55 //
4000263 0:2ead13cba2ae 56 CS = 0;
4000263 0:2ead13cba2ae 57 #if soft
4000263 0:2ead13cba2ae 58 for (cnt = 0; cnt < 16; cnt++) {
4000263 0:2ead13cba2ae 59 ///if (((dt << cnt) &0b1000000000000000) != 0)
4000263 0:2ead13cba2ae 60 if (((dt << cnt) &0x8000) != 0) {
4000263 0:2ead13cba2ae 61 SDI = 1;
4000263 0:2ead13cba2ae 62 } else {
4000263 0:2ead13cba2ae 63 SDI = 0;
4000263 0:2ead13cba2ae 64 }
4000263 0:2ead13cba2ae 65
4000263 0:2ead13cba2ae 66 SCK = 1;
4000263 0:2ead13cba2ae 67 ///wait_us(10); ///
4000263 0:2ead13cba2ae 68 SCK = 0;
4000263 0:2ead13cba2ae 69 }
4000263 0:2ead13cba2ae 70 #else
4000263 0:2ead13cba2ae 71 spi.write(dt);
4000263 0:2ead13cba2ae 72 //LPC_SSP0->DR = dt; // | 0x10000; //hardware dependent
4000263 0:2ead13cba2ae 73 //while(1) {
4000263 0:2ead13cba2ae 74 // if( (LPC_SSP0->SR &0x13) == 3) break;
4000263 0:2ead13cba2ae 75 //}
4000263 0:2ead13cba2ae 76 #endif
4000263 0:2ead13cba2ae 77
4000263 0:2ead13cba2ae 78 CS = 1;
4000263 0:2ead13cba2ae 79 }
4000263 0:2ead13cba2ae 80
4000263 0:2ead13cba2ae 81 //**********************************************************************
4000263 0:2ead13cba2ae 82
4000263 0:2ead13cba2ae 83 void mcp4922Init()
4000263 0:2ead13cba2ae 84 {
4000263 0:2ead13cba2ae 85 CS = 1;
4000263 0:2ead13cba2ae 86 // SCK = 0;
4000263 0:2ead13cba2ae 87 // SDI = 0;
4000263 0:2ead13cba2ae 88 CS = 0;
4000263 0:2ead13cba2ae 89 LDAC = 1;
4000263 0:2ead13cba2ae 90 //
4000263 0:2ead13cba2ae 91 mcp4922DataSet('A', 0);
4000263 0:2ead13cba2ae 92 mcp4922DataSet('B', 0);
4000263 0:2ead13cba2ae 93 }
4000263 0:2ead13cba2ae 94
4000263 0:2ead13cba2ae 95 void triangle(void)
4000263 0:2ead13cba2ae 96 {
4000263 0:2ead13cba2ae 97 int i=0;
4000263 0:2ead13cba2ae 98
4000263 0:2ead13cba2ae 99 while(1) {
4000263 0:2ead13cba2ae 100 i++;
4000263 0:2ead13cba2ae 101 if (i == 256) i = 0;
4000263 0:2ead13cba2ae 102 mcp4922DataSet('A', i<<4);//wait_us(20);
4000263 0:2ead13cba2ae 103 mcp4922DataSet('B', i<<4);//wait_us(20);
4000263 0:2ead13cba2ae 104 LDAC = 0;
4000263 0:2ead13cba2ae 105 LDAC = 1;
4000263 0:2ead13cba2ae 106 wait_us(400);
4000263 0:2ead13cba2ae 107 }
4000263 0:2ead13cba2ae 108 }
4000263 0:2ead13cba2ae 109
4000263 0:2ead13cba2ae 110
4000263 0:2ead13cba2ae 111 void high_flat(void)
4000263 0:2ead13cba2ae 112 {
4000263 0:2ead13cba2ae 113 while(1) {
4000263 0:2ead13cba2ae 114 mcp4922DataSet('A', 4095);//wait_us(20);
4000263 0:2ead13cba2ae 115 mcp4922DataSet('B', 4095);//wait_us(20);
4000263 0:2ead13cba2ae 116 LDAC = 0;
4000263 0:2ead13cba2ae 117 LDAC = 1;
4000263 0:2ead13cba2ae 118 wait_us(400);
4000263 0:2ead13cba2ae 119 }
4000263 0:2ead13cba2ae 120 }
4000263 0:2ead13cba2ae 121
4000263 0:2ead13cba2ae 122
4000263 0:2ead13cba2ae 123 void low_flat(void)
4000263 0:2ead13cba2ae 124 {
4000263 0:2ead13cba2ae 125 while(1) {
4000263 0:2ead13cba2ae 126 mcp4922DataSet('A', 0);//wait_us(20);
4000263 0:2ead13cba2ae 127 mcp4922DataSet('B', 0);//wait_us(20);
4000263 0:2ead13cba2ae 128 LDAC = 0;
4000263 0:2ead13cba2ae 129 LDAC = 1;
4000263 0:2ead13cba2ae 130 wait_us(400);
4000263 0:2ead13cba2ae 131 }
4000263 0:2ead13cba2ae 132 }
4000263 0:2ead13cba2ae 133
4000263 0:2ead13cba2ae 134
4000263 0:2ead13cba2ae 135
4000263 0:2ead13cba2ae 136 void triangle2(void)
4000263 0:2ead13cba2ae 137 {
4000263 0:2ead13cba2ae 138 int i=0;
4000263 0:2ead13cba2ae 139
4000263 0:2ead13cba2ae 140 while(1) {
4000263 0:2ead13cba2ae 141 i++;
4000263 0:2ead13cba2ae 142 if (i == 256) i = 0;
4000263 0:2ead13cba2ae 143 else if (i < 128) {
4000263 0:2ead13cba2ae 144 mcp4922DataSet('A', (i<<1)<<4);//wait_us(20);
4000263 0:2ead13cba2ae 145 mcp4922DataSet('B', (i<<1)<<4);//wait_us(20);
4000263 0:2ead13cba2ae 146 } else {
4000263 0:2ead13cba2ae 147 mcp4922DataSet('A', ((255 - i)<<1)<<4);//wait_us(20);
4000263 0:2ead13cba2ae 148 mcp4922DataSet('B', ((255 - i)<<1)<<4);//wait_us(20);
4000263 0:2ead13cba2ae 149 }
4000263 0:2ead13cba2ae 150 LDAC = 0;
4000263 0:2ead13cba2ae 151 LDAC = 1;
4000263 0:2ead13cba2ae 152 BLK = i % 2;
4000263 0:2ead13cba2ae 153 wait_us(100);
4000263 0:2ead13cba2ae 154 }
4000263 0:2ead13cba2ae 155 }
4000263 0:2ead13cba2ae 156
4000263 0:2ead13cba2ae 157
4000263 0:2ead13cba2ae 158 /*
4000263 0:2ead13cba2ae 159 void star(void)
4000263 0:2ead13cba2ae 160 {
4000263 0:2ead13cba2ae 161 int i=0;
4000263 0:2ead13cba2ae 162 uint16_t x,y;
4000263 0:2ead13cba2ae 163
4000263 0:2ead13cba2ae 164 while(1) {
4000263 0:2ead13cba2ae 165 x = star001[i++];
4000263 0:2ead13cba2ae 166 y = star001[i++];
4000263 0:2ead13cba2ae 167 if (x == 0 && y == 0) {
4000263 0:2ead13cba2ae 168 i = 0;
4000263 0:2ead13cba2ae 169 }
4000263 0:2ead13cba2ae 170 x += 32767;
4000263 0:2ead13cba2ae 171 y += 32767;
4000263 0:2ead13cba2ae 172 x = 65535 - x; // X-axis invert
4000263 0:2ead13cba2ae 173 mcp4922DataSet('A', x>>4);//wait_us(20);
4000263 0:2ead13cba2ae 174 mcp4922DataSet('B', y>>4);//wait_us(20);
4000263 0:2ead13cba2ae 175 LDAC = 0;
4000263 0:2ead13cba2ae 176 LDAC = 1;
4000263 0:2ead13cba2ae 177 wait_us(100);
4000263 0:2ead13cba2ae 178
4000263 0:2ead13cba2ae 179 }
4000263 0:2ead13cba2ae 180 }
4000263 0:2ead13cba2ae 181 */
4000263 0:2ead13cba2ae 182 /*
4000263 0:2ead13cba2ae 183 void jibanyan(void)
4000263 0:2ead13cba2ae 184 {
4000263 0:2ead13cba2ae 185 int i=0;
4000263 0:2ead13cba2ae 186 uint16_t x,y;
4000263 0:2ead13cba2ae 187
4000263 0:2ead13cba2ae 188 while(1) {
4000263 0:2ead13cba2ae 189 x = jibanyan001[i++];
4000263 0:2ead13cba2ae 190 y = jibanyan001[i++];
4000263 0:2ead13cba2ae 191 if (x == 0 && y == 0) {
4000263 0:2ead13cba2ae 192 i = 0;
4000263 0:2ead13cba2ae 193 }
4000263 0:2ead13cba2ae 194 x += 32767;
4000263 0:2ead13cba2ae 195 y += 32767;
4000263 0:2ead13cba2ae 196 x = 65535 - x; // X-axis invert
4000263 0:2ead13cba2ae 197 mcp4922DataSet('A', x>>4);//wait_us(20);
4000263 0:2ead13cba2ae 198 mcp4922DataSet('B', y>>4);//wait_us(20);
4000263 0:2ead13cba2ae 199 LDAC = 0;
4000263 0:2ead13cba2ae 200 LDAC = 1;
4000263 0:2ead13cba2ae 201 wait_us(100);
4000263 0:2ead13cba2ae 202
4000263 0:2ead13cba2ae 203 }
4000263 0:2ead13cba2ae 204 }
4000263 0:2ead13cba2ae 205 */
4000263 0:2ead13cba2ae 206
4000263 0:2ead13cba2ae 207 /*
4000263 0:2ead13cba2ae 208 void square(void)
4000263 0:2ead13cba2ae 209 {
4000263 0:2ead13cba2ae 210 int i=0;
4000263 0:2ead13cba2ae 211 uint16_t x,y;
4000263 0:2ead13cba2ae 212 bool b;
4000263 0:2ead13cba2ae 213
4000263 0:2ead13cba2ae 214 while(1) {
4000263 0:2ead13cba2ae 215 b = square001[i++];
4000263 0:2ead13cba2ae 216 x = square001[i++];
4000263 0:2ead13cba2ae 217 y = square001[i++];
4000263 0:2ead13cba2ae 218 if (x == 0 && y == 0) {
4000263 0:2ead13cba2ae 219 i = 0;
4000263 0:2ead13cba2ae 220 }
4000263 0:2ead13cba2ae 221 x += 32767;
4000263 0:2ead13cba2ae 222 y += 32767;
4000263 0:2ead13cba2ae 223 mcp4922DataSet('A', x>>4);//wait_us(20);
4000263 0:2ead13cba2ae 224 mcp4922DataSet('B', y>>4);//wait_us(20);
4000263 0:2ead13cba2ae 225 LDAC = 0;
4000263 0:2ead13cba2ae 226 LDAC = 1;
4000263 0:2ead13cba2ae 227 BLK = b;
4000263 0:2ead13cba2ae 228 // wait_us(400);
4000263 0:2ead13cba2ae 229 wait_us(2000);
4000263 0:2ead13cba2ae 230
4000263 0:2ead13cba2ae 231 }
4000263 0:2ead13cba2ae 232
4000263 0:2ead13cba2ae 233 }
4000263 0:2ead13cba2ae 234 */
4000263 0:2ead13cba2ae 235
4000263 0:2ead13cba2ae 236
4000263 0:2ead13cba2ae 237
4000263 0:2ead13cba2ae 238 /*
4000263 0:2ead13cba2ae 239 void square(void)
4000263 0:2ead13cba2ae 240 {
4000263 0:2ead13cba2ae 241 int i=0;
4000263 0:2ead13cba2ae 242 uint16_t x,y;
4000263 0:2ead13cba2ae 243
4000263 0:2ead13cba2ae 244 while(1) {
4000263 0:2ead13cba2ae 245 x = square001[i++];
4000263 0:2ead13cba2ae 246 y = square001[i++];
4000263 0:2ead13cba2ae 247 if (x == 0 && y == 0) {
4000263 0:2ead13cba2ae 248 i = 0;
4000263 0:2ead13cba2ae 249 }
4000263 0:2ead13cba2ae 250 x += 32767;
4000263 0:2ead13cba2ae 251 y += 32767;
4000263 0:2ead13cba2ae 252 x = 65535 - x; // X-axis invert
4000263 0:2ead13cba2ae 253 mcp4922DataSet('A', x>>4);//wait_us(20);
4000263 0:2ead13cba2ae 254 mcp4922DataSet('B', y>>4);//wait_us(20);
4000263 0:2ead13cba2ae 255 LDAC = 0;
4000263 0:2ead13cba2ae 256 LDAC = 1;
4000263 0:2ead13cba2ae 257 wait_us(100);
4000263 0:2ead13cba2ae 258
4000263 0:2ead13cba2ae 259 }
4000263 0:2ead13cba2ae 260
4000263 0:2ead13cba2ae 261 }
4000263 0:2ead13cba2ae 262 */
4000263 0:2ead13cba2ae 263
4000263 0:2ead13cba2ae 264
4000263 0:2ead13cba2ae 265
4000263 0:2ead13cba2ae 266
4000263 0:2ead13cba2ae 267
4000263 0:2ead13cba2ae 268 Ticker timer;
4000263 0:2ead13cba2ae 269
4000263 0:2ead13cba2ae 270 uint8_t CNT=0;
4000263 0:2ead13cba2ae 271 // timer.attach(&int_timer, 1); // 1 second
4000263 0:2ead13cba2ae 272 void int_timer(void)
4000263 0:2ead13cba2ae 273 {
4000263 0:2ead13cba2ae 274 CNT++;
4000263 0:2ead13cba2ae 275 }
4000263 0:2ead13cba2ae 276
4000263 0:2ead13cba2ae 277
4000263 0:2ead13cba2ae 278
4000263 0:2ead13cba2ae 279 void laserscan(const int *p)
4000263 0:2ead13cba2ae 280 {
4000263 0:2ead13cba2ae 281 int i = 0;
4000263 0:2ead13cba2ae 282 uint16_t x,y = 0;
4000263 0:2ead13cba2ae 283
4000263 0:2ead13cba2ae 284 // while(1) {
4000263 0:2ead13cba2ae 285 while(CNT < 5) {
4000263 0:2ead13cba2ae 286
4000263 0:2ead13cba2ae 287 x = *(p + i++);
4000263 0:2ead13cba2ae 288 y = *(p + i++);
4000263 0:2ead13cba2ae 289
4000263 0:2ead13cba2ae 290 if (x == 0 && y == 0) {
4000263 0:2ead13cba2ae 291 i = 0;
4000263 0:2ead13cba2ae 292 }
4000263 0:2ead13cba2ae 293
4000263 0:2ead13cba2ae 294 x += 32767;
4000263 0:2ead13cba2ae 295 y += 32767;
4000263 0:2ead13cba2ae 296 x = 65535 - x; // X-axis invert
4000263 0:2ead13cba2ae 297
4000263 0:2ead13cba2ae 298 mcp4922DataSet('A', x>>4);//wait_us(20);
4000263 0:2ead13cba2ae 299 mcp4922DataSet('B', y>>4);//wait_us(20);
4000263 0:2ead13cba2ae 300
4000263 0:2ead13cba2ae 301 LDAC = 0;
4000263 0:2ead13cba2ae 302 LDAC = 1;
4000263 0:2ead13cba2ae 303
4000263 0:2ead13cba2ae 304 wait_us(100);
4000263 0:2ead13cba2ae 305 }
4000263 0:2ead13cba2ae 306 CNT = 0;
4000263 0:2ead13cba2ae 307 }
4000263 0:2ead13cba2ae 308
4000263 0:2ead13cba2ae 309
4000263 0:2ead13cba2ae 310
4000263 0:2ead13cba2ae 311
4000263 0:2ead13cba2ae 312
4000263 0:2ead13cba2ae 313
4000263 0:2ead13cba2ae 314
4000263 0:2ead13cba2ae 315 #define test8bit
4000263 0:2ead13cba2ae 316 void disposc(const int *p,char b)
4000263 0:2ead13cba2ae 317 {
4000263 0:2ead13cba2ae 318 int x, y, c = 0;
4000263 0:2ead13cba2ae 319
4000263 0:2ead13cba2ae 320 while(CNT < 10) {
4000263 0:2ead13cba2ae 321 x = *p++;
4000263 0:2ead13cba2ae 322 y = *p++;
4000263 0:2ead13cba2ae 323 c += 2;
4000263 0:2ead13cba2ae 324 if (x == -1 &&y == -1) {
4000263 0:2ead13cba2ae 325 p = p - c;
4000263 0:2ead13cba2ae 326 c = 0;
4000263 0:2ead13cba2ae 327 x = *p++;
4000263 0:2ead13cba2ae 328 y = *p++;
4000263 0:2ead13cba2ae 329 c += 2;
4000263 0:2ead13cba2ae 330 }
4000263 0:2ead13cba2ae 331 if (b==8) {
4000263 0:2ead13cba2ae 332 x <<= 3 ;
4000263 0:2ead13cba2ae 333 y <<= 3 ;
4000263 0:2ead13cba2ae 334 }
4000263 0:2ead13cba2ae 335
4000263 0:2ead13cba2ae 336 if (x < (128<<8)) x += (128<<8);
4000263 0:2ead13cba2ae 337 else x -= (128<<8);
4000263 0:2ead13cba2ae 338 if (y < (128<<8)) y += (128<<8);
4000263 0:2ead13cba2ae 339 else y -= (128<<8);
4000263 0:2ead13cba2ae 340
4000263 0:2ead13cba2ae 341 #ifdef test8bit
4000263 0:2ead13cba2ae 342 if (f8 == 1) {
4000263 0:2ead13cba2ae 343 mcp4922DataSet('A', (x>>4) & 0x0FF0);
4000263 0:2ead13cba2ae 344 mcp4922DataSet('B', (y>>4) & 0x0FF0);
4000263 0:2ead13cba2ae 345 } else {
4000263 0:2ead13cba2ae 346 mcp4922DataSet('A', x>>4);
4000263 0:2ead13cba2ae 347 mcp4922DataSet('B', y>>4);
4000263 0:2ead13cba2ae 348 }
4000263 0:2ead13cba2ae 349 #else
4000263 0:2ead13cba2ae 350 mcp4922DataSet('A', x>>4);
4000263 0:2ead13cba2ae 351 mcp4922DataSet('B', y>>4);
4000263 0:2ead13cba2ae 352 #endif
4000263 0:2ead13cba2ae 353 LDAC = 0;
4000263 0:2ead13cba2ae 354 LDAC = 1;
4000263 0:2ead13cba2ae 355 wait_us(2);
4000263 0:2ead13cba2ae 356
4000263 0:2ead13cba2ae 357 }
4000263 0:2ead13cba2ae 358 CNT = 0;
4000263 0:2ead13cba2ae 359
4000263 0:2ead13cba2ae 360 }
4000263 0:2ead13cba2ae 361
4000263 0:2ead13cba2ae 362 int main(void)
4000263 0:2ead13cba2ae 363 {
4000263 0:2ead13cba2ae 364
4000263 0:2ead13cba2ae 365 spi.format(16,0);
4000263 0:2ead13cba2ae 366 spi.frequency(20000000);
4000263 0:2ead13cba2ae 367
4000263 0:2ead13cba2ae 368 mcp4922Init();
4000263 0:2ead13cba2ae 369
4000263 0:2ead13cba2ae 370 timer.attach(&int_timer, 1);
4000263 0:2ead13cba2ae 371
4000263 0:2ead13cba2ae 372 /*
4000263 0:2ead13cba2ae 373 while(1) {
4000263 0:2ead13cba2ae 374 char c = pc.getc();
4000263 0:2ead13cba2ae 375 lcd.printf("%02X",c);
4000263 0:2ead13cba2ae 376
4000263 0:2ead13cba2ae 377 // char str[] = "145";
4000263 0:2ead13cba2ae 378 // int buff = atoi(str);
4000263 0:2ead13cba2ae 379 // lcd.printf("%02X",buff);
4000263 0:2ead13cba2ae 380
4000263 0:2ead13cba2ae 381 laserscan(c);
4000263 0:2ead13cba2ae 382
4000263 0:2ead13cba2ae 383 }
4000263 0:2ead13cba2ae 384 */
4000263 0:2ead13cba2ae 385
4000263 0:2ead13cba2ae 386
4000263 0:2ead13cba2ae 387
4000263 0:2ead13cba2ae 388 while(1) {
4000263 0:2ead13cba2ae 389 laserscan(jibanyan);
4000263 0:2ead13cba2ae 390 laserscan(star);
4000263 0:2ead13cba2ae 391 laserscan(square);
4000263 0:2ead13cba2ae 392 }
4000263 0:2ead13cba2ae 393
4000263 0:2ead13cba2ae 394
4000263 0:2ead13cba2ae 395 }