Parcourir la source

feeder about complete, communication with TOP ok
can't get "move method" to work, argument is not passed to feeder

eLandon il y a 6 ans
Parent
commit
cc30b5f5c0

+ 3 - 3
HTequi-firmware/lib/Atm_lien/Atm_Teenstep.cpp

@@ -10,11 +10,11 @@ Atm_Teenstep& Atm_Teenstep::begin(Stepper & motorRef, StepControl & stepControlR
     /*                             ON_ENTER     ON_LOOP          ON_EXIT  EVT_HOMING_LOW  EVT_HOMING_HIGH  EVT_MOVE_TIMEOUT  EVT_LIMIT_HIGH   EVT_LIMIT_LOW  EVT_EMERGENCYSTOP  EVT_STOP  EVT_ONTARGET  EVT_MOVE  EVT_DISABLE  EVT_ENABLE  ELSE */
     /*       DISABLED */       ENT_DISABLED,         -1,              -1,     HOMING_LOW,     HOMING_HIGH,               -1,             -1,             -1,                -1,       -1,           -1,       -1,          -1,    ENABLED,   -1,
     /*        ENABLED */        ENT_ENABLED,         -1,              -1,     HOMING_LOW,     HOMING_HIGH,               -1,             -1,             -1,                -1,       -1,           -1,  RUNNING,    DISABLED,         -1,   -1,
-    /*        RUNNING */        ENT_RUNNING, LP_RUNNING,              -1,     HOMING_LOW,     HOMING_HIGH,               -1, EMERGENCY_STOP, EMERGENCY_STOP,    EMERGENCY_STOP, STOPPING,      ENABLED,  RUNNING,          -1,         -1,   -1,
+    /*        RUNNING */        ENT_RUNNING, LP_RUNNING,              -1,     HOMING_LOW,     HOMING_HIGH,               -1,             -1,             -1,    EMERGENCY_STOP, STOPPING,      ENABLED,  RUNNING,          -1,         -1,   -1,
     /*       STOPPING */       ENT_STOPPING,         -1,              -1,             -1,              -1,               -1, EMERGENCY_STOP, EMERGENCY_STOP,    EMERGENCY_STOP,       -1,           -1,  RUNNING,          -1,         -1,   -1,
     /* EMERGENCY_STOP */ ENT_EMERGENCY_STOP,         -1,              -1,             -1,              -1,               -1,             -1,             -1,                -1,       -1,           -1,  RUNNING,          -1,    ENABLED,   -1,
-    /*    HOMING_HIGH */    ENT_HOMING_HIGH,         -1, EXT_HOMING_HIGH,             -1,              -1,               -1,        ENABLED, EMERGENCY_STOP,    EMERGENCY_STOP, STOPPING,           -1,       -1,          -1,         -1,   -1,
-    /*     HOMING_LOW */     ENT_HOMING_LOW,         -1,  EXT_HOMING_LOW,             -1,              -1,               -1, EMERGENCY_STOP,        ENABLED,    EMERGENCY_STOP, STOPPING,           -1,       -1,          -1,         -1,   -1,
+    /*    HOMING_HIGH */    ENT_HOMING_HIGH,         -1, EXT_HOMING_HIGH,             -1,              -1,               -1,        ENABLED,             -1,    EMERGENCY_STOP, STOPPING,           -1,       -1,          -1,         -1,   -1,
+    /*     HOMING_LOW */     ENT_HOMING_LOW,         -1,  EXT_HOMING_LOW,             -1,              -1,               -1,             -1,        ENABLED,    EMERGENCY_STOP, STOPPING,           -1,       -1,          -1,         -1,   -1,
   };
   // clang-format on
   Machine::begin( state_table, ELSE );

+ 4 - 1
HTequi-firmware/lib/Atm_lien/Atm_Teenstep_OSC.h

