Browse Source

updated firmwares and working on blob detection

titi 5 years ago
parent
commit
bd4c0e43f9

+ 5 - 1
HTequi-firmware/src/blobcnc_low/main.cpp

@@ -43,7 +43,7 @@ EthernetUDP Udp;
 OSCBundle bndl;
 
 /////////////////// STEPPER machines  ////////////////////////
-const int HIGH_SPEED = 1200 ;
+const int HIGH_SPEED = 5000 ;
 const int HIGH_ACC = 800 ;
 const int LOW_SPEED = 100 ;
 const int LOW_ACC = 1000 ;
@@ -115,6 +115,7 @@ Serial.println(Ethernet.localIP());
             .enable()
   .limitLow_set(2, 37, 0).limitLow_setThresholds(600, 715).limitLow_isHard(0)
   // .limitHigh_set(2, 37, 0).limitHigh_setThresholds(870, 1000).limitHigh_isHard(0)
+  .setHomingSpeed(2000)
   .setMaxSpeed(HIGH_SPEED).setAcceleration(HIGH_ACC);
  A_low_step.onChangeposition([](int idx, int v, int up){bndl.add("/A_low/step").add(v).add(up);});
  A_low_step.onChangestate([](int idx, int v, int up){bndl.add("/A_low/state").add(v);});
@@ -126,6 +127,7 @@ Serial.println(Ethernet.localIP());
             .enable()
   .limitLow_set(2, 35, 0).limitLow_setThresholds(600, 715).limitLow_isHard(0)
   // .limitHigh_set(2, 35, 0).limitHigh_setThresholds(870, 1000).limitHigh_isHard(0)
+  .setHomingSpeed(2000)
   .setMaxSpeed(HIGH_SPEED).setAcceleration(HIGH_ACC);
  B_low_step.onChangeposition([](int idx, int v, int up){bndl.add("/B_low/step").add(v).add(up);});
  B_low_step.onChangestate([](int idx, int v, int up){bndl.add("/B_low/state").add(v);});
@@ -137,6 +139,7 @@ Serial.println(Ethernet.localIP());
               .enable()
   .limitLow_set(1, 19, 1).limitLow_isHard(1)
   .limitHigh_set(1, 17, 1).limitHigh_isHard(1)
+  .setHomingSpeed(2000)
   .setMaxSpeed(HIGH_SPEED).setAcceleration(HIGH_ACC);
  TrBr_low_step.onChangeposition([](int idx, int v, int up){bndl.add("/TrBr_low/step").add(v).add(up);});
  TrBr_low_step.onChangestate([](int idx, int v, int up){bndl.add("/TrBr_low/state").add(v);});
@@ -148,6 +151,7 @@ Serial.println(Ethernet.localIP());
                 .enable()
   .limitLow_set(1, 15, 1).limitLow_isHard(1)
   .limitHigh_set(1, 39, 1).limitHigh_isHard(1)
+  .setHomingSpeed(2000)
   .setMaxSpeed(HIGH_SPEED).setAcceleration(HIGH_ACC);
  LevBr_low_step.onChangeposition([](int idx, int v, int up){bndl.add("/LevBr_low/step").add(v).add(up);});
  LevBr_low_step.onChangestate([](int idx, int v, int up){bndl.add("/LevBr_low/state").add(v);});

+ 11 - 0
HTequi-firmware/src/blobcnc_top/main.cpp

@@ -61,6 +61,17 @@ Atm_AccelStepper X_top_step;
 // StepControl Y_top_controller ;
 Atm_AccelStepper Y_top_step;
 
+int Y_direction = 0;
+
+int Y_step_offsetCompensation (int speed) {
+  int offset;
+  int currentDirection = speed >=0 ;
+  offset = Y_direction == currentDirection ? 0 : 4500;
+  Y_direction = currentDirection ;
+  return offset ;
+
+}
+
 /////////////////// Servo and pump  ////////////////////////
 
 const int peristaltic_pwm_pin = 3;

+ 535 - 213
blob-CN/HT_multicast.pd

@@ -1,159 +1,281 @@
-#N canvas 385 241 682 733 10;
-#X floatatom 379 110 3 0 0 0 - - -;
-#X floatatom 406 110 3 0 0 0 - - -;
-#X floatatom 433 110 3 0 0 0 - - -;
-#X floatatom 460 110 3 0 0 0 - - -;
-#X floatatom 487 111 5 0 0 0 - - -;
-#X obj 379 84 unpack 0 0 0 0 0;
-#X floatatom 304 85 9 0 0 0 - - -;
-#X obj 513 88 tgl 15 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1
-;
-#X floatatom 303 110 9 0 0 0 - - -;
-#X obj 305 59 route received total from multicast;
-#X obj 12 134 mrpeach/unpackOSC;
-#X obj 12 112 mrpeach/udpreceive 9977 239.200.200.200;
-#X obj 12 157 print;
+#N canvas 1012 118 1160 899 10;
 #X obj 111 196 gemhead;
