|
@@ -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]);
|