@@ -10,7 +10,10 @@ class Atm_Teenstep_OSC {
 
   public:
     Atm_Teenstep_OSC( void ){};
-    Atm_Teenstep_OSC& begin(Atm_Teenstep & stepperMachineRef, EthernetUDP& udpRef, OSCBundle& bndl, const char* address);
+    Atm_Teenstep_OSC& begin(Atm_Teenstep & stepperMachineRef,
+                              EthernetUDP& udpRef,
+                               OSCBundle& bndl,
+                               const char* address);
     Atm_Teenstep* stepperMachine ;
     const char* _adress = "/OSC";
     EthernetUDP* _udpRef ;

+ 18 - 9
HTequi-firmware/src/blobcnc_feeder/main.cpp

@@ -38,12 +38,14 @@ const int BARREL_REDUCTION_RATIO = 26.85;
 const int BARREL_MICROSTEP = 32;
 
 static uint16_t BARREL_THRESHOLD[] = {880} ; //for sensor to trig
-const int BARREL_INIBSENSOR = 5000;
+const int BARREL_INIBSENSOR = 6000;
 
 const int PILL_SPEED = 20 ;
 const int PILL_ACC = 1000 ;
 const int PILL_DISTANCE = 200 ; //in full steps
 const int PILL_MICROSTEP = 32;
+const int PILL_THRESHOLD = 680 ;
+const int PILL_MOVE_AFTER_DETECTION = 20 ;
 
 
 
@@ -78,19 +80,21 @@ void barrel_homing(){
       break ;
     }
   }
-  if (!foundHome){Serial.println("homing 0");}
-  else{Serial.println("homing 1");}
+  if (!foundHome){Serial1.println("barrel 0 ");}
+  else{Serial1.println("barrel 1 ");}
 
 }
 
 
 void barrel_move(int stepRel){
-  Serial.println(stepRel*BARREL_MICROSTEP*BARREL_REDUCTION_RATIO);
+  Serial1.print("barrel_move ");
+  Serial1.println(stepRel);
   barrel_step.move(stepRel*BARREL_MICROSTEP*BARREL_REDUCTION_RATIO);
 }
 
 void pill_move(int stepRel){
-  Serial.println(stepRel* PILL_MICROSTEP);
+  Serial1.print("pill_move ");
+  Serial1.println(stepRel);
   pill_step.move(stepRel* PILL_MICROSTEP);
 }
 
@@ -103,10 +107,13 @@ void pill_next(){
     int value = pill_sensor.state();
     automaton.run();
     Serial.println(value);
-    if(value<650){foundPill = true ;break;}
+    if(value<PILL_THRESHOLD){
+      foundPill = true ;
+      pill_step.move(PILL_MOVE_AFTER_DETECTION* PILL_MICROSTEP);
+      break;}
   }
-  if (!foundPill){Serial.println("pill 0");}
-  else{Serial.println("pill 1");}
+  if (!foundPill){Serial1.println("pill 0 ");}
+  else{Serial1.println("pill 1 ");}
 
 }
 