-#X obj 111 239 pix_image;
+#X obj 14 218 gemwin;
+#X msg 14 174 create \, 1;
+#X msg 32 195 0 \, destroy;
+#X obj 111 847 pix_texture;
+#X obj 111 485 spigot 1;
+#X obj 169 484 tgl 15 0 empty empty show_feeding_area 17 7 0 10 -262144
+-1 -1 0 1;
+#X obj 199 356 loadbang;
+#X floatatom 194 327 5 0 0 0 - - -;
+#X floatatom 178 272 5 0 0 0 - - -;
+#X floatatom 222 271 5 0 0 0 - - -;
+#X floatatom 275 272 5 0 0 0 - - -;
+#X floatatom 328 272 5 0 0 0 - - -;
+#X obj 111 292 pix_crop 436 256 1210 482;
+#X obj 111 219 alpha;
+#X msg 174 870 \$2;
+#X msg 174 893 4 \$1;
+#X obj 14 152 loadbang;
+#X obj 111 239 pix_image latest_snapshot.png;
+#X floatatom 241 851 5 0 0 0 - - -;
+#X obj 183 804 loadbang;
 #X msg 186 193 open latest_snapshot.png;
-#X obj 477 235 gemwin;
-#X msg 480 191 create \, 1;
-#X msg 498 212 0 \, destroy;
-#X obj 111 562 pix_texture;
-#X obj 178 488 spigot 0;
-#X obj 111 505 spigot 1;
-#X obj 45 377 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#X obj 890 254 pix_dump;
+#X obj 935 284 print;
+#X obj 901 214 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 174 916 /;
+#X obj 111 426 t a a;
+#X obj 111 447 pix_separator;
+#X obj 339 444 pix_separator;
+#X obj 157 167 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
 1;
-#X obj 45 397 == 0;
-#X obj 111 422 pix_buf;
-#X obj 199 386 loadbang;
-#X msg 199 409 auto 1;
-#X obj 111 342 pix_gain;
-#X floatatom 194 347 5 0 0 0 - - -;
-#X floatatom 188 248 5 0 0 0 - - -;
-#X floatatom 232 247 5 0 0 0 - - -;
-#X floatatom 275 242 5 0 0 0 - - -;
-#X floatatom 328 242 5 0 0 0 - - -;
-#X obj 111 262 pix_crop 436 256 1210 482;
-#X obj 242 596 pix_equal;
-#X text 305 543 lower bound;
-#X text 307 591 upper bound;
-#X msg 309 559 0.4 0.4 0.2 1;
-#X obj 309 518 loadbang;
-#X floatatom 528 362 3 0 0 0 - - -;
-#X floatatom 506 387 3 0 0 0 - - -;
-#X obj 484 313 pix_blob;
-#X floatatom 551 338 3 0 0 0 - - -;
-#X text 592 337 size;
-#X text 574 367 Y;
-#X text 552 388 X;
-#X obj 459 498 gemhead;
-#X obj 459 595 translateXYZ 0 0 0.1;
-#X obj 459 535 alpha;
-#X obj 460 559 colorRGB 1 1 1 0.3;
-#X obj 111 219 alpha;
-#X floatatom 536 503 5 0 0 0 - - -;
-#X msg 534 623 draw line;
-#X obj 459 625 square;
-#X obj 643 368 * 1;
-#X obj 643 398 * 1;
-#X obj 643 338 * 1;
-#X floatatom 267 639 3 0 100 2 threshold - -;
-#X obj 267 656 / 100;
-#X msg 267 677 threshold \$1;
-#X floatatom 357 639 3 0 100 2 blobsize - -;
-#X obj 357 656 / 100;
-#X msg 357 677 blobSize \$1;
-#X floatatom 367 775 5 0 0 1 x - -;
-#X floatatom 368 791 5 0 0 1 y - -;
-#X floatatom 368 807 5 0 0 1 size - -;
-#X floatatom 369 823 5 0 0 1 minX - -;
-#X floatatom 369 839 5 0 0 1 minY - -;
-#X floatatom 370 855 5 0 0 1 maxX - -;
-#X floatatom 370 871 5 0 0 1 maxY - -;
-#X floatatom 371 887 5 0 0 1 area - -;
-#N canvas -36 633 687 354 showblob 1;
-#X obj 67 86 inlet blobinformation;
-#X obj 67 167 outlet weightedX;
-#X obj 88 187 outlet weightedY;
-#X obj 109 207 outlet weightedSize;
-#X obj 128 228 outlet minX;
-#X obj 149 248 outlet minY;
-#X obj 215 228 outlet maxX;
-#X obj 232 248 outlet maxY;
-#X obj 305 228 outlet size;
-#X text 60 45 this extracts information of the 1st detected blob;
-#N canvas 517 405 450 300 rectangle 1;
-#X obj 68 75 inlet;
-#X obj 215 -1 inlet;
-#X obj 68 257 rectangle;
-#X obj 68 234 translateXYZ;
-#X obj 215 29 unpack 0 0 0 0;
-#X obj 215 94 +;
-#X obj 254 95 +;
-#X text 248 125 0..2;
-#X text 250 145 -1..+1;
-#X obj 340 148 -;
-#X obj 377 149 -;
-#X obj 193 124 - 1;
-#X obj 193 147 * 4;
-#X obj 222 123 - 1;
-#X obj 222 146 * 4;
-#X obj 340 180 * -4;
-#X obj 377 180 * -4;
-#X connect 0 0 3 0;
+#X obj 111 322 pix_gain 1.07;
+#X obj 339 467 s show;
+#X obj 111 755 r show;
+#X obj 111 701 s show;
+#X obj 111 533 t a a;
+#X obj 111 554 pix_separator;
+#X obj 279 549 pix_separator;
+#X obj 279 785 s show;
+#X obj 279 684 pix_coloralpha;
+#X obj 324 569 tgl 15 0 empty empty show_detected_blob 17 7 0 10 -262144
+-1 -1 1 1;
+#N canvas 342 575 559 510 apply_grid 0;
+#X obj 79 289 pix_gain;
+#X msg 159 264 1 1 1 \$1;
+#X floatatom 162 244 5 0 0 0 - - -;
+#X obj 199 43 gemhead;
+#X obj 199 66 alpha;
+#X msg 274 40 open grid.png;
+#X obj 199 86 pix_image grid.png;
+#X obj 199 199 pix_resize 90 35;
+#X obj 79 227 pix_multiply;
+#X obj 79 314 pix_coloralpha;
+#X obj 79 85 inlet;
+#X obj 79 337 outlet;
+#X obj 199 179 pix_flip;
+#X msg 374 161 vertical;
+#X msg 335 161 none;
+#X obj 335 96 r /pd/invertSize;
+#X obj 335 119 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 335 139 route 0 1;
+#X connect 0 0 9 0;
+#X connect 1 0 0 2;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 12 0;
+#X connect 7 0 8 1;
+#X connect 8 0 0 0;
+#X connect 9 0 11 0;
+#X connect 10 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 12 0;
+#X connect 14 0 12 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 14 0;
+#X connect 17 1 13 0;
+#X restore 111 633 pd apply_grid;
+#N canvas 527 129 450 300 zoomEdges 0;
+#X obj 138 57 t a a;
+#X obj 79 102 pix_separator;
+#X obj 179 81 pix_separator;
+#X obj 179 148 pix_gain 100;
+#X obj 79 125 pix_invert;
+#X obj 143 227 pix_multiply;
+#X obj 179 103 pix_resize 140 41;
+#X obj 179 125 pix_crop 25 3 90 35;
+#X obj 141 12 inlet;
+#X obj 143 250 outlet;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
 #X connect 1 0 4 0;
