#N canvas 119 23 691 591 10; #N canvas 233 472 462 312 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 26 198 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -260818 -1 -1 0; #X msg 26 216 open \$1; #X floatatom 109 215 5 0 0 0 - - -; #X msg 37 237 close; #X msg 47 258 info; #X text 21 175 select/close the serial port:; #N canvas 248 49 455 332 DIGITAL-OUTPUT 1; #X text 72 97 I/O the individual pins:; #X text 20 22 NOTE: don't forget to set pins to output mode first! ; #X obj 40 194 cnv 15 100 22 empty empty empty 20 12 0 14 -253938 -66577 0; #X msg 49 197 digital 13 0; #X obj 168 134 tgl 15 0 empty empty 7 4 -6 1 12 -233017 -1 -1 0 1; #X obj 185 134 tgl 15 0 empty empty 8 4 -6 1 12 -233017 -1 -1 0 1; #X obj 202 134 tgl 15 0 empty empty 9 4 -6 1 12 -233017 -1 -1 0 1; #X obj 219 134 tgl 15 0 empty empty 10 0 -6 1 12 -233017 -1 -1 0 1 ; #X obj 236 134 tgl 15 0 empty empty 11 0 -6 1 12 -233017 -1 -1 0 1 ; #X obj 253 134 tgl 15 0 empty empty 12 0 -6 1 12 -233017 -1 -1 0 1 ; #X obj 270 134 tgl 15 0 empty empty 13 0 -6 1 12 -233017 -1 -1 0 1 ; #X obj 49 134 tgl 15 0 empty empty 0 4 -6 1 12 -233017 -1 -1 0 1; #X obj 66 134 tgl 15 0 empty empty 1 4 -6 1 12 -233017 -1 -1 0 1; #X obj 83 134 tgl 15 0 empty empty 2 4 -6 1 12 -233017 -1 -1 0 1; #X obj 100 134 tgl 15 0 empty empty 3 4 -6 1 12 -233017 -1 -1 0 1; #X obj 117 134 tgl 15 0 empty empty 5 4 -6 1 12 -233017 -1 -1 0 1; #X obj 134 134 tgl 15 0 empty empty 6 4 -6 1 12 -233017 -1 -1 0 1; #X obj 151 134 tgl 15 0 empty empty 7 4 -6 1 12 -233017 -1 -1 0 1; #N canvas 478 328 806 356 generate 0; #X obj 49 24 inlet; #X obj 89 24 inlet; #X obj 128 24 inlet; #X obj 168 24 inlet; #X obj 208 24 inlet; #X obj 248 24 inlet; #X obj 287 24 inlet; #X obj 327 24 inlet; #X obj 368 23 inlet; #X obj 408 23 inlet; #X obj 447 23 inlet; #X obj 487 23 inlet; #X obj 527 23 inlet; #X msg 49 66 digital 0 \$1; #X msg 89 88 digital 1 \$1; #X msg 128 110 digital 2 \$1; #X msg 168 130 digital 3 \$1; #X msg 208 62 digital 4 \$1; #X msg 248 84 digital 5 \$1; #X msg 287 106 digital 6 \$1; #X msg 327 126 digital 7 \$1; #X msg 368 58 digital 8 \$1; #X msg 408 80 digital 9 \$1; #X msg 447 102 digital 10 \$1; #X msg 487 122 digital 11 \$1; #X msg 527 50 digital 12 \$1; #X obj 566 23 inlet; #X msg 566 70 digital 13 \$1; #X obj 305 196 prepend set; #X obj 305 254 outlet; #X obj 305 215 trigger bang anything; #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 connect 28 0 30 0; #X connect 30 0 29 0; #X connect 30 1 29 0; #X restore 49 158 pd generate digital out messages; #X obj 319 109 tgl 25 0 empty empty ALL 2 12 0 12 -262144 -1 -1 0 1 ; #X obj 319 70 tgl 15 0 empty empty empty 0 -6 0 8 -225271 -1 -1 0 16383 ; #X obj 319 88 metro 100; #X obj 49 280 send \$0-arduino; #X text 143 197 <-- this is the message format; #X text 181 69 strobe all pins -->; #X connect 3 0 22 0; #X connect 4 0 18 7; #X connect 5 0 18 8; #X connect 6 0 18 9; #X connect 7 0 18 10; #X connect 8 0 18 11; #X connect 9 0 18 12; #X connect 10 0 18 13; #X connect 11 0 18 0; #X connect 12 0 18 1; #X connect 13 0 18 2; #X connect 14 0 18 3; #X connect 15 0 18 4; #X connect 16 0 18 5; #X connect 17 0 18 6; #X connect 18 0 3 0; #X connect 19 0 10 0; #X connect 19 0 9 0; #X connect 19 0 8 0; #X connect 19 0 7 0; #X connect 19 0 6 0; #X connect 19 0 5 0; #X connect 19 0 4 0; #X connect 19 0 17 0; #X connect 19 0 16 0; #X connect 19 0 15 0; #X connect 19 0 14 0; #X connect 19 0 13 0; #X connect 19 0 12 0; #X connect 19 0 11 0; #X connect 20 0 21 0; #X connect 21 0 19 0; #X restore 61 428 pd DIGITAL-OUTPUT; #N canvas 494 94 562 264 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 155 128 tgl 15 0 empty empty 7 3 -6 0 10 -260818 -1 -1 0 128 ; #X obj 173 128 tgl 15 0 empty empty 8 3 -6 0 10 -260818 -1 -1 0 256 ; #X obj 191 128 tgl 15 0 empty empty 9 3 -6 0 10 -260818 -1 -1 0 512 ; #X obj 209 128 tgl 15 0 empty empty 10 3 -6 0 10 -260818 -1 -1 0 1024 ; #X obj 227 128 tgl 15 0 empty empty 11 3 -6 0 10 -260818 -1 -1 0 2048 ; #X obj 245 128 tgl 15 0 empty empty 12 3 -6 0 10 -260818 -1 -1 0 4096 ; #X obj 263 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; #X obj 28 49 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 14 NOTE: don't forget to set pins to input mode first!; #X obj 28 93 route 0 1 2 3 4 5 6 7 8 9 10 11 12 13; #X obj 28 71 route digital; #X connect 14 0 21 0; #X connect 20 0 13 0; #X connect 20 1 0 0; #X connect 20 2 1 0; #X connect 20 3 2 0; #X connect 20 4 3 0; #X connect 20 5 4 0; #X connect 20 6 5 0; #X connect 20 7 6 0; #X connect 20 8 7 0; #X connect 20 9 8 0; #X connect 20 10 9 0; #X connect 20 11 10 0; #X connect 20 12 11 0; #X connect 20 13 12 0; #X connect 21 0 20 0; #X restore 68 404 pd DIGITAL-INPUT; #X text 525 229 (0=input \, 1=output); #X obj 289 202 tgl 15 0 empty empty 1 3 -6 0 10 -260818 -1 -1 0 1; #X obj 307 202 tgl 15 0 empty empty 2 3 -6 0 10 -260818 -1 -1 0 1; #X obj 325 202 tgl 15 0 empty empty 3 3 -6 0 10 -260818 -1 -1 0 1; #X obj 343 202 tgl 15 0 empty empty 4 3 -6 0 10 -260818 -1 -1 0 1; #X obj 361 202 tgl 15 0 empty empty 5 3 -6 0 10 -260818 -1 -1 0 1; #X obj 379 202 tgl 15 0 empty empty 6 3 -6 0 10 -260818 -1 -1 0 1; #X obj 397 202 tgl 15 0 empty empty 7 3 -6 0 10 -260818 -1 -1 0 1; #X obj 415 202 tgl 15 0 empty empty 8 3 -6 0 10 -260818 -1 -1 0 1; #X obj 433 202 tgl 15 0 empty empty 9 3 -6 0 10 -260818 -1 -1 0 1; #X obj 451 202 tgl 15 0 empty empty 10 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 469 202 tgl 15 0 empty empty 11 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 487 202 tgl 15 0 empty empty 12 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 505 202 tgl 15 0 empty empty 13 3 -6 0 10 -260818 -1 -1 0 1 ; #X obj 531 182 tgl 20 0 empty empty empty 0 -6 0 8 -258699 -1 -1 0 1; #X text 530 167 all; #X obj 271 202 tgl 15 0 empty empty 0 3 -6 0 10 -260818 -1 -1 0 1; #N canvas 365 337 766 316 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 pinMode 0 \$1; #X msg 89 118 pinMode 1 \$1; #X msg 128 140 pinMode 2 \$1; #X msg 168 160 pinMode 3 \$1; #X msg 208 92 pinMode 4 \$1; #X msg 248 114 pinMode 5 \$1; #X msg 287 136 pinMode 6 \$1; #X msg 327 156 pinMode 7 \$1; #X msg 368 88 pinMode 8 \$1; #X msg 408 110 pinMode 9 \$1; #X msg 447 132 pinMode 10 \$1; #X msg 487 152 pinMode 11 \$1; #X msg 527 80 pinMode 12 \$1; #X obj 566 53 inlet; #X msg 566 100 pinMode 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 229 pd send-to-arduino----------------; #X msg 294 255 pinMode 13 1; #X text 412 255 set pin 13 to output mode; #X text 270 149 Set input/output mode of the pins for digital IO:; #N canvas 374 455 496 348 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 75 452 pd ANALOG-INPUT; #N canvas 462 492 550 366 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 40 477 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 191 427 <- example of Digital Output; #X text 191 405 <- example of Digital Input; #X text 191 453 <- example of Analog Input; #X text 191 478 <- example of Analog Output; #X text 259 30 Arduino Interface For PD; #X text 286 4 ::::_PDUINO_::::; #X text 458 547 2006 \, released under GNU GPL \; Gerda Strobl \, Georg Holzmann; #X text 86 259 <- list devices; #X obj 484 87 spigot; #X obj 515 65 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 271 324 send \$0-arduino; #X obj 344 111 send \$0-arduino-out; #X obj 344 67 receive \$0-arduino; #X obj 26 280 send \$0-arduino; #N canvas 0 22 458 308 GETTING-INFO 0; #X msg 147 65 version; #X msg 207 65 info; #X obj 147 107 send \$0-arduino-out; #X obj 146 146 receive \$0-arduino; #X obj 146 177 route version; #X obj 105 221 unpack 0 0; #X floatatom 105 245 5 0 0 0 - - -; #X floatatom 170 245 5 0 0 0 - - -; #X connect 0 0 2 0; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 5 0 6 0; #X connect 5 1 7 0; #X restore 75 501 pd GETTING-INFO; #X text 191 502 <- example of getting status data; #N canvas 0 22 463 265 SWITCHING-INPUTS 0; #X obj 78 197 send \$0-arduino; #X text 25 32 how many analogIns to enable:; #X obj 161 99 tgl 15 1 empty empty empty 0 -6 0 8 -257472 -1 -1 0 1 ; #X text 184 98 enable/disable digitalIns; #X msg 161 117 digitalIns \$1; #X msg 26 78 analogIns 0; #N canvas 162 133 570 420 serin 0; #X obj 165 61 cnv 15 15 15 empty \$0-analog-number-canvas 0 4 8 0 14 -233017 -1 0; #X obj 60 61 hradio 15 1 1 7 empty empty empty 0 -6 0 8 -225280 -1 -1 0; #X obj 60 13 inlet; #X msg 200 202 label \$1; #X obj 200 180 makefilename %d; #X obj 59 108 int; #X obj 200 225 send \$0-analog-number-canvas; #X obj 59 337 outlet; #X msg 60 210 analogIns \$1; #X msg 201 306 set \$1 \$2; #X obj 59 266 trigger bang anything; #X obj 201 286 list; #X connect 1 0 5 0; #X connect 2 0 1 0; #X connect 3 0 6 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 5 0 8 0; #X connect 8 0 10 0; #X connect 9 0 7 0; #X connect 10 0 7 0; #X connect 10 1 11 0; #X connect 11 0 9 0; #X coords 0 -1 1 1 121 17 1 60 60; #X restore 26 49 pd serin; #X connect 2 0 4 0; #X connect 4 0 0 0; #X connect 5 0 0 0; #X connect 6 0 5 0; #X restore 47 526 pd SWITCHING-INPUTS; #X obj 484 111 print STATUS; #X text 191 526 <- example of switching inputs on and off; #X msg 353 297 digital 13 \$1; #X obj 353 279 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X text 454 295 toggle pin 13 on and off; #X obj 344 90 arduino 1; #X connect 2 0 3 0; #X connect 2 0 4 0; #X connect 3 0 47 0; #X connect 5 0 47 0; #X connect 6 0 47 0; #X connect 11 0 27 1; #X connect 12 0 27 2; #X connect 13 0 27 3; #X connect 14 0 27 4; #X connect 15 0 27 5; #X connect 16 0 27 6; #X connect 17 0 27 7; #X connect 18 0 27 8; #X connect 19 0 27 9; #X connect 20 0 27 10; #X connect 21 0 27 11; #X connect 22 0 27 12; #X connect 23 0 27 13; #X connect 24 0 23 0; #X connect 24 0 22 0; #X connect 24 0 21 0; #X connect 24 0 20 0; #X connect 24 0 19 0; #X connect 24 0 18 0; #X connect 24 0 17 0; #X connect 24 0 16 0; #X connect 24 0 15 0; #X connect 24 0 14 0; #X connect 24 0 13 0; #X connect 24 0 12 0; #X connect 24 0 11 0; #X connect 24 0 26 0; #X connect 26 0 27 0; #X connect 27 0 44 0; #X connect 28 0 44 0; #X connect 42 0 51 0; #X connect 43 0 42 1; #X connect 46 0 56 0; #X connect 53 0 44 0; #X connect 54 0 53 0; #X connect 56 0 45 0; #X connect 56 1 42 0;