@@ -165,7 +172,7 @@ void setup() {
   Serial.begin(115200); // higher Baud rate for faster refresh, CHANGE IN SERIAL MONITOR
   Serial1.begin(9600);
   delay(2000);
-  Serial.println("Started");
+  Serial.println("Started Feeder");
   cmd.begin( Serial, cmd_buffer, sizeof( cmd_buffer ) )
     .trace(Serial)
     .list( cmdlist )
@@ -197,6 +204,8 @@ void setup() {
   pill_stepper.setMaxSpeed(PILL_SPEED*PILL_MICROSTEP);
   pill_stepper.setAcceleration(PILL_ACC*PILL_MICROSTEP);
   pill_sensor.begin(A1, 50).average( avgbuffer, sizeof( avgbuffer ) );
+
+  barrel_homing();
   //stepper.onOnchange(Machine &machine, optional int event = 0)
   //stepper.cycle(1000);
   //barrel_step.move(10000);

+ 93 - 7
HTequi-firmware/src/blobcnc_top/main.cpp

@@ -64,6 +64,79 @@ void testCallback(){
   // printPosition
 }
 
+/////////////////// Feeders serial communication  ////////////////////////
+char feeder1_buffer[80];
+Atm_command feeder1;
+enum { CMD_BARREL,  CMD_PILL, CMD_PILL_MOVE, CMD_BARREL_MOVE};
+const char feeder1list[] =
+    "barrel pill pill_move barrel_move";
+void feeder1_callback( int idx, int v, int up ) {
+  //int pin = atoi( cmd.arg( 1 ) );
+  Serial.print(v);
+  Serial.println("  in callback");
+  switch ( v ) {
+    case CMD_BARREL:
+      bndl.add("/feeder1/barrel/done").add(feeder1.arg( 1 ));
+      Serial.println("got answer");
+      return;
+    case CMD_PILL:
+      bndl.add("/feeder1/pill/done").add(feeder1.arg( 1 ));
+      Serial.println("got answer");
+      return;
+    case CMD_BARREL_MOVE:
+      bndl.add("/feeder1/barrel/move").add(feeder1.arg( 1 ));
+      Serial.println("got answer");
+      return;
+    case CMD_PILL_MOVE:
+      bndl.add("/feeder1/pill/move").add(feeder1.arg( 1 ));
+      Serial.println("got answer");
+      return;
+  }
+}
+
+char feeder2_buffer[80];
+Atm_command feeder2;
+enum { CMD_BARREL2,  CMD_PILL2, CMD_PILL_MOVE2, CMD_BARREL_MOVE2};
+const char feeder2list[] =
+    "barrel pill pill_move barrel_move";
+void feeder2_callback( int idx, int v, int up ) {
+  //int pin = atoi( cmd.arg( 1 ) );
+  Serial.print(v);
+  Serial.println("  in callback");
+  switch ( v ) {
+    case CMD_BARREL2:
+      bndl.add("/feeder2/barrel/done").add(feeder2.arg( 1 ));
+      Serial.println("got answer");
+
+      return;
+    case CMD_PILL2:
+      bndl.add("/feeder2/pill/done").add(feeder2.arg( 1 ));
+      Serial.println("got answer");
+      return;
+    case CMD_BARREL_MOVE2:
+      bndl.add("/feeder2/barrel/move").add(feeder2.arg( 1 ));
+      Serial.println("got answer");
+      return;
+    case CMD_PILL_MOVE2:
+      bndl.add("/feeder1/pill/move").add(feeder2.arg( 1 ));
+      Serial.println("got answer");
+      return;
+  }
+}
+
+void feederOSC(OSCMessage &msg){
+
+  msg.dispatch("/feeder1/barrel_home", [](OSCMessage &msg){Serial1.println("barrel_home ");Serial.println("barrel1");});
+  msg.dispatch("/feeder1/pill", [](OSCMessage &msg){Serial1.println("pill ");Serial.println("pill1");});
+  msg.dispatch("/feeder1/barrel_move", [](OSCMessage &msg){Serial1.print("barrel_move ");Serial1.println(msg.getInt(0));Serial2.println(" ");Serial.println("pill1");});
+  msg.dispatch("/feeder1/pill_move", [](OSCMessage &msg){Serial1.print("pill_move ");Serial1.println(msg.getInt(0));Serial2.println(" ");Serial.println("pill1");});
+  msg.dispatch("/feeder2/barrel_home", [](OSCMessage &msg){Serial2.println("barrel_home ");Serial.println("barrel2");});
+  msg.dispatch("/feeder2/pill", [](OSCMessage &msg){Serial2.println("pill ");Serial.println("pill2");});
+  msg.dispatch("/feeder2/barrel_move", [](OSCMessage &msg){Serial2.print("barrel_move ");Serial2.println(msg.getInt(0));Serial2.println(" ");Serial.println("pill2");});
+  msg.dispatch("/feeder2/pill_move", [](OSCMessage &msg){Serial2.print("pill_move ");Serial2.print(msg.getInt(0));Serial2.println(" ");Serial.println(msg.getInt(0));});
+}
+
+
 //////////////  Setup  /////////////////////
 
 void setup() {
@@ -78,7 +151,7 @@ void setup() {
   //  SERIAL
   Serial.begin(115200); // higher Baud rate for faster refresh, CHANGE IN SERIAL MONITOR
   delay(2000);
-  Serial.println("Started");
+  Serial.println("Started Top");
 
   //  LED
 
@@ -88,7 +161,7 @@ void setup() {
    // X_top_step.begin(X_top_stepper, X_top_controller, Udp, bndl, "/X_top")
   X_top_step.begin(X_top_stepper, X_top_controller)
             .setEnablePin(18)//.enableReversed(1);//.enable(1);
-            .setLimitType(2).setLimitPins(A3, 16).limitReversed(true).limitThresholds(600, 750, 950, 1200);
+            .setLimitType(3).setLimitPins(A3).limitReversed(false).limitThresholds(600, 750, 950, 1200);
   X_top_stepper.setMaxSpeed(HIGH_SPEED);
   X_top_stepper.setAcceleration(HIGH_ACC);
   X_top_stepper.setInverseRotation(true);
@@ -105,9 +178,22 @@ void setup() {
   Y_top_stepper.setInverseRotation(false);
   //stepper.onOnchange(Machine &machine, optional int event = 0)
   //stepper.cycle(1000);
-  X_top_step.move(-100000).disable();
-  Y_top_step.move(1000);
-  //delay(2000);
+  // X_top_step.move(-100000).disable();
+  // Y_top_step.move(1000);
+  // //delay(2000);
+
+  // FEEDERS
+  Serial1.begin(9600);
+  feeder1.begin( Serial1, feeder1_buffer, sizeof( feeder1_buffer ) )
+    .trace(Serial)
+    .list( feeder1list )
+    .onCommand( feeder1_callback );
+
+  Serial2.begin(9600);
+  feeder2.begin( Serial2, feeder2_buffer, sizeof( feeder2_buffer ) )
+    .trace(Serial)
+    .list( feeder2list )
+    .onCommand( feeder2_callback );
 
   //automaton.delay(5000);
   //X_top_step.stop();
@@ -149,16 +235,16 @@ void loop() {
        Serial.println("got OSC");
        // msgIn.route("/blink", test);
        X_top_OSC.onOSC(msgIn);
+       feederOSC(msgIn);
        // Y_top_step.onOSC(msgIn);
        // peristaltic.onOSC(msgIn);
      }
-
-
   }
 
 
 
 
+
   // Serial.print(analogRead(A3));
   // Serial.print("   ");
    // Serial.print(X_top_step.limitState[0]);

+ 25 - 9
blob-CN/main.pd

@@ -1,4 +1,4 @@
-#N canvas 150 402 1743 541 12;
+#N canvas 279 475 1743 541 12;
 #X msg 73 21 disconnect;
 #X obj 72 426 tgl 15 0 empty empty connected 20 7 0 8 -24198 -241291
 -1 1 1;
@@ -34,7 +34,7 @@
 #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;
+-1 -1 1 1;
 #X obj 1007 452 print received;
 #X obj 1235 33 route received total from multicast;
 #X msg 953 52 port 9998;
@@ -50,14 +50,22 @@
 #X obj 536 349 s toOSC;
 #X msg 540 224 /X_top/stop;
 #X msg 553 249 /X_top/emergencyStop;
-#X msg 710 227 /Y_top/move 10000;
 #X msg 721 257 /Y_top/stop;
 #X msg 733 282 /Y_top/emergencyStop;
 #X obj 1159 335 list prepend set;
 #X obj 1159 360 list trim;
-#X msg 1159 385 /X_top/home 0;
-#X msg 530 194 sendtyped /X_top/move i 1000;
-#X msg 563 279 /X_top/homing 0;
+#X msg 1159 385 /feeder2/pill/done 0;
+#X msg 542 157 /X_top/enable 1;
+#X msg 756 101 /feeder2/barrel_home;
+#X msg 746 131 /feeder1/barrel_home;
+#X msg 563 279 /X_top/home 1;
+#X floatatom 770 196 5 0 0 0 - - -;
+#X msg 530 194 sendtyped /X_top/move i \$1;
+#X msg 710 227 /Y_top/move 1000;
+#X msg 531 108 /X_top/SpeedAcc 5000 500;
+#X msg 804 185 /Y_top/SpeedAcc 10000 500;
+#X msg 744 31 /feeder2/pill;
+#X msg 734 61 /feeder1/pill;
 #X connect 0 0 35 0;
 #X connect 2 0 35 0;
 #X connect 3 0 35 0;
@@ -84,7 +92,7 @@
 #X connect 33 0 39 0;
 #X connect 34 0 40 0;
 #X connect 34 1 29 0;
-#X connect 34 1 48 0;
+#X connect 34 1 47 0;
 #X connect 35 0 1 0;
 #X connect 36 0 34 0;
 #X connect 37 0 35 0;
@@ -96,8 +104,16 @@
 #X connect 44 0 42 0;
 #X connect 45 0 42 0;
 #X connect 46 0 42 0;
-#X connect 47 0 42 0;
+#X connect 47 0 48 0;
 #X connect 48 0 49 0;
-#X connect 49 0 50 0;
+#X connect 50 0 42 0;
 #X connect 51 0 42 0;
 #X connect 52 0 42 0;
+#X connect 53 0 42 0;
+#X connect 54 0 55 0;
+#X connect 55 0 42 0;
+#X connect 56 0 42 0;
+#X connect 57 0 42 0;
+#X connect 58 0 42 0;
+#X connect 59 0 42 0;
+#X connect 60 0 42 0;