-#X connect 3 0 2 0;
-#X connect 4 0 5 0;
-#X connect 4 0 9 0;
-#X connect 4 1 5 1;
-#X connect 4 1 9 1;
-#X connect 4 2 6 0;
+#X connect 2 0 6 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 9 0;
+#X connect 6 0 7 0;
+#X connect 7 0 3 0;
+#X connect 8 0 0 0;
+#X restore 111 591 pd zoomEdges;
+#N canvas 1060 670 450 300 blobDetection 0;
+#X obj 37 37 inlet;
+#X obj 35 131 pix_equal;
+#X text 128 78 lower bound;
+#X text 130 126 upper bound;
+#X obj 132 53 loadbang;
+#X obj 35 76 t a b;
+#X obj 35 154 pix_resize 90 35;
+#X floatatom 117 203 5 0 0 0 - - -;
+#X obj 35 198 pix_gain 100;
+#X obj 35 221 outlet;
+#X msg 132 94 0.42 0.42 0.25 1;
+#X msg 133 114 0.48 0.48 0.35 1;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 5 0 1 0;
+#X connect 5 1 10 0;
+#X connect 5 1 11 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 10 0 1 1;
+#X connect 11 0 1 2;
+#X restore 111 508 pd blobDetection;
+#X floatatom 366 589 5 0 0 0 - - -;
+#X obj 279 617 pix_gain 1 0 0 0.5;
+#N canvas 400 431 698 384 file 0;
+#X obj 65 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 65 142 openpanel;
+#X msg 65 165 open \$1;
+#X obj 248 189 bng 17 250 50 0 empty empty empty 17 7 0 10 -228856
+-1 -1;
+#X obj 226 211 else/dir;
+#X msg 212 124 dump;
+#X msg 226 145 dir;
+#X obj 261 272 else/display 50;
+#X msg 151 103 reset;
+#X text 245 102 <= opens parent directory;
+#X obj 256 233 else/display 4;
+#X text 325 212 <= open flag;
+#X text 245 123 <= dump all files from the directory (left outlet)
+;
+#X text 253 144 <= sends directory path (right outlet);
+#X text 296 236 <= 'n' number of files.;
+#X msg 125 103 n, f 2;
+#X msg 237 166 n \, dir \, dump;
+#X obj 300 209 else/display 2;
+#X text 268 189 <= same as "n \, dir \, dump";
+#X text 322 165 <= same as "bang";
+#X text 153 263 'directory' =>;
+#X msg 193 73 open /home/titi/Bureau/htequiWork/snapshot;
+#X obj 116 243 print;
+#X obj 52 54 inlet;
+#X obj 198 43 loadbang;
+#X obj 141 325 outlet;
+#X obj 223 316 pack s s;
+#X obj 502 39 inlet;
+#X msg 508 65 dir \, ext .png \, next;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 22 0;
+#X connect 4 0 2 0;
+#X connect 4 0 26 0;
+#X connect 4 1 7 0;
 #X connect 4 2 10 0;
