#N canvas 350 188 596 398 10;
#X obj 32 56 inlet;
#X obj 32 334 outlet;
#N canvas 214 231 982 332 command 0;
#X obj 24 7 inlet;
#X obj 299 298 outlet;
#N canvas 562 295 547 478 digital-out 0;
#X obj 4 15 inlet;
#X obj 284 440 outlet;
#X msg 373 158 \$1;
#X text 402 157 add channel to command;
#X text 411 201 0x90;
#X obj 373 202 + 144;
#X obj 373 180 div 8;
#X obj 212 391 float;
#X obj 145 391 float;
#X obj 459 16 inlet;
#X text 339 15 state from port-out;
#X msg 157 84 \$2;
#X obj 237 121 <<;
#X msg 237 100 1 \$1;
#X obj 284 242 * 8;
#X obj 172 371 >> 7;
#X obj 239 371 & 127;
#X obj 249 314 &;
#X msg 290 267 255 \$1;
#X obj 290 288 <<;
#X obj 5 55 trigger bang bang bang anything anything anything;
#X obj 157 267 float;
#X obj 255 338 >>;
#X obj 207 197 |;
#X obj 207 165 float;
#X obj 157 159 float;
#X obj 157 115 select 0 1;
#X floatatom 462 49 0 0 0 0 - - - 0;
#X obj 157 181 * -1;
#X obj 157 210 - 1;
#X obj 157 239 &;
#X connect 0 0 20 0;
#X connect 2 0 6 0;
#X connect 5 0 1 0;
#X connect 6 0 5 0;
#X connect 6 0 14 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X connect 9 0 23 0;
#X connect 9 0 27 0;
#X connect 11 0 26 0;
#X connect 12 0 24 1;
#X connect 12 0 25 1;
#X connect 13 0 12 0;
#X connect 14 0 18 0;
#X connect 14 0 22 1;
#X connect 15 0 8 1;
#X connect 16 0 7 1;
#X connect 17 0 22 0;
#X connect 18 0 19 0;
#X connect 19 0 17 1;
#X connect 20 0 8 0;
#X connect 20 1 7 0;
#X connect 20 3 11 0;
#X connect 20 4 13 0;
#X connect 20 5 2 0;
#X connect 21 0 23 1;
#X connect 21 0 17 0;
#X connect 21 0 30 1;
#X connect 22 0 16 0;
#X connect 22 0 15 0;
#X connect 23 0 21 0;
#X connect 24 0 23 0;
#X connect 25 0 28 0;
#X connect 26 0 25 0;
#X connect 26 1 24 0;
#X connect 28 0 29 0;
#X connect 29 0 30 0;
#X connect 30 0 21 0;
#X restore 310 114 pd digital-out;
#N canvas 37 230 541 377 pinMode 0;
#X obj 51 8 inlet;
#X obj 51 350 outlet;
#X text 141 54 pin#;
#X text 321 56 mode;
#X obj 174 147 moses 128;
#X msg 51 227 244;
#X text 194 131 do bounds checking to be safe;
#X obj 51 252 pack float float float;
#X obj 279 147 moses 128;
#X obj 225 255 bang;
#X obj 225 320 list trim;
#X obj 225 300 list prepend ERROR:;
#X msg 225 275 pinMode pin# greater than 127;
#X obj 330 213 bang;
#X msg 330 233 pinMode mode greater than 127;
#X obj 225 340 print [arduino];
#N canvas 577 324 396 304 turn 0;
#X obj 123 21 inlet;
#X obj 43 21 inlet;
#X obj 123 78 select 0;
#X text 178 78 INPUT;
#X obj 215 252 outlet;
#X obj 110 135 spigot;
#X msg 123 109 1;
#X obj 215 180 >> 3;
#X obj 110 158 trigger bang float;
#X msg 152 109 0;
#X text 254 201 0xD0;
#X obj 215 201 + 208;
#X obj 215 228 pack float 1;
#X text 42 202 generate digitalIns message;
#X connect 0 0 2 0;
#X connect 1 0 5 0;
#X connect 2 0 6 0;
#X connect 5 0 8 0;
#X connect 6 0 5 1;
#X connect 7 0 11 0;
#X connect 8 0 9 0;
#X connect 8 1 7 0;
#X connect 9 0 5 1;
#X connect 11 0 12 0;
#X connect 12 0 4 0;
#X restore 174 184 pd turn digital reporting on;
#X obj 51 32 trigger bang anything;
#X obj 309 78 route float symbol;
#N canvas 0 76 450 300 s2f 0;
#X obj 72 14 inlet;
#X obj 72 265 outlet;
#X obj 72 69 select input output analog pwm servo;
#X obj 285 262 outlet;
#X msg 72 95 0;
#X msg 114 95 1;
#X msg 157 95 2;
#X msg 199 95 3;
#X msg 242 95 4;
#X connect 0 0 2 0;
#X connect 2 0 4 0;
#X connect 2 1 5 0;
#X connect 2 2 6 0;
#X connect 2 3 7 0;
#X connect 2 4 8 0;
#X connect 2 5 3 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X restore 361 99 pd s2f;
#X obj 414 120 list;
#X msg 414 141 unknown pinMode: \$1;
#X obj 174 55 list split 1;
#X connect 0 0 17 0;
#X connect 4 0 7 1;
#X connect 4 0 16 0;
#X connect 4 1 9 0;
#X connect 5 0 7 0;
#X connect 7 0 1 0;
#X connect 8 0 7 2;
#X connect 8 0 16 1;
#X connect 8 1 13 0;
#X connect 9 0 12 0;
#X connect 10 0 15 0;
#X connect 11 0 10 0;
#X connect 12 0 11 0;
#X connect 13 0 14 0;
#X connect 14 0 11 0;
#X connect 16 0 1 0;
#X connect 17 0 5 0;
#X connect 17 1 22 0;
#X connect 18 0 8 0;
#X connect 18 1 19 0;
#X connect 18 2 20 0;
#X connect 19 0 8 0;
#X connect 19 1 20 0;
#X connect 20 0 21 0;
#X connect 21 0 11 0;
#X connect 22 0 4 0;
#X connect 22 1 18 0;
#X restore 237 93 pd pinMode;
#N canvas 300 396 372 380 pwm 0;
#X obj 44 14 inlet;
#X obj 44 312 outlet;
#X obj 44 79 unpack float float;
#X obj 44 124 + 224;
#X text 78 125 0xE0;
#X obj 44 212 pack float float float;
#X obj 149 126 * 255;
#X obj 173 165 >> 7;
#X obj 108 165 & 127;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 6 0;
#X connect 3 0 5 0;
#X connect 5 0 1 0;
#X connect 6 0 7 0;
#X connect 6 0 8 0;
#X connect 7 0 5 2;
#X connect 8 0 5 1;
#X restore 24 94 pd pwm;
#X msg 477 113 249;
#N canvas 0 50 462 312 analogIns 0;
#X obj 64 7 inlet;
#X obj 64 263 outlet;
#X obj 64 65 unpack float float;
#X obj 64 175 pack float float;
#X obj 169 95 select 0;
#X obj 214 118 bang;
#X msg 214 140 1;
#X msg 169 117 0;
#X obj 64 124 + 192;
#X obj 64 95 moses 16;
#X text 100 123 0xC0;
#X connect 0 0 2 0;
#X connect 2 0 9 0;
#X connect 2 1 4 0;
#X connect 3 0 1 0;
#X connect 4 0 7 0;
#X connect 4 1 5 0;
#X connect 5 0 6 0;
#X connect 6 0 3 1;
#X connect 7 0 3 1;
#X connect 8 0 3 0;
#X connect 9 0 8 0;
#X restore 69 94 pd analogIns;
#N canvas 592 114 341 294 digitalIns 0;
#X obj 87 26 inlet;
#X obj 87 250 outlet;
#X text 126 117 0xD0;
#X obj 87 90 unpack float float;
#X obj 87 146 pack float float;
#X obj 87 117 + 208;
#X connect 0 0 3 0;
#X connect 3 0 5 0;
#X connect 3 1 4 1;
#X connect 4 0 1 0;
#X connect 5 0 4 0;
#X restore 150 94 pd digitalIns;
#N canvas 623 398 451 466 sysex 0;
#X obj 62 424 outlet;
#X obj 28 22 inlet;
#X obj 28 145 list split 1;
#X obj 62 321 list prepend;
#X obj 62 177 route bang;
#X text 68 22 sysex;
#X obj 250 22 inlet;
#X text 286 21 string;
#X obj 250 155 trigger anything bang;
#X text 398 176 0x71;
#X msg 373 177 113;
#N canvas 363 261 467 461 split 0;
#X text 87 12 Firmata sends 8-bit chars as two 7-bit bytes;
#X obj 32 12 inlet;
#X obj 32 367 outlet;
#X obj 168 173 list;
#X obj 189 112 route bang;
#X obj 189 137 bang;
#X obj 32 54 trigger bang anything;
#X obj 155 89 list split 1;
#X obj 110 208 trigger bang anything anything;
#X text 256 191 LSB;
#X obj 226 298 % 128;
#X text 267 297 only 7-bits of data allowed;
#X text 204 190 MSB;
#X obj 198 234 >> 7;
#X text 235 137 bang resets once finished;
#N canvas 0 50 313 216 tolist 0;
#X obj 89 50 inlet;
#X obj 179 50 inlet;
#X obj 89 155 outlet;
#N canvas 140 104 344 212 msg 0;
#X obj 12 13 inlet;
#X obj 12 113 outlet;
#X msg 12 33;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 89 124 pd msg;
#X msg 179 70 add2 \$1;
#X msg 89 86 bang \, set;
#X connect 0 0 5 0;
#X connect 1 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 3 0;
#X restore 32 344 pd tolist;
#X connect 1 0 6 0;
#X connect 3 0 7 0;
#X connect 4 0 5 0;
#X connect 4 1 3 1;
#X connect 5 0 3 1;
#X connect 6 0 15 0;
#X connect 6 1 7 0;
#X connect 7 0 8 0;
#X connect 7 1 4 0;
#X connect 8 0 3 0;
#X connect 8 1 13 0;
#X connect 8 2 10 0;
#X connect 10 0 15 1;
#X connect 13 0 10 0;
#X connect 15 0 2 0;
#X restore 119 212 pd split into 7-bit bytes;
#X obj 62 344 list prepend 240;
#X text 168 345 0xF0 start_sysex;
#X text 167 366 0xF7 end_sysex;
#X obj 62 366 list append 247;
#X obj 28 66 trigger anything anything;
#X msg 175 87 \$1;
#X connect 1 0 16 0;
#X connect 2 1 4 0;
#X connect 3 0 12 0;
#X connect 4 0 3 0;
#X connect 4 1 11 0;
#X connect 6 0 8 0;
#X connect 8 0 11 0;
#X connect 8 1 10 0;
#X connect 10 0 3 1;
#X connect 11 0 3 0;
#X connect 12 0 15 0;
#X connect 15 0 0 0;
#X connect 16 0 2 0;
#X connect 16 1 17 0;
#X connect 17 0 3 1;
#X restore 860 113 pd sysex;
#N canvas 107 521 569 343 port-out 0;
#X obj 13 15 inlet;
#X obj 167 281 outlet;
#X msg 244 82 \$1;
#X text 343 149 add channel to command;
#X text 309 190 0x90;
#X obj 271 191 + 144;
#X obj 244 129 moses;
#X obj 13 55 trigger bang anything anything anything;
#X obj 271 149 moses 16;
#X obj 353 219 print [arduino];
#X msg 353 197 ERROR: no such channel: \$1;
#X msg 167 82 \$2;
#X msg 90 82 \$2;
#X obj 167 129 & 127;
#X obj 90 130 & 128;
#X obj 90 151 == 128;
#X obj 21 285 outlet;
#X obj 36 230 * 8;
#X obj 21 251 <<;
#X connect 0 0 7 0;
#X connect 2 0 6 0;
#X connect 5 0 1 0;
#X connect 6 0 10 0;
#X connect 6 1 8 0;
#X connect 7 1 12 0;
#X connect 7 2 11 0;
#X connect 7 3 2 0;
#X connect 8 0 5 0;
#X connect 8 0 17 0;
#X connect 8 1 10 0;
#X connect 10 0 9 0;
#X connect 11 0 13 0;
#X connect 12 0 14 0;
#X connect 12 0 18 0;
#X connect 13 0 1 0;
#X connect 14 0 15 0;
#X connect 15 0 1 0;
#X connect 17 0 18 1;
#X connect 18 0 16 0;
#X restore 403 114 pd port-out;
#N canvas 429 494 450 300 samplingInterval 0;
#X obj 39 252 outlet;
#X obj 38 21 inlet;
#X text 156 54 LSB;
#X obj 39 131 % 128;
#X text 103 54 MSB;
#X obj 39 107 >> 7;
#X obj 39 153 pack float float;
#X obj 132 130 % 128;
#X text 172 129 only 7-bit chunks of data allowed;
#X msg 39 188 240 122 \$2 \$1 247;
#X text 152 189 START_SYSEX 0x7A LSB MSB END_SYSEX;
#X obj 39 71 trigger anything anything;
#X connect 1 0 11 0;
#X connect 3 0 6 0;
#X connect 5 0 3 0;
#X connect 6 0 9 0;
#X connect 7 0 6 1;
#X connect 9 0 0 0;
#X connect 11 0 5 0;
#X connect 11 1 7 0;
#X restore 733 113 pd samplingInterval;
#X obj 24 51 route pwm analog analogIns digitalIns pinMode;
#X obj 952 108 t a;
#X msg 506 143 240 \$1 247;
#X msg 506 113 121;
#X msg 536 113 107;
#N canvas 0 50 421 260 pinState 0;
#X obj 15 20 inlet;
#X obj 15 200 outlet;
#X obj 15 56 route float;
#X obj 15 78 moses 128;
#X obj 99 154 print [arduino];
#X msg 99 129 ERROR: invalid pin for pinState query: \$1;
#X obj 99 104 list;
#X msg 15 177 240 109 \$1 247;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 6 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 5 0 4 0;
#X connect 6 0 5 0;
#X connect 7 0 1 0;
#X restore 582 113 pd pinState;
#X obj 310 51 route digital port version firmware capability pinState
;
#X obj 661 52 route analogMapping samplingInterval sysex string;
#X msg 661 113 105;
#X connect 0 0 11 0;
#X connect 2 0 1 0;
#X connect 3 0 1 0;
#X connect 4 0 1 0;
#X connect 5 0 1 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X connect 8 0 1 0;
#X connect 9 0 2 1;
#X connect 9 1 1 0;
#X connect 10 0 1 0;
#X connect 11 0 4 0;
#X connect 11 1 4 0;
#X connect 11 2 6 0;
#X connect 11 3 7 0;
#X connect 11 4 3 0;
#X connect 11 5 17 0;
#X connect 12 0 1 0;
#X connect 13 0 1 0;
#X connect 14 0 13 0;
#X connect 15 0 13 0;
#X connect 16 0 1 0;
#X connect 17 0 2 0;
#X connect 17 1 9 0;
#X connect 17 2 5 0;
#X connect 17 3 14 0;
#X connect 17 4 15 0;
#X connect 17 5 16 0;
#X connect 17 6 18 0;
#X connect 18 0 19 0;
#X connect 18 1 10 0;
#X connect 18 2 8 0;
#X connect 18 3 8 1;
#X connect 18 4 12 0;
#X connect 19 0 13 0;
#X restore 32 89 pd command processing;
#X text 28 38 processed input;
#N canvas 590 443 467 421 make 0;
#X obj 28 6 inlet;
#X obj 133 332 outlet;
#X obj 28 52 moses 128;
#X obj 130 100 trigger float float;
#N canvas 459 506 653 358 set 0;
#X obj 26 3 inlet;
#X obj 34 307 outlet;
#X text 85 31 0xF0;
#X obj 26 31 moses 240;
#X text 79 307 length in byte count;
#X msg 283 122 2;
#X obj 26 60 & 240;
#X obj 26 101 select 144 160 176 192 208 224;
#X text 29 86 0x90 0xA0 0xB0 0xC0 0xD0 0xE0;
#X msg 251 122 2;
#X text 282 83 0xF4 0xF9;
#X obj 195 242 print [arduino]_WARNING_currently_unsupported;
#X msg 55 122 160;
#X msg 26 122 2;
#X msg 85 122 176;
#X msg 114 122 1;
#X msg 144 122 1;
#X msg 173 122 2;
#X text 348 69 sysex;
#X msg 315 122 999999;
#X text 362 121 <-- sets sysex size limit;
#X text 62 60 strip channel info;
#X text 342 83 0xF0;
#X obj 251 101 select 244 249 240;
#X connect 0 0 3 0;
#X connect 3 0 6 0;
#X connect 3 1 23 0;
#X connect 5 0 1 0;
#X connect 6 0 7 0;
#X connect 7 0 13 0;
#X connect 7 1 12 0;
#X connect 7 2 14 0;
#X connect 7 3 15 0;
#X connect 7 4 16 0;
#X connect 7 5 17 0;
#X connect 9 0 1 0;
#X connect 12 0 11 0;
#X connect 13 0 1 0;
#X connect 14 0 11 0;
#X connect 15 0 1 0;
#X connect 16 0 1 0;
#X connect 17 0 1 0;
#X connect 19 0 1 0;
#X connect 23 0 9 0;
#X connect 23 1 5 0;
#X connect 23 2 19 0;
#X restore 241 127 pd set message length;
#X obj 79 250 select 0;
#X obj 79 228 float;
#X obj 117 228 - 1;
#X obj 79 178 trigger bang float;
#X text 89 52 only process command bytes;
#X text 140 78 end of sysex;
#X obj 79 79 route 247;
#X obj 79 100 bang;
#N canvas 0 50 313 216 tolist 0;
#X obj 89 50 inlet;
#X obj 179 50 inlet;
#X obj 89 155 outlet;
#N canvas 140 104 344 212 msg 0;
#X obj 12 13 inlet;
#X obj 12 113 outlet;
#X msg 12 33 235;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 89 124 pd msg;
#X msg 179 70 add2 \$1;
#X msg 89 86 bang \, set;
#X connect 0 0 5 0;
#X connect 1 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 3 0;
#X restore 133 308 pd tolist;
#X connect 0 0 2 0;
#X connect 2 0 8 0;
#X connect 2 1 11 0;
#X connect 3 0 8 0;
#X connect 3 1 4 0;
#X connect 4 0 6 1;
#X connect 5 0 13 0;
#X connect 6 0 7 0;
#X connect 6 0 5 0;
#X connect 7 0 6 1;
#X connect 8 0 6 0;
#X connect 8 1 13 1;
#X connect 11 0 12 0;
#X connect 11 1 3 0;
#X connect 12 0 13 0;
#X connect 13 0 1 0;
#X restore 32 199 pd make lists;
#N canvas 0 50 525 269 check 0;
#X obj 47 62 inlet;
#X obj 47 88 route version;
#X obj 47 127 unpack float float;
#X obj 92 171 print [arduino]_WARNING_INCOMPATIBLE_FIRMWARE_VERSION
;
#X obj 47 149 select 2;
#X text 102 150 <-- sets the protocol major version this is compatible
with;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 4 0;
#X connect 4 1 3 0;
#X restore 215 325 pd check version;
#N canvas 192 246 541 319 convert 0;
#X obj 142 278 outlet;
#N canvas 234 468 335 267 analog 0;
#X obj 65 16 inlet;
#X obj 65 213 outlet;
#X msg 65 150 analog \$1 \$2;
#X obj 65 129 pack float float;
#X obj 158 103 / 1023;
#X text 203 104 scale to 0-1;
#X obj 65 71 unpack float float;
#X connect 0 0 6 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
#X connect 4 0 3 1;
#X connect 6 0 3 0;
#X connect 6 1 4 0;
#X restore 342 174 pd analog messages;
#X obj 97 13 inlet;
#N canvas 325 132 888 458 sysex 0;
#X obj 30 11 inlet;
#X obj 30 398 outlet;
#N canvas 990 306 450 300 firmware 0;
#X obj 91 6 inlet;
#X obj 91 272 outlet;
#X obj 91 170 list prepend;
#X obj 91 206 list prepend firmware;
#X obj 91 239 list trim;
#X obj 91 39 list split 2;
#N canvas 736 297 645 461 reassemble 0;
#X text 91 24 Firmata sends 8-bit chars as two 7-bit bytes;
#X obj 36 24 inlet;
#X obj 36 411 outlet;
#X obj 159 131 list split 2;
#X obj 196 206 list;
#X obj 109 256 trigger bang anything;
#X obj 232 280 unpack float float;
#X obj 232 340 +;
#X obj 193 154 route bang;
#X obj 337 303 << 7;
#X obj 193 179 bang;
#X obj 36 106 trigger bang anything;
#X text 249 179 reset the list if end of list or there is a single
byte left over;
#N canvas 0 50 313 216 tolist 0;
#X obj 89 50 inlet;
#X obj 179 50 inlet;
#X obj 89 155 outlet;
#N canvas 140 104 344 212 msg 0;
#X obj 12 13 inlet;
#X obj 12 113 outlet;
#X msg 12 33;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 89 124 pd msg;
#X msg 179 70 add2 \$1;
#X msg 89 86 bang \, set;
#X connect 0 0 5 0;
#X connect 1 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 3 0;
#X restore 36 381 pd tolist;
#X connect 1 0 11 0;
#X connect 3 0 5 0;
#X connect 3 1 8 0;
#X connect 3 2 10 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 5 1 6 0;
#X connect 6 0 7 0;
#X connect 6 1 9 0;
#X connect 7 0 13 1;
#X connect 8 0 10 0;
#X connect 8 1 4 1;
#X connect 9 0 7 1;
#X connect 10 0 4 1;
#X connect 11 0 13 0;
#X connect 11 1 3 0;
#X connect 13 0 2 0;
#X restore 160 79 pd reassemble chars;
#X obj 160 116 list tosymbol;
#X connect 0 0 5 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 4 0 1 0;
#X connect 5 0 2 0;
#X connect 5 1 6 0;
#X connect 5 2 6 0;
#X connect 6 0 7 0;
#X connect 7 0 2 1;
#X restore 30 220 pd firmware;
#N canvas 830 319 667 494 assemble 0;
#X text 91 24 Firmata sends 8-bit chars as two 7-bit bytes;
#X obj 36 24 inlet;
#X obj 36 408 outlet;
#X obj 159 131 list split 2;
#X obj 196 206 list;
#X obj 109 256 trigger bang anything;
#X obj 232 280 unpack float float;
#X obj 232 323 +;
#X obj 193 154 route bang;
#X obj 337 303 << 7;
#X obj 193 179 bang;
#X obj 36 106 trigger bang anything;
#X text 249 179 reset the list if end of list or there is a single
byte left over;
#N canvas 0 50 313 216 tolist 0;
#X obj 89 50 inlet;
#X obj 179 50 inlet;
#X obj 89 155 outlet;
#N canvas 140 104 344 212 msg 0;
#X obj 12 13 inlet;
#X obj 12 113 outlet;
#X msg 12 33;
#X connect 0 0 2 0;
#X connect 2 0 1 0;
#X restore 89 124 pd msg;
#X msg 179 70 add2 \$1;
#X msg 89 86 bang \, set;
#X connect 0 0 5 0;
#X connect 1 0 4 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 3 0;
#X restore 36 366 pd tolist;
#X connect 1 0 11 0;
#X connect 3 0 5 0;
#X connect 3 1 8 0;
#X connect 3 2 10 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 5 1 6 0;
#X connect 6 0 7 0;
#X connect 6 1 9 0;
#X connect 7 0 13 1;
#X connect 8 0 10 0;
#X connect 8 1 4 1;
#X connect 9 0 7 1;
#X connect 10 0 4 1;
#X connect 11 0 13 0;
#X connect 11 1 3 0;
#X connect 13 0 2 0;
#X restore 115 244 pd assemble 7-bit into 14-bit values;
#X obj 115 293 list prepend;
#X obj 115 314 list trim;
#X msg 275 188 string;
#X msg 184 185 servo_config;
#X text 71 396 data;
#X obj 138 398 outlet;
#X text 184 398 status;
#X obj 30 59 route 121;
#X obj 101 84 route 112;
#X obj 172 104 route 113;
#X obj 101 104 t a b;
#X obj 172 124 t a b;
#X text 95 60 0x79 firmware;
#X obj 388 138 route 108;
#X text 452 139 0x6C Capability;
#X text 237 106 0x71 string;
#X text 162 84 0x70 servo (where is this documented?);
#N canvas 268 50 540 585 capability 0;
#X obj 14 41 t b a a;
#X obj 306 13 table \$0.capability;
#X msg 53 90 resize \$1;
#X obj 53 64 list length;
#X obj 14 19 inlet;
#X obj 53 141 s \$0.capability;
#X obj 33 212 until;
#X obj 14 139 f;
#X obj 33 113 list prepend 0;
#X obj 14 169 t b a b;
#X obj 33 237 f;
#X msg 76 212 0;
#X obj 33 260 t a a;
#X obj 84 248 + 1;
#X obj 33 285 tabread \$0.capability;
#X obj 72 565 outlet;
#X obj 33 310 sel 127;
#X text 84 310 bump pin number;
#X obj 132 378 t a;
#X obj 99 377 == 1;
#X obj 120 337 t b b;
#X msg 120 357 1;
#X obj 72 357 t a b;
#X obj 72 401 list prepend;
#X obj 72 420 route 1 0;
#X obj 72 476 list prepend;
#X obj 72 439 pack f f;
#X obj 198 384 f;
#X obj 198 406 + 1;
#X obj 198 430 t a a;
#N canvas 372 119 398 398 conver_to_human_readable 0;
#X obj 9 10 inlet;
#X obj 9 375 outlet;
#X obj 9 31 unpack f f f;
#X obj 43 53 sel 0 1 2 3 4 5 6 7 8 9 10 11;
#X msg 43 294 DIGITAL_INPUT;
#X msg 57 274 DIGITAL_OUTPUT;
#X msg 71 255 ANALOG_INPUT;
#X msg 85 236 PWM;
#X msg 100 218 SERVO;
#X msg 114 200 SHIFT;
#X msg 128 180 I2C;
#X msg 142 161 ONEWIRE;
#X msg 157 140 STEPPER;
#X msg 171 121 ENCODER;
#X msg 185 101 SERIAL;
#X msg 199 80 INPUT_PULLUP;
#X obj 171 329 list;
#X obj 9 351 pack f s f;
#X connect 0 0 2 0;
#X connect 2 0 17 0;
#X connect 2 1 3 0;
#X connect 2 2 17 2;
#X connect 3 0 4 0;
#X connect 3 1 5 0;
#X connect 3 2 6 0;
#X connect 3 3 7 0;
#X connect 3 4 8 0;
#X connect 3 5 9 0;
#X connect 3 6 10 0;
#X connect 3 7 11 0;
#X connect 3 8 12 0;
#X connect 3 9 13 0;
#X connect 3 10 14 0;
#X connect 3 11 15 0;
#X connect 4 0 16 0;
#X connect 5 0 16 0;
#X connect 6 0 16 0;
#X connect 7 0 16 0;
#X connect 8 0 16 0;
#X connect 9 0 16 0;
#X connect 10 0 16 0;
#X connect 11 0 16 0;
#X connect 12 0 16 0;
#X connect 13 0 16 0;
#X connect 14 0 16 0;
#X connect 15 0 16 0;
#X connect 16 0 17 1;
#X connect 17 0 1 0;
#X restore 72 497 pd conver_to_human_readable;
#X msg 72 458 \$2 \$1;
#X text 177 476 pin# \, mode \, resolution;
#X text 240 404 count pin#;
#X obj 72 522 list prepend capability;
#X obj 72 542 list trim;
#X msg 14 457 end;
#X msg 359 463 begin;
#X connect 0 0 7 0;
#X connect 0 1 8 0;
#X connect 0 2 3 0;
#X connect 2 0 5 0;
#X connect 3 0 2 0;
#X connect 3 0 7 1;
#X connect 4 0 0 0;
#X connect 6 0 10 0;
#X connect 7 0 9 0;
#X connect 8 0 5 0;
#X connect 9 0 36 0;
#X connect 9 1 6 0;
#X connect 9 2 11 0;
#X connect 9 2 37 0;
#X connect 10 0 12 0;
#X connect 11 0 10 1;
#X connect 11 0 29 0;
#X connect 12 0 14 0;
#X connect 12 1 13 0;
#X connect 13 0 10 1;
#X connect 14 0 16 0;
#X connect 16 0 20 0;
#X connect 16 1 22 0;
#X connect 18 0 19 1;
#X connect 19 0 18 0;
#X connect 19 0 23 1;
#X connect 20 0 21 0;
#X connect 20 1 27 0;
#X connect 21 0 19 1;
#X connect 22 0 23 0;
#X connect 22 1 19 0;
#X connect 23 0 24 0;
#X connect 24 0 26 0;
#X connect 24 1 26 1;
#X connect 25 0 30 0;
#X connect 26 0 31 0;
#X connect 27 0 28 0;
#X connect 28 0 29 0;
#X connect 29 0 25 1;
#X connect 29 1 27 1;
#X connect 30 0 34 0;
#X connect 31 0 25 0;
#X connect 34 0 35 0;
#X connect 35 0 15 0;
#X connect 36 0 34 0;
#X connect 37 0 34 0;
#X restore 388 184 pd capability;
#X obj 544 171 route 110;
#X text 607 172 0x6E Pin State;
#N canvas 268 50 386 285 pinState 0;
#X obj 14 19 inlet;
#X obj 14 215 outlet;
#N canvas 0 50 386 373 convert_to_human_readable 0;
#X obj 51 48 sel 0 1 2 3 4 5 6 7 8 9 10 11;
#X msg 51 289 DIGITAL_INPUT;
#X msg 65 269 DIGITAL_OUTPUT;
#X msg 79 250 ANALOG_INPUT;
#X msg 93 231 PWM;
#X msg 108 213 SERVO;
#X msg 122 195 SHIFT;
#X msg 136 175 I2C;
#X msg 150 156 ONEWIRE;
#X msg 165 135 STEPPER;
#X msg 179 116 ENCODER;
#X msg 193 96 SERIAL;
#X msg 207 75 INPUT_PULLUP;
#X obj 179 324 list;
#X obj 51 19 inlet;
#X obj 179 346 outlet;
#X connect 0 0 1 0;
#X connect 0 1 2 0;
#X connect 0 2 3 0;
#X connect 0 3 4 0;
#X connect 0 4 5 0;
#X connect 0 5 6 0;
#X connect 0 6 7 0;
#X connect 0 7 8 0;
#X connect 0 8 9 0;
#X connect 0 9 10 0;
#X connect 0 10 11 0;
#X connect 0 11 12 0;
#X connect 1 0 13 0;
#X connect 2 0 13 0;
#X connect 3 0 13 0;
#X connect 4 0 13 0;
#X connect 5 0 13 0;
#X connect 6 0 13 0;
#X connect 7 0 13 0;
#X connect 8 0 13 0;
#X connect 9 0 13 0;
#X connect 10 0 13 0;
#X connect 11 0 13 0;
#X connect 12 0 13 0;
#X connect 13 0 15 0;
#X connect 14 0 0 0;
#X restore 71 120 pd convert_to_human_readable;
#X obj 14 54 list split 2;
#X obj 14 81 unpack f f;
#X obj 14 161 pack f s f;
#X msg 14 186 pinState \$1 \$2 \$3;
#X msg 135 186 pinState \$1 NOT_PRESENT;
#X connect 0 0 3 0;
#X connect 2 0 5 1;
#X connect 3 0 4 0;
#X connect 3 1 5 2;
#X connect 3 2 7 0;
#X connect 4 0 5 0;
#X connect 4 1 2 0;
#X connect 5 0 6 0;
#X connect 6 0 1 0;
#X connect 7 0 1 0;
#X restore 544 200 pd pinState;
#X obj 639 196 route 106;
#X text 704 195 0x6A Analog Mapping;
#N canvas 288 35 536 407 analogMapping 0;
#X obj 12 7 inlet;
#X obj 70 361 outlet;
#X obj 12 27 t b a a;
#X msg 51 72 resize \$1;
#X obj 51 47 list length;
#X obj 31 165 until;
#X obj 12 119 f;
#X obj 31 90 list prepend 0;
#X obj 12 144 t b a b;
#X obj 31 190 f;
#X msg 74 165 0;
#X obj 92 201 + 1;
#X obj 51 125 s \$0.analogMapping;
#X obj 178 14 table \$0.analogMapping;
#X obj 31 245 tabread \$0.analogMapping;
#X obj 31 265 sel 127;
#X obj 70 288 pack f f;
#X obj 31 213 t a a a;
#X obj 70 318 list prepend analogMapping;
#X obj 70 338 list trim;
#X msg 208 249 begin;
#X msg 12 285 end;
#X connect 0 0 2 0;
#X connect 2 0 6 0;
#X connect 2 1 7 0;
#X connect 2 2 4 0;
#X connect 3 0 12 0;
#X connect 4 0 3 0;
#X connect 4 0 6 1;
#X connect 5 0 9 0;
#X connect 6 0 8 0;
#X connect 7 0 12 0;
#X connect 8 0 21 0;
#X connect 8 1 5 0;
#X connect 8 2 10 0;
#X connect 8 2 20 0;
#X connect 9 0 17 0;
#X connect 10 0 9 1;
#X connect 11 0 9 1;
#X connect 14 0 15 0;
#X connect 15 1 16 0;
#X connect 16 0 18 0;
#X connect 17 0 14 0;
#X connect 17 1 16 1;
#X connect 17 2 11 0;
#X connect 18 0 19 0;
#X connect 19 0 1 0;
#X connect 20 0 18 0;
#X connect 21 0 18 0;
#X restore 639 223 pd analogMapping;
#X connect 0 0 11 0;
#X connect 2 0 9 0;
#X connect 3 0 4 0;
#X connect 4 0 5 0;
#X connect 5 0 1 0;
#X connect 6 0 4 1;
#X connect 7 0 4 1;
#X connect 11 0 2 0;
#X connect 11 1 12 0;
#X connect 12 0 14 0;
#X connect 12 1 13 0;
#X connect 13 0 15 0;
#X connect 13 1 17 0;
#X connect 14 0 3 0;
#X connect 14 1 7 0;
#X connect 15 0 3 0;
#X connect 15 1 6 0;
#X connect 17 0 21 0;
#X connect 17 1 22 0;
#X connect 21 0 9 0;
#X connect 22 0 24 0;
#X connect 22 1 25 0;
#X connect 24 0 9 0;
#X connect 25 0 27 0;
#X connect 27 0 9 0;
#X restore 134 174 pd sysex;
#N canvas 383 77 457 452 route 0;
#X obj 46 24 inlet;
#X obj 175 400 outlet;
#X obj 233 400 outlet;
#X obj 46 91 trigger anything anything;
#X obj 292 400 outlet;
#X obj 175 339 route digital analog;
#X msg 193 115 \$1;
#X obj 244 158 moses 224;
#X text 314 157 0xE0 analog messages;
#X obj 193 136 moses 144;
#X text 257 136 0x90 digital messages;
#X obj 244 209 bang;
#X obj 295 209 bang;
#X msg 244 236 digital;
#X msg 297 236 analog;
#X text 359 178 0xF0;
#X obj 346 236 bang;
#X obj 211 236 bang;
#N canvas 176 360 335 257 parse 0;
#X obj 73 18 inlet;
#X obj 73 215 outlet;
#X obj 73 161 pack float float;
#X obj 73 64 unpack float float float;
#X obj 166 110 +;
#X obj 214 85 << 7;
#X obj 73 85 & 15;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 3 1 4 0;
#X connect 3 2 5 0;
#X connect 4 0 2 1;
#X connect 5 0 4 1;
#X connect 6 0 2 0;
#X restore 46 167 pd parse messages;
#X obj 295 178 moses 240;
#X obj 175 279 list prepend;
#X obj 175 301 list trim;
#X connect 0 0 3 0;
#X connect 3 0 18 0;
#X connect 3 1 6 0;
#X connect 5 0 1 0;
#X connect 5 1 2 0;
#X connect 5 2 4 0;
#X connect 6 0 9 0;
#X connect 7 0 11 0;
#X connect 7 1 19 0;
#X connect 9 0 17 0;
#X connect 9 1 7 0;
#X connect 11 0 13 0;
#X connect 12 0 14 0;
#X connect 13 0 20 1;
#X connect 14 0 20 1;
#X connect 16 0 20 1;
#X connect 17 0 20 1;
#X connect 18 0 20 0;
#X connect 19 0 12 0;
#X connect 19 1 16 0;
#X connect 20 0 21 0;
#X connect 21 0 5 0;
#X restore 205 86 pd route digital/analog;
#X obj 97 75 route 249 240;
#X text 124 60 0xF9 0xF0;
#X msg 40 174 version \$1 \$2;
#X obj 263 277 outlet;
#X text 312 279 status outlet;
#X text 184 277 data outlet;
#N canvas 418 242 444 547 digital_messages 0;
#X obj 43 26 inlet;
#X obj 62 416 outlet;
#X obj 43 67 unpack f f, f 30;
#X obj 43 92 t a a a;
#X obj 41 510 table \$0.digital.input.change 16;
#X obj 82 116 tabread \$0.digital.input.change;
#X obj 82 141 expr $f1 ^ $f2;
#X text 181 143 which bits have changed?;
#N canvas 0 238 288 383 byte2bits 0;
#X msg 44 78 8;
#X obj 44 104 until;
#X obj 44 129 f;
#X obj 131 133 + 1;
#X msg 82 105 0;
#X msg 44 179 2 \$1;
#X obj 44 202 pow;
#X obj 44 226 &, f 8;
#X obj 44 153 t a a a, f 12;
#X obj 44 28 inlet;
#X obj 44 52 t b b a;
#X obj 71 303 outlet;
#X obj 44 249 sel 0;
#X obj 71 278 list prepend;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 8 0;
#X connect 3 0 2 1;
#X connect 4 0 2 1;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 7 0 12 0;
#X connect 8 0 5 0;
#X connect 8 1 13 1;
#X connect 8 2 3 0;
#X connect 9 0 10 0;
#X connect 10 0 0 0;
#X connect 10 1 4 0;
#X connect 10 2 7 1;
#X connect 12 1 13 0;
#X connect 13 0 11 0;
#X restore 82 174 pd byte2bits;
#X obj 110 278 &, f 14;
#X obj 82 227 t a a a, f 10;
#X msg 110 253 \$2;
#X obj 110 303 >>;
#X text 167 173 serialize bits \, limit to those that changed;
#X obj 62 333 pack f f;
#X obj 62 276 * 8;
#X obj 62 304 +, f 4;
#X text 126 334 digital input (pin \, value);
#X msg 62 387 digital \$1 \$2;
#X obj 43 473 s \$0.digital.input.change;
#X obj 43 448 pack f f, f 30;
#X text 206 472 cache value for later comparison;
#X msg 139 254 \$1;
#X msg 82 253 \$1;
#X text 87 201 <- bit position and corresponding bit mask;
#X connect 0 0 2 0;
#X connect 2 0 3 0;
#X connect 2 1 6 1;
#X connect 2 1 9 1;
#X connect 2 1 20 1;
#X connect 3 0 20 0;
#X connect 3 1 15 0;
#X connect 3 2 5 0;
#X connect 5 0 6 0;
#X connect 6 0 8 0;
#X connect 8 0 10 0;
#X connect 9 0 12 0;
#X connect 10 0 23 0;
#X connect 10 1 11 0;
#X connect 10 2 22 0;
#X connect 11 0 9 0;
#X connect 12 0 14 1;
#X connect 14 0 18 0;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 18 0 1 0;
#X connect 20 0 19 0;
#X connect 22 0 12 1;
#X connect 23 0 16 1;
#X restore 205 168 pd digital_messages;
#X obj 340 150 print [arduino];
#X obj 340 109 list prepend UNKNOWN_RESPONSE;
#X obj 340 129 list trim;
#X connect 1 0 0 0;
#X connect 2 0 5 0;
#X connect 3 0 0 0;
#X connect 3 1 8 0;
#X connect 4 0 11 0;
#X connect 4 1 1 0;
#X connect 4 2 13 0;
#X connect 5 0 7 0;
#X connect 5 1 3 0;
#X connect 5 2 4 0;
#X connect 7 0 8 0;
#X connect 11 0 0 0;
#X connect 13 0 14 0;
#X connect 14 0 12 0;
#X restore 32 259 pd convert to symbolic commands;
#X text 323 361 released under the GNU GPL v2 or later;
#X obj 257 115 print [arduino];
#X obj 257 57 loadbang;
#X text 254 34 supports Firmata v2.X;
#X text 27 361 (C) Copyright 2006-2012 Free Software Foundation;
#X msg 257 80 version 0.8;
#X obj 32 144 tcpclient;
#X obj 185 101 inlet;
#X obj 360 291 outlet;
#X obj 361 209 tgl 15 0 empty empty connected? 17 7 0 10 #fcfcfc #000000
#000000 0 1;
#X connect 0 0 2 0;
#X connect 2 0 13 0;
#X connect 4 0 6 0;
#X connect 6 0 1 0;
#X connect 6 1 5 0;
#X connect 9 0 12 0;
#X connect 12 0 8 0;
#X connect 13 0 4 0;
#X connect 13 2 16 0;
#X connect 14 0 13 0;
#X connect 16 0 15 0;
