#N canvas 62 23 698 571 10; #N canvas 233 472 454 304 INSTALL-NOTES 0; #X text 39 201 [comport] \, from pd-cvs/externals/iem/comport; #X text 39 185 [arduino] \, from pd-cvs/externals/hardware/arduino ; #X text 39 217 [speedlim] \, from iemlib \, pd-cvs/externals/iemlib ; #X text 20 27 1 General information on arduino: http://www.arduino.cc ; #X text 20 61 2 You need the firmware for Pduino: http://at.or.at/hans/pd/objects.html ; #X text 20 109 3 Don't forget to upload the firmware onto your arduino board !; #X text 21 159 4 Pduino needs the following externals and abstractions: ; #X text 22 257 5 If you still have troubles \, mail to the pd list !; #X restore 25 92 pd INSTALL-NOTES; #X text 150 93 <- read this first !; #X obj 402 90 arduino 5; #X obj 26 180 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -260818 -1 -1 0; #X msg 26 198 open \$1; #X floatatom 109 197 5 0 0 0 - - -; #X obj 402 69 r \$0-arduino; #X msg 37 219 close; #X msg 47 240 info; #X text 21 157 select/close the serial port:; #X obj 26 262 s \$0-arduino; #N canvas 728 223 550 248 DIGITAL-OUTPUT 0; #X text 21 78 I/O the individual pins:; #X obj 42 118 tgl 15 0 empty empty 1 3 -6 0 10 -260818 -1 -1 0 1; #X obj 60 118 tgl 15 0 empty empty 2 3 -6 0 10 -260818 -1 -1 0 1; #X obj 79 118 tgl 15 0 empty empty 3 3 -6 0 10 -260818 -1 -1 0 1; #X obj 97 118 tgl 15 0 empty empty 4 3 -6 0 10 -260818 -1 -1 0 1; #X obj 116 118 tgl 15 0 empty empty 5 3 -6 0 10 -260818 -1 -1 0 1; #X obj 134 118 tgl 15 0 empty empty 6 3 -6 0 10 -260818 -1 -1 0 1; #X obj 153 118 tgl 15 0 empty empty 7 3 -6 0 10 -260818 -1 -1 0 1; #X obj 171 118 tgl 15 0 empty empty 8 3 -6 0 10 -260818 -1 -1 0 1; #X obj 190 118 tgl 15 0 empty empty 9 3 -6 0 10 -260818 -1 -1 0 1; #X obj 208 118 tgl 15 0 empty empty 10 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 227 118 tgl 15 0 empty empty 11 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 245 118 tgl 15 0 empty empty 12 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 264 118 tgl 15 0 empty empty 13 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 284 98 tgl 20 0 empty empty empty 0 -6 0 8 -258699 -1 -1 0 1 ; #X obj 24 118 tgl 15 0 empty empty 0 3 -6 0 10 -260818 -1 -1 0 1; #N canvas 688 388 650 300 send-to-arduino................. 0; #X obj 39 44 inlet; #X obj 79 44 inlet; #X obj 118 44 inlet; #X obj 158 44 inlet; #X obj 198 44 inlet; #X obj 238 44 inlet; #X obj 277 44 inlet; #X obj 317 44 inlet; #X obj 358 43 inlet; #X obj 398 43 inlet; #X obj 437 43 inlet; #X obj 477 43 inlet; #X obj 517 43 inlet; #X obj 556 43 inlet; #X obj 358 160 trigger bang float; #X obj 358 220 +; #X obj 358 183 float; #X obj 479 181 << 8; #N canvas 742 158 609 360 bytemask------------------------------ 0 ; #X obj 269 332 outlet; #X obj 269 279 float; #X obj 318 183 |; #X obj 111 239 -; #X obj 110 204 float; #X obj 110 184 trigger bang float; #X obj 231 204 &; #X obj 183 142 route 0 1; #X msg 36 56 \$1 1; #X msg 106 56 \$1 2; #X msg 176 56 \$1 4; #X msg 246 56 \$1 8; #X msg 316 56 \$1 16; #X msg 386 56 \$1 32; #X msg 456 56 \$1 64; #X msg 526 56 \$1 128; #X obj 36 15 inlet; #X obj 106 15 inlet; #X obj 176 15 inlet; #X obj 246 15 inlet; #X obj 316 15 inlet; #X obj 386 15 inlet; #X obj 456 15 inlet; #X obj 526 15 inlet; #X obj 36 35 change; #X obj 106 35 change; #X obj 176 35 change; #X obj 246 35 change; #X obj 316 35 change; #X obj 386 35 change; #X obj 456 35 change; #X obj 526 35 change; #X connect 1 0 2 1; #X connect 1 0 4 1; #X connect 1 0 6 1; #X connect 1 0 0 0; #X connect 2 0 1 0; #X connect 3 0 1 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 5 1 6 0; #X connect 6 0 3 1; #X connect 7 0 5 0; #X connect 7 1 2 0; #X connect 8 0 7 0; #X connect 9 0 7 0; #X connect 10 0 7 0; #X connect 11 0 7 0; #X connect 12 0 7 0; #X connect 13 0 7 0; #X connect 14 0 7 0; #X connect 15 0 7 0; #X connect 16 0 24 0; #X connect 17 0 25 0; #X connect 18 0 26 0; #X connect 19 0 27 0; #X connect 20 0 28 0; #X connect 21 0 29 0; #X connect 22 0 30 0; #X connect 23 0 31 0; #X connect 24 0 8 0; #X connect 25 0 9 0; #X connect 26 0 10 0; #X connect 27 0 11 0; #X connect 28 0 12 0; #X connect 29 0 13 0; #X connect 30 0 14 0; #X connect 31 0 15 0; #X restore 39 100 pd bytemask------------------------------; #N canvas 742 158 609 360 bytemask------------------ 0; #X obj 269 332 outlet; #X obj 269 279 float; #X obj 318 183 |; #X obj 111 239 -; #X obj 110 204 float; #X obj 110 184 trigger bang float; #X obj 231 204 &; #X obj 183 142 route 0 1; #X msg 36 56 \$1 1; #X msg 106 56 \$1 2; #X msg 176 56 \$1 4; #X msg 246 56 \$1 8; #X msg 316 56 \$1 16; #X msg 386 56 \$1 32; #X msg 456 56 \$1 64; #X msg 526 56 \$1 128; #X obj 36 15 inlet; #X obj 106 15 inlet; #X obj 176 15 inlet; #X obj 246 15 inlet; #X obj 316 15 inlet; #X obj 386 15 inlet; #X obj 456 15 inlet; #X obj 526 15 inlet; #X obj 36 35 change; #X obj 106 35 change; #X obj 176 35 change; #X obj 246 35 change; #X obj 316 35 change; #X obj 386 35 change; #X obj 456 35 change; #X obj 526 35 change; #X connect 1 0 2 1; #X connect 1 0 4 1; #X connect 1 0 6 1; #X connect 1 0 0 0; #X connect 2 0 1 0; #X connect 3 0 1 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 5 1 6 0; #X connect 6 0 3 1; #X connect 7 0 5 0; #X connect 7 1 2 0; #X connect 8 0 7 0; #X connect 9 0 7 0; #X connect 10 0 7 0; #X connect 11 0 7 0; #X connect 12 0 7 0; #X connect 13 0 7 0; #X connect 14 0 7 0; #X connect 15 0 7 0; #X connect 16 0 24 0; #X connect 17 0 25 0; #X connect 18 0 26 0; #X connect 19 0 27 0; #X connect 20 0 28 0; #X connect 21 0 29 0; #X connect 22 0 30 0; #X connect 23 0 31 0; #X connect 24 0 8 0; #X connect 25 0 9 0; #X connect 26 0 10 0; #X connect 27 0 11 0; #X connect 28 0 12 0; #X connect 29 0 13 0; #X connect 30 0 14 0; #X connect 31 0 15 0; #X restore 358 101 pd bytemask------------------; #X obj 358 251 outlet; #X connect 0 0 18 0; #X connect 1 0 18 1; #X connect 2 0 18 2; #X connect 3 0 18 3; #X connect 4 0 18 4; #X connect 5 0 18 5; #X connect 6 0 18 6; #X connect 7 0 18 7; #X connect 8 0 19 0; #X connect 9 0 19 1; #X connect 10 0 19 2; #X connect 11 0 19 3; #X connect 12 0 19 4; #X connect 13 0 19 5; #X connect 14 0 16 0; #X connect 14 1 17 0; #X connect 15 0 20 0; #X connect 16 0 15 0; #X connect 17 0 15 1; #X connect 18 0 16 0; #X connect 19 0 14 0; #X restore 24 145 pd send-to-arduino.................; #X obj 24 196 s \$0-arduino; #X floatatom 41 172 5 0 0 0 - - -; #X text 124 175 the pins are controlled with decimal numbers \, so you have to convert the binary toggle to a decimal number; #X text 20 32 NOTE: don't forget to set pins to output mode first! ; #X connect 1 0 16 1; #X connect 2 0 16 2; #X connect 3 0 16 3; #X connect 4 0 16 4; #X connect 5 0 16 5; #X connect 6 0 16 6; #X connect 7 0 16 7; #X connect 8 0 16 8; #X connect 9 0 16 9; #X connect 10 0 16 10; #X connect 11 0 16 11; #X connect 12 0 16 12; #X connect 13 0 16 13; #X connect 14 0 13 0; #X connect 14 0 12 0; #X connect 14 0 11 0; #X connect 14 0 10 0; #X connect 14 0 9 0; #X connect 14 0 8 0; #X connect 14 0 7 0; #X connect 14 0 6 0; #X connect 14 0 5 0; #X connect 14 0 4 0; #X connect 14 0 3 0; #X connect 14 0 2 0; #X connect 14 0 1 0; #X connect 14 0 15 0; #X connect 15 0 16 0; #X connect 16 0 17 0; #X connect 16 0 18 0; #X restore 171 438 pd DIGITAL-OUTPUT; #N canvas 494 94 550 252 DIGITAL-INPUT 0; #X obj 46 128 tgl 15 0 empty empty 1 3 -6 0 10 -260818 -1 -1 0 2; #X obj 64 128 tgl 15 0 empty empty 2 3 -6 0 10 -260818 -1 -1 0 4; #X obj 82 128 tgl 15 0 empty empty 3 3 -6 0 10 -260818 -1 -1 0 8; #X obj 100 128 tgl 15 0 empty empty 4 3 -6 0 10 -260818 -1 -1 0 16 ; #X obj 119 128 tgl 15 0 empty empty 5 3 -6 0 10 -260818 -1 -1 0 32 ; #X obj 137 128 tgl 15 0 empty empty 6 3 -6 0 10 -260818 -1 -1 0 64 ; #X obj 156 128 tgl 15 0 empty empty 7 3 -6 0 10 -260818 -1 -1 0 128 ; #X obj 174 128 tgl 15 0 empty empty 8 3 -6 0 10 -260818 -1 -1 0 256 ; #X obj 194 128 tgl 15 0 empty empty 9 3 -6 0 10 -260818 -1 -1 0 512 ; #X obj 211 128 tgl 15 0 empty empty 10 3 -6 0 10 -260818 -1 -1 0 1024 ; #X obj 230 128 tgl 15 0 empty empty 11 3 -6 0 10 -260818 -1 -1 0 2048 ; #X obj 248 128 tgl 15 0 empty empty 12 3 -6 0 10 -260818 -1 -1 0 4096 ; #X obj 267 128 tgl 15 0 empty empty 13 3 -6 0 10 -260818 -1 -1 0 8192 ; #X obj 28 128 tgl 15 0 empty empty 0 3 -6 0 10 -260818 -1 -1 0 1; #N canvas 64 160 778 300 send-to-arduino................. 0; #X obj 35 55 route digital; #X obj 35 229 outlet; #X obj 85 229 outlet; #X obj 137 229 outlet; #X obj 187 229 outlet; #X obj 237 229 outlet; #X obj 287 229 outlet; #X obj 339 229 outlet; #X obj 389 229 outlet; #X obj 437 229 outlet; #X obj 487 229 outlet; #X obj 539 229 outlet; #X obj 589 229 outlet; #X obj 637 229 outlet; #X obj 687 229 outlet; #X obj 35 25 inlet; #X text 289 82 bitmask to get the individual inputs; #X obj 665 171 & 8192; #X obj 613 169 & 4096; #X obj 553 169 & 2048; #X obj 35 169 & 1; #X obj 79 169 & 2; #X obj 125 171 & 4; #X obj 171 169 & 8; #X obj 217 169 & 16; #X obj 264 169 & 32; #X obj 313 169 & 64; #X obj 356 169 & 128; #X obj 403 169 & 256; #X obj 447 169 & 512; #X obj 495 169 & 1024; #X connect 0 0 17 0; #X connect 0 0 18 0; #X connect 0 0 19 0; #X connect 0 0 20 0; #X connect 0 0 21 0; #X connect 0 0 22 0; #X connect 0 0 23 0; #X connect 0 0 24 0; #X connect 0 0 25 0; #X connect 0 0 26 0; #X connect 0 0 27 0; #X connect 0 0 28 0; #X connect 0 0 29 0; #X connect 0 0 30 0; #X connect 15 0 0 0; #X connect 17 0 14 0; #X connect 18 0 13 0; #X connect 19 0 12 0; #X connect 20 0 1 0; #X connect 21 0 2 0; #X connect 22 0 3 0; #X connect 23 0 4 0; #X connect 24 0 5 0; #X connect 25 0 6 0; #X connect 26 0 7 0; #X connect 27 0 8 0; #X connect 28 0 9 0; #X connect 29 0 10 0; #X connect 30 0 11 0; #X restore 28 93 pd send-to-arduino.................; #X obj 28 69 r \$0-arduino-out; #X text 301 75 connect the Digital Input; #X text 301 92 to the ground (=0) or to; #X text 301 109 the positive voltage (=1); #X text 27 167 NOTE: if you don't connect your pin neither to + nor to the ground \, you will get random values (0 or 1) - to avoid that \, you could connect all the pins to the ground !; #X text 28 34 NOTE: don't forget to set pins to input mode first!; #X connect 14 0 13 0; #X connect 14 1 0 0; #X connect 14 2 1 0; #X connect 14 3 2 0; #X connect 14 4 3 0; #X connect 14 5 4 0; #X connect 14 6 5 0; #X connect 14 7 6 0; #X connect 14 8 7 0; #X connect 14 9 8 0; #X connect 14 10 9 0; #X connect 14 11 10 0; #X connect 14 12 11 0; #X connect 14 13 12 0; #X connect 15 0 14 0; #X restore 178 414 pd DIGITAL-INPUT; #X obj 402 111 s \$0-arduino-out; #X text 525 239 (0=input \, 1=output); #X obj 289 212 tgl 15 0 empty empty 1 3 -6 0 10 -260818 -1 -1 0 1; #X obj 307 212 tgl 15 0 empty empty 2 3 -6 0 10 -260818 -1 -1 0 1; #X obj 325 212 tgl 15 0 empty empty 3 3 -6 0 10 -260818 -1 -1 0 1; #X obj 343 212 tgl 15 0 empty empty 4 3 -6 0 10 -260818 -1 -1 0 1; #X obj 361 212 tgl 15 0 empty empty 5 3 -6 0 10 -260818 -1 -1 0 1; #X obj 379 212 tgl 15 0 empty empty 6 3 -6 0 10 -260818 -1 -1 0 1; #X obj 397 212 tgl 15 0 empty empty 7 3 -6 0 10 -260818 -1 -1 0 1; #X obj 415 212 tgl 15 0 empty empty 8 3 -6 0 10 -260818 -1 -1 0 1; #X obj 433 212 tgl 15 0 empty empty 9 3 -6 0 10 -260818 -1 -1 0 1; #X obj 451 212 tgl 15 0 empty empty 10 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 469 212 tgl 15 0 empty empty 11 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 487 212 tgl 15 0 empty empty 12 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 505 212 tgl 15 0 empty empty 13 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 531 192 tgl 20 0 empty empty empty 0 -6 0 8 -258699 -1 -1 0 1; #X text 530 177 all; #X obj 271 212 tgl 15 0 empty empty 0 3 -6 0 10 -260818 -1 -1 0 1; #N canvas 554 328 750 300 send-to-arduino---------------- 0; #X obj 49 54 inlet; #X obj 89 54 inlet; #X obj 128 54 inlet; #X obj 168 54 inlet; #X obj 208 54 inlet; #X obj 248 54 inlet; #X obj 287 54 inlet; #X obj 327 54 inlet; #X obj 368 53 inlet; #X obj 408 53 inlet; #X obj 447 53 inlet; #X obj 487 53 inlet; #X obj 527 53 inlet; #X msg 49 96 outputMode 0 \$1; #X msg 89 118 outputMode 1 \$1; #X msg 128 140 outputMode 2 \$1; #X msg 168 160 outputMode 3 \$1; #X msg 208 92 outputMode 4 \$1; #X msg 248 114 outputMode 5 \$1; #X msg 287 136 outputMode 6 \$1; #X msg 327 156 outputMode 7 \$1; #X msg 368 88 outputMode 8 \$1; #X msg 408 110 outputMode 9 \$1; #X msg 447 132 outputMode 10 \$1; #X msg 487 152 outputMode 11 \$1; #X msg 527 80 outputMode 12 \$1; #X obj 566 53 inlet; #X msg 566 100 outputMode 13 \$1; #X obj 305 226 outlet; #X connect 0 0 13 0; #X connect 1 0 14 0; #X connect 2 0 15 0; #X connect 3 0 16 0; #X connect 4 0 17 0; #X connect 5 0 18 0; #X connect 6 0 19 0; #X connect 7 0 20 0; #X connect 8 0 21 0; #X connect 9 0 22 0; #X connect 10 0 23 0; #X connect 11 0 24 0; #X connect 12 0 25 0; #X connect 13 0 28 0; #X connect 14 0 28 0; #X connect 15 0 28 0; #X connect 16 0 28 0; #X connect 17 0 28 0; #X connect 18 0 28 0; #X connect 19 0 28 0; #X connect 20 0 28 0; #X connect 21 0 28 0; #X connect 22 0 28 0; #X connect 23 0 28 0; #X connect 24 0 28 0; #X connect 25 0 28 0; #X connect 26 0 27 0; #X connect 27 0 28 0; #X restore 271 239 pd send-to-arduino----------------; #X obj 271 292 s \$0-arduino; #X msg 294 265 outputMode 13 1; #X text 412 265 set pin 13 to output mode; #X text 270 159 Set input/output mode of the pins for digital IO:; #N canvas 374 455 492 344 ANALOG-INPUT 0; #X obj 29 59 r \$0-arduino-out; #X obj 29 97 spigot 0; #X obj 91 94 tgl 20 0 empty empty empty 0 -6 0 8 -258699 -1 -1 0 1 ; #X obj 29 139 route analog0 analog1 analog2 analog3 analog4 analog5 ; #X floatatom 29 220 5 0 0 3 analog0 - -; #X floatatom 102 219 5 0 0 3 analog1 - -; #X floatatom 175 219 5 0 0 3 analog2 - -; #X floatatom 248 220 5 0 0 3 analog3 - -; #X floatatom 321 220 5 0 0 3 analog4 - -; #X floatatom 395 221 5 0 0 3 analog5 - -; #N canvas 400 102 662 136 speed-limiting-to-save-cpu------------------------ 0; #X obj 19 31 inlet; #X obj 19 55 speedlim 100; #X obj 19 79 outlet; #X obj 119 31 inlet; #X obj 119 55 speedlim 100; #X obj 119 79 outlet; #X obj 219 31 inlet; #X obj 219 55 speedlim 100; #X obj 219 79 outlet; #X obj 319 31 inlet; #X obj 319 55 speedlim 100; #X obj 319 79 outlet; #X obj 419 31 inlet; #X obj 419 55 speedlim 100; #X obj 419 79 outlet; #X obj 519 31 inlet; #X obj 519 55 speedlim 100; #X obj 519 79 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 6 0 7 0; #X connect 7 0 8 0; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 15 0 16 0; #X connect 16 0 17 0; #X restore 29 173 pd speed-limiting-to-save-cpu------------------------ ; #X text 30 24 Analog Inputs of the Arduino-Board:; #X text 119 96 <- enable analog inputs; #X text 25 283 NOTE: connect the analog pins that you don't use to the ground \, if you want to avoid flickering of the values !; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 2 0 1 1; #X connect 3 0 10 0; #X connect 3 1 10 1; #X connect 3 2 10 2; #X connect 3 3 10 3; #X connect 3 4 10 4; #X connect 3 5 10 5; #X connect 10 0 4 0; #X connect 10 1 5 0; #X connect 10 2 6 0; #X connect 10 3 7 0; #X connect 10 4 8 0; #X connect 10 5 9 0; #X restore 185 462 pd ANALOG-INPUT; #N canvas 729 582 542 358 ANALOG-OUTPUT-PWM 0; #X text 16 17 Analog Output \, PWM (Pulse Width Modulation); #X text 16 53 With the help of PWM you can write analog values to the pins 9 \, 10 \, 11 of your Arduino board.; #X text 17 89 NOTE: don't forget to set the pins to output mode first !; #X msg 21 189 pwm 9 \$1; #X obj 24 168 hsl 150 17 0 1 0 0 empty empty PWM_control_(0-1) -2 -6 1 10 -260818 -1 -1 0 1; #X msg 31 234 pwm 9 off; #X obj 21 258 s \$0-arduino; #X text 29 215 disable PWM:; #X obj 192 168 hsl 150 17 0 1 0 0 empty empty PWM_control_(0-1) -2 -6 1 10 -260818 -1 -1 0 1; #X obj 189 258 s \$0-arduino; #X text 197 215 disable PWM:; #X obj 354 168 hsl 150 17 0 1 0 0 empty empty PWM_control_(0-1) -2 -6 1 10 -260818 -1 -1 0 1; #X obj 351 258 s \$0-arduino; #X text 359 215 disable PWM:; #X text 21 133 PIN9:; #X text 189 135 PIN10:; #X text 351 135 PIN11:; #X msg 189 189 pwm 10 \$1; #X msg 199 234 pwm 10 off; #X msg 351 189 pwm 11 \$1; #X msg 361 234 pwm 11 off; #X text 21 319 NOTE: it is possible to write as well on the other pins to send software-PWM signals (will come soon ...); #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 5 0 6 0; #X connect 8 0 17 0; #X connect 11 0 19 0; #X connect 17 0 9 0; #X connect 18 0 9 0; #X connect 19 0 12 0; #X connect 20 0 12 0; #X restore 150 487 pd ANALOG-OUTPUT-PWM; #X text 25 357 With the Arduino-Board you can do digital and analog input and output \, as descriped in the following sub-patches:; #X text 301 437 <- example of Digital Output; #X text 301 415 <- example of Digital Input; #X text 301 463 <- example of Analog Input; #X text 301 488 <- example of Analog Output; #X text 259 30 Arduino Interface For PD; #X text 286 4 ::::_PDUINO_::::; #X text 475 531 2006 \, released under GNU GPL \; Gerda Strobl \, Georg Holzmann; #X text 86 241 <- list devices; #X connect 2 0 13 0; #X connect 3 0 4 0; #X connect 3 0 5 0; #X connect 4 0 10 0; #X connect 6 0 2 0; #X connect 7 0 10 0; #X connect 8 0 10 0; #X connect 15 0 31 1; #X connect 16 0 31 2; #X connect 17 0 31 3; #X connect 18 0 31 4; #X connect 19 0 31 5; #X connect 20 0 31 6; #X connect 21 0 31 7; #X connect 22 0 31 8; #X connect 23 0 31 9; #X connect 24 0 31 10; #X connect 25 0 31 11; #X connect 26 0 31 12; #X connect 27 0 31 13; #X connect 28 0 27 0; #X connect 28 0 26 0; #X connect 28 0 25 0; #X connect 28 0 24 0; #X connect 28 0 23 0; #X connect 28 0 22 0; #X connect 28 0 21 0; #X connect 28 0 20 0; #X connect 28 0 19 0; #X connect 28 0 18 0; #X connect 28 0 17 0; #X connect 28 0 16 0; #X connect 28 0 15 0; #X connect 28 0 30 0; #X connect 30 0 31 0; #X connect 31 0 32 0; #X connect 33 0 32 0;