-#X connect 4 3 6 1;
-#X connect 4 3 10 1;
-#X connect 5 0 11 0;
-#X connect 6 0 13 0;
-#X connect 9 0 15 0;
-#X connect 10 0 16 0;
-#X connect 11 0 12 0;
-#X connect 12 0 3 1;
-#X connect 13 0 14 0;
-#X connect 14 0 3 2;
-#X connect 15 0 2 1;
-#X connect 16 0 2 2;
-#X restore 346 188 pd rectangle;
-#X obj 346 117 color 1 1 1 0.5;
-#X obj 346 76 gemhead 70;
-#X obj 346 138 alpha;
-#X msg 425 164 \$6 \$8 \$7 \$9;
-#X msg 67 114 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10 \$11;
-#X obj 67 138 unpack 0 0 0 0 0 0 0 0 0;
-#X obj 315 248 outlet angle;
-#X connect 0 0 15 0;
+#X connect 4 3 17 0;
+#X connect 5 0 4 0;
+#X connect 6 0 4 0;
+#X connect 7 0 26 1;
+#X connect 8 0 4 0;
+#X connect 15 0 4 0;
+#X connect 16 0 4 0;
+#X connect 21 0 4 0;
+#X connect 23 0 0 0;
+#X connect 24 0 21 0;
+#X connect 26 0 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 4 0;
+#X restore 366 178 pd file;
+#X msg 366 201 open \$2/\$1;
+#X obj 403 157 bng 15 250 50 0 empty empty next 17 7 0 10 -262144 -1
+-1;
+#X obj 365 148 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 279 648 pix_mean_color;
+#X obj 537 685 print;
+#X obj 111 392 pix_buf;
+#X msg 199 379 auto 1;
+#X obj 430 666 unpack f f f f;
+#X floatatom 430 689 5 0 0 0 - - -;
+#X obj 430 713 change;
+#X obj 475 758 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 430 736 select 0;
+#X obj 279 759 pix_buffer_write blob;
+#X text 486 735 blob detected;
+#X obj 279 591 spigot 1;
+#N canvas 400 215 716 300 writeblob 0;
+#X obj 108 40 t b b;
+#X msg 135 62 0;
+#X text 149 40 write blob;
+#X obj 123 262 pix_buffer blob 1;
+#X obj 108 127 else/dir;
+#X msg 108 106 dir;
+#X obj 104 152 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 108 17 inlet;
+#X obj 209 110 outlet;
+#X obj 445 193 time, f 15;
+#X obj 368 193 date, f 11;
+#X obj 122 158 t s s;
+#X obj 334 156 t s b b;
+#X obj 346 224 pack s f f f f f f;
+#X obj 99 87 delay 100;
+#X msg 346 247 save \$1/snapshots/blob-\$2_\$3_\$4__\$5_\$6_\$7_detect.png
+0;
+#X msg 123 210 save \$1/latest_blob.png 0;
 #X connect 0 0 14 0;
-#X connect 11 0 13 0;
-#X connect 12 0 11 0;
-#X connect 13 0 10 0;
-#X connect 14 0 10 1;
-#X connect 15 0 16 0;
-#X connect 16 0 1 0;
-#X connect 16 1 2 0;
-#X connect 16 2 3 0;
-#X connect 16 3 4 0;
-#X connect 16 4 5 0;
-#X connect 16 5 6 0;
-#X connect 16 6 7 0;
-#X connect 16 7 8 0;
-#X connect 16 8 17 0;
-#X restore 345 750 pd showblob 1;
-#X obj 255 711 pix_multiblob 6;
-#X floatatom 371 903 5 0 0 1 angle* - -;
-#X msg 310 579 0.5 0.5 0.375 1;
-#X msg 173 605 \$2;
-#X msg 170 630 4 \$1;
-#X obj 170 653 *;
-#X obj 111 695 rectangle 4 4;
+#X connect 0 1 1 0;
+#X connect 1 0 8 0;
+#X connect 4 1 6 0;
+#X connect 4 1 11 0;
+#X connect 5 0 4 0;
+#X connect 7 0 0 0;
+#X connect 9 0 13 4;
+#X connect 9 1 13 5;
+#X connect 9 2 13 6;
+#X connect 10 0 13 1;
+#X connect 10 1 13 2;
+#X connect 10 2 13 3;
+#X connect 11 0 16 0;
+#X connect 11 1 12 0;
+#X connect 12 0 13 0;
+#X connect 12 1 10 0;
+#X connect 12 2 9 0;
+#X connect 13 0 15 0;
+#X connect 14 0 5 0;
+#X connect 15 0 3 0;
+#X connect 16 0 3 0;
+#X restore 475 777 pd writeblob;
+#N canvas 0 61 1018 300 OSC 0;
+#X floatatom 339 110 3 0 0 0 - - -;
+#X floatatom 366 110 3 0 0 0 - - -;
+#X floatatom 393 110 3 0 0 0 - - -;
+#X floatatom 420 110 3 0 0 0 - - -;
+#X floatatom 447 111 5 0 0 0 - - -;
+#X obj 339 84 unpack 0 0 0 0 0;
+#X floatatom 264 85 9 0 0 0 - - -;
+#X obj 473 88 tgl 15 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1
+;
+#X floatatom 263 110 9 0 0 0 - - -;
+#X obj 265 59 route received total from multicast;
+#X obj 12 63 mrpeach/unpackOSC;
+#X obj 12 41 mrpeach/udpreceive 9977 239.200.200.200;
+#X obj 630 111 mrpeach/udpsend;
+#X msg 690 87 connect 239.200.200.200 9977;
+#X obj 690 62 loadbang;
+#X obj 630 41 mrpeach/packOSC;
+#X obj 630 17 r toOSC;
+#X obj 194 111 delay 1000;
+#X msg 194 134 -;
+#X obj 173 162 outlet;
+#X obj 12 175 route /pd/computeSnap;
+#X obj 12 198 s /pd/computeSnap;
+#X obj 135 201 route /pd/invertSize;
+#X obj 135 223 s /pd/invertSize;
+#X obj 252 221 route /pd/getPosition/food /pd/getPosition/inib;
+#X obj 391 243 s /pd/getPosition/inib;
+#X obj 252 243 s /pd/getPosition/food;
+#X obj 173 88 t a b;
 #X connect 5 0 0 0;
 #X connect 5 1 1 0;
 #X connect 5 2 2 0;
@@ -163,69 +285,269 @@
 #X connect 9 1 8 0;
 #X connect 9 2 5 0;
 #X connect 9 3 7 0;
-#X connect 10 0 12 0;
+#X connect 10 0 20 0;
+#X connect 10 0 27 0;
 #X connect 11 0 10 0;
 #X connect 11 1 9 0;
-#X connect 13 0 50 0;
-#X connect 14 0 33 0;
-#X connect 15 0 14 0;
-#X connect 17 0 16 0;
-#X connect 18 0 16 0;
-#X connect 19 0 78 0;
-#X connect 19 1 75 0;
-#X connect 20 0 34 0;
-#X connect 21 0 19 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 15 0 12 0;
+#X connect 16 0 15 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 20 0 21 0;
+#X connect 20 1 22 0;
 #X connect 22 0 23 0;
-#X connect 22 0 20 1;
-#X connect 23 0 21 1;
-#X connect 24 0 21 0;
-#X connect 24 0 20 0;
-#X connect 25 0 26 0;
-#X connect 26 0 24 0;
-#X connect 27 0 24 0;
-#X connect 28 0 27 1;
-#X connect 29 0 33 1;
-#X connect 30 0 33 2;
-#X connect 31 0 33 3;
-#X connect 32 0 33 4;
-#X connect 33 0 27 0;
-#X connect 34 0 72 0;
-#X connect 37 0 34 1;
-#X connect 38 0 37 0;
-#X connect 41 1 40 0;
-#X connect 41 1 55 0;
-#X connect 41 2 39 0;
-#X connect 41 2 54 0;
-#X connect 41 3 42 0;
-#X connect 41 3 56 0;
-#X connect 46 0 48 0;
-#X connect 47 0 53 0;
-#X connect 48 0 49 0;
-#X connect 49 0 47 0;
-#X connect 50 0 14 0;
-#X connect 51 0 49 4;
-#X connect 52 0 53 0;
-#X connect 54 0 47 2;
-#X connect 55 0 47 1;
-#X connect 56 0 53 1;
-#X connect 57 0 58 0;
-#X connect 58 0 59 0;
-#X connect 59 0 72 0;
-#X connect 60 0 61 0;
-#X connect 61 0 62 0;
-#X connect 62 0 72 0;
-#X connect 71 0 63 0;
-#X connect 71 1 64 0;
-#X connect 71 2 65 0;
-#X connect 71 3 66 0;
-#X connect 71 4 67 0;
-#X connect 71 5 68 0;
-#X connect 71 6 69 0;
-#X connect 71 7 70 0;
-#X connect 71 8 73 0;
-#X connect 72 0 19 0;
-#X connect 72 1 71 0;
-#X connect 74 0 34 2;
-#X connect 75 0 76 0;
-#X connect 76 0 77 0;
-#X connect 77 0 78 2;
+#X connect 22 1 24 0;
+#X connect 24 0 26 0;
+#X connect 24 1 25 0;
+#X connect 27 0 19 0;
+#X connect 27 1 17 0;
+#X restore 57 86 pd OSC;
+#X obj 57 109 else/display;
+#X obj 187 163 r /pd/computeSnap;
+#X msg 182 825 quality 0 \, rectangle 0;
+#X obj 111 940 rectangle 4 4;
+#N canvas 916 215 865 747 getPosition 0;
+#X obj 37 -103 inlet;
+#X obj 37 558 outlet;
+#X obj 49 10 pix_data;
+#X obj 615 175 random 1e+06;
+#X obj 696 175 random 1e+06;
+#X obj 596 150 t b b b;
+#X obj 596 131 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 37 -80 t a a;
+#X obj 615 198 / 1e+06;
+#X obj 696 196 / 1e+06;
+#X obj 74 500 pack f f f f;
+#X obj 124 418 * 35;
+#X obj 74 458 t f f;
+#X obj 124 443 t b f f;
+#X obj 101 479 + 1;
+#X obj 163 464 + 1;
+#X msg 124 373 1 \$1;
+#X obj 124 396 -;
+#X obj 37 525 pix_rectangle;
+#X obj 74 435 * 90;
+#X obj 714 33 t b f;
+#X obj 692 59 pack f f;
+#X obj 692 82 t b a;
+#X obj 716 104 unpack f f;
+#X obj 689 -124 vsl 15 128 0 1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 5800 1;
+#X obj 714 -147 vsl 15 128 0 1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 5400 1;
+#X obj 689 12 * 1e+06;
+#X obj 713 -8 * 1e+06;
+#X obj 71 34 unpack f f f f;
+#X obj 301 51 route 0 1;
+#X obj 352 75 > 0.9;
+#X obj 329 99 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 352 118 route 1;
+#X msg 352 141 0;
+#X obj 352 164 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 352 183 metro 1;
+#X text 380 163 find blue;
+#X obj 98 143 route 0 1;
+#X obj 149 167 > 0.9;
+#X obj 116 211 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 149 220 route 1;
+#X msg 149 243 0;
+#X obj 149 266 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 149 285 metro 1;
+#X text 177 265 find green;
+#X obj 419 100 r /pd/getPosition/food;
+#X msg 419 123 1;
+#X msg 207 150 1;
+#X obj 207 127 r /pd/getPosition/inib;
+#X obj 149 308 s random-pos;
+#X obj 352 206 s random-pos;
+#X obj 49 -57 r change-pos;
+#X obj 596 110 r random-pos;
+#X obj 684 133 s change-pos;
+#X obj 596 245 s change-pos;
+#X obj 615 221 s Xpos;
+#X obj 74 410 r Xpos;
+#X obj 696 219 s Ypos;
+#X obj 124 342 r Ypos;
+#X obj 79 -34 r Xpos;
+#X obj 94 -13 r Ypos;
+#X text 202 192 green found;
+#X obj 256 293 pack s f f;
+#X obj 256 336 s toOSC;
+#X obj 284 270 r Xpos;
+#X obj 327 270 r Ypos;
+#X msg 256 249 symbol /pd/position/inib;
+#X obj 442 31 pack s f f;
+#X obj 442 74 s toOSC;
+#X obj 470 8 r Xpos;
+#X obj 513 8 r Ypos;
+#X msg 442 -13 symbol /pd/position/food;
+#X obj 442 53 list trim;
+#X obj 256 314 list trim;
+#X obj 149 194 &&;
+#X obj 352 98 &&;
+#X connect 0 0 7 0;
+#X connect 2 1 28 0;
+#X connect 3 0 8 0;
+#X connect 4 0 9 0;
+#X connect 5 0 54 0;
+#X connect 5 1 3 0;
+#X connect 5 2 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 18 0;
+#X connect 7 1 2 1;
+#X connect 8 0 55 0;
+#X connect 9 0 57 0;
+#X connect 10 0 18 1;
+#X connect 11 0 13 0;
+#X connect 12 0 10 0;
+#X connect 12 1 14 0;
+#X connect 13 0 10 0;
+#X connect 13 1 10 1;
+#X connect 13 2 15 0;
+#X connect 14 0 10 2;
+#X connect 15 0 10 3;
+#X connect 16 0 17 0;
+#X connect 17 0 11 0;
+#X connect 18 0 1 0;
+#X connect 19 0 12 0;
+#X connect 20 0 21 0;
+#X connect 20 1 21 1;
+#X connect 21 0 22 0;
+#X connect 22 0 53 0;
+#X connect 22 1 23 0;
+#X connect 23 0 8 0;
+#X connect 23 1 9 0;
+#X connect 24 0 26 0;
+#X connect 25 0 27 0;
+#X connect 26 0 21 0;
+#X connect 27 0 20 0;
+#X connect 28 1 37 0;
+#X connect 28 2 29 0;
+#X connect 29 2 30 0;
+#X connect 30 0 75 0;
+#X connect 32 0 33 0;
+#X connect 32 0 71 0;
+#X connect 33 0 34 0;
+#X connect 34 0 35 0;
+#X connect 34 0 75 1;
+#X connect 35 0 50 0;
+#X connect 37 2 38 0;
+#X connect 38 0 74 0;
+#X connect 40 0 41 0;
+#X connect 40 0 66 0;
+#X connect 41 0 42 0;
+#X connect 42 0 43 0;
+#X connect 42 0 74 1;
+#X connect 43 0 49 0;
+#X connect 45 0 46 0;
+#X connect 46 0 34 0;
+#X connect 47 0 42 0;
+#X connect 48 0 47 0;
+#X connect 51 0 2 0;
+#X connect 52 0 6 0;
+#X connect 56 0 19 0;
+#X connect 58 0 16 0;
+#X connect 59 0 2 2;
+#X connect 60 0 2 3;
+#X connect 62 0 73 0;
+#X connect 64 0 62 1;
+#X connect 65 0 62 2;
+#X connect 66 0 62 0;
+#X connect 67 0 72 0;
+#X connect 69 0 67 1;
+#X connect 70 0 67 2;
+#X connect 71 0 67 0;
+#X connect 72 0 68 0;
+#X connect 73 0 63 0;
+#X connect 74 0 40 0;
+#X connect 74 0 39 0;
+#X connect 75 0 32 0;
+#X connect 75 0 31 0;
+#X restore 111 656 pd getPosition;
+#X obj 581 721 != 0;
+#X msg 587 744 \; toOSC /pd/newBlob \$1;
+#N canvas 377 463 614 300 README 0;
+#X text 15 22 /pd/computeSnap : read latest_snap and computes a blob
+;
+#X text 126 37 returns /pd/newBlob 1/0;
+#X text 130 53 if blob found \, writes latest_blob.png and a timed
+copy in ./snapshots folder;
+#X text 15 192 /pd/invertSize : toggle green/blue (toggle plate role)
+;
+#X text 15 112 /pd/getPosition/food : compute a blue position and return
+it to /pd/position/food;
+#X text 15 152 /pd/getPosition/inib : compute a green position and
+return it to /pd/position/inib;
+#X restore 126 79 pd README;
+#X connect 0 0 14 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 66 0;
+#X connect 4 1 15 0;
+#X connect 5 0 42 0;
+#X connect 6 0 5 1;
+#X connect 7 0 52 0;
+#X connect 8 0 30 1;
+#X connect 9 0 13 1;
+#X connect 10 0 13 2;
+#X connect 11 0 13 3;
+#X connect 12 0 13 4;
+#X connect 13 0 30 0;
+#X connect 14 0 18 0;
+#X connect 15 0 16 0;
+#X connect 16 0 25 0;
+#X connect 17 0 2 0;
+#X connect 18 0 13 0;
+#X connect 20 0 65 0;
+#X connect 21 0 18 0;
+#X connect 22 1 23 0;
+#X connect 24 0 22 0;
+#X connect 25 0 19 0;
+#X connect 25 0 66 1;
+#X connect 26 0 27 0;
+#X connect 26 1 28 0;
+#X connect 27 0 5 0;
+#X connect 28 0 31 0;
+#X connect 29 0 0 0;
+#X connect 30 0 51 0;
+#X connect 32 0 4 0;
+#X connect 34 0 35 0;
+#X connect 34 1 36 0;
+#X connect 35 0 41 0;
+#X connect 36 0 60 0;
+#X connect 38 0 58 0;
+#X connect 39 0 60 1;
+#X connect 40 0 67 0;
+#X connect 41 0 40 0;
+#X connect 42 0 34 0;
+#X connect 43 0 44 1;
+#X connect 44 0 49 0;
+#X connect 45 0 46 0;
+#X connect 46 0 18 0;
+#X connect 47 0 45 1;
+#X connect 48 0 45 0;
+#X connect 49 0 38 0;
+#X connect 49 1 53 0;
+#X connect 51 0 26 0;
+#X connect 52 0 51 0;
+#X connect 53 0 54 0;
+#X connect 53 0 55 0;
+#X connect 55 0 57 0;
+#X connect 55 0 68 0;
+#X connect 56 0 61 0;
+#X connect 57 1 56 0;
+#X connect 58 0 37 0;
+#X connect 60 0 44 0;
+#X connect 61 0 58 1;
+#X connect 62 0 63 0;
+#X connect 64 0 21 0;
+#X connect 65 0 4 0;
+#X connect 67 0 33 0;
+#X connect 68 0 69 0;

File diff suppressed because it is too large
+ 31595 - 0
blob-CN/grille.svg


+ 175 - 0
blob-CN/htequiOSC.pd

@@ -0,0 +1,175 @@
+#N canvas 89 272 1755 697 12;
+#X msg 73 121 disconnect;
+#X obj 329 426 tgl 15 0 empty empty connected 20 7 0 8 -24198 -241291
+-1 1 1;
+#X text 25 398 udpsend sends bytes over a udp connection.;
+#X msg 176 224 multicast_interface 192.168.0.88;
+#X msg 151 199 multicast_interface eth1;
+#X text 154 120 <--disconnect before connecting to another address
+;
+#X text 314 150 send to a multicast address;
+#X text 286 175 specify an interface to use with multicast;
+#X msg 128 176 multicast_interface 1;
+#X text 336 198 by index \, name or address;
+#X msg 300 348 multicast_loopback \$1;
+#X obj 300 326 tgl 15 0 empty empty empty 20 7 0 8 -24198 -241291 -1
+0 1;
+#X text 111 324 enable multicast loopback:;
+#X floatatom 1309 84 3 0 0 0 - - -;
+#X floatatom 1336 84 3 0 0 0 - - -;
+#X floatatom 1363 84 3 0 0 0 - - -;
+#X floatatom 1390 84 3 0 0 0 - - -;
+#X floatatom 1417 85 5 0 0 0 - - -;
+#X obj 1309 58 unpack 0 0 0 0 0;
+#X msg 942 13 status;
+#X floatatom 1234 59 9 0 0 0 - - -;
+#X obj 1443 62 tgl 15 0 empty empty empty 17 7 0 10 -4034 -1 -1 0 1
+;
+#X floatatom 1233 84 9 0 0 0 - - -;
+#X text 1099 36 bytes received:;
+#X text 1069 60 total bytes received:;
+#X obj 1007 427 spigot;
+#X obj 1046 407 tgl 15 0 empty empty enable_print: -77 8 0 10 -4034
+-1 -1 0 1;
+#X obj 1007 452 print received;
+#X obj 1235 33 route received total from multicast;
+#X msg 953 52 port 9998;
+#X obj 943 296 route /analog/0;
+#X obj 942 108 mrpeach/unpackOSC;
+#X obj 512 335 mrpeach/packOSC;
+#X obj 932 356 vsl 15 128 0 1024 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#X msg 269 252 connect 192.168.1.105 8000;
+#X obj 500 236 r toOSC;
+#X obj 986 162 s fromOSC;
+#X msg 668 469 /brush \$1;
+#X floatatom 689 422 5 0 0 0 - - -;
+#X obj 745 429 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 745 449 * 255;
+#X obj 576 480 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 548 511;
+#X floatatom 612 494 5 0 0 0 - - -;
+#X msg 661 499 0;
+#X msg 581 533 /filling \$1;
+#X obj 618 399 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 804 395 /crusher \$1;
+#X obj 810 376 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 618 419 * 1;
+#X obj 1160 136 stepper A_low;
+#X obj 1160 340 stepper B_low;
+#X obj 1160 540 stepper TrBr_low;
+#X obj 1161 740 stepper LevBr_low;
+#X obj 698 755 stepper Y_top;
+#X obj 697 555 stepper X_top;
+#X msg 418 476 /pill_trap \$1;
+#X floatatom 425 454 5 0 0 0 - - -;
+#X floatatom 501 570 5 0 0 0 - - -;
+#X msg 494 613 /peristaltic \$1;
+#X obj 139 83 loadbang;
+#X msg 597 244 /feeder1/barrel_home bang;
+#X msg 627 197 /feeder2/barrel_home bang;
+#X msg 634 219 /feeder2/pill bang;
+#X msg 604 266 /feeder1/pill bang;
+#X obj 549 20 r fromOSC;
+#X obj 550 67 print feeder2_barrel;
+#X obj 710 67 print feeder2_pill;
+#X obj 550 42 route /feeder2/barrel/done /feeder2/pill/done;
+#X obj 591 105 route /feeder1/barrel/done /feeder1/barrel/done;
+#X obj 594 150 print feeder1_barrel;
+#X obj 753 150 print feeder1_pill;
+#X obj 330 398 mrpeach/udpsend;
+#X msg 723 327 /rack \$1;
+#X obj 748 309 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X floatatom 802 307 5 0 0 0 - - -;
+#X msg 802 331 /cappingShutter \$1;
+#X obj 689 295 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 664 313 /reel \$1;
+#X msg 149 40 connect 239.200.200.200 9977 \, multicast_loopback 0
+;
+#X obj 397 943 s toOSC;
+#X obj 48 1009 stepper X;
+#X obj 464 1009 stepper Y;
+#X obj 880 1009 stepper Z;
+#X obj 1296 1009 stepper W;
+#X obj 48 1249 stepper T1;
+#X obj 464 1248 stepper T2;
+#X obj 880 1249 stepper T3;
+#X obj 1296 1249 stepper T4;
+#X obj 397 848 symbol;
+#X msg 397 918 /\$1/homing 0;
+#X obj 46 1497 stepper Shutter;
+#X obj 462 1497 stepper Film;
+#X obj 942 86 mrpeach/udpreceive 9977 239.200.200.200;
+#X msg 397 823 X \, Y \, Z \, W \, T1 \, T2 \, T3 \, T4 \, Shutter
+;
+#X connect 0 0 72 0;
+#X connect 3 0 72 0;
+#X connect 4 0 72 0;
+#X connect 8 0 72 0;
+#X connect 10 0 72 0;
+#X connect 11 0 10 0;
+#X connect 18 0 13 0;
+#X connect 18 1 14 0;
+#X connect 18 2 15 0;
+#X connect 18 3 16 0;
+#X connect 18 4 17 0;
+#X connect 19 0 93 0;
+#X connect 25 0 27 0;
+#X connect 26 0 25 1;
+#X connect 28 0 20 0;
+#X connect 28 1 22 0;
+#X connect 28 2 18 0;
+#X connect 28 3 21 0;
+#X connect 29 0 93 0;
+#X connect 30 0 33 0;
+#X connect 30 1 25 0;
+#X connect 31 0 30 0;
+#X connect 31 0 36 0;
+#X connect 32 0 72 0;
+#X connect 35 0 32 0;
+#X connect 37 0 32 0;
+#X connect 38 0 37 0;
+#X connect 39 0 40 0;
+#X connect 40 0 37 0;
+#X connect 41 0 42 0;
+#X connect 43 0 45 0;
+#X connect 44 0 43 0;
+#X connect 45 0 32 0;
+#X connect 46 0 49 0;
+#X connect 47 0 32 0;
+#X connect 48 0 47 0;
+#X connect 49 0 43 0;
+#X connect 56 0 32 0;
+#X connect 57 0 56 0;
+#X connect 58 0 59 0;
+#X connect 59 0 32 0;
+#X connect 60 0 79 0;
+#X connect 61 0 32 0;
+#X connect 62 0 32 0;
+#X connect 63 0 32 0;
+#X connect 64 0 32 0;
+#X connect 65 0 68 0;
+#X connect 68 0 66 0;
+#X connect 68 1 67 0;
+#X connect 68 2 69 0;
+#X connect 69 0 70 0;
+#X connect 69 1 71 0;
+#X connect 72 0 1 0;
+#X connect 73 0 32 0;
+#X connect 74 0 73 0;
+#X connect 75 0 76 0;
+#X connect 76 0 32 0;
+#X connect 77 0 78 0;
+#X connect 78 0 32 0;
+#X connect 79 0 72 0;
+#X connect 89 0 90 0;
+#X connect 90 0 80 0;
+#X connect 93 0 31 0;
+#X connect 93 1 28 0;
+#X connect 94 0 89 0;