Bill's Protocol Pendulum Plot
Added force-out to pendulum
This commit is contained in:
parent
f6fcb48859
commit
fc8f353064
69
software/apps/Motion/ProtocolBVmotor/ProtocolBVmotor.ino
Normal file
69
software/apps/Motion/ProtocolBVmotor/ProtocolBVmotor.ino
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#include <Motion.h>
|
||||||
|
#include <Motor.h>
|
||||||
|
|
||||||
|
char buf[16] = "";
|
||||||
|
|
||||||
|
char b = 'x';
|
||||||
|
String inputString = "";
|
||||||
|
boolean stringComplete = false;
|
||||||
|
|
||||||
|
float k, m, d;
|
||||||
|
int duty;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
MotionA.init(INPUTA0);
|
||||||
|
|
||||||
|
MotionA.k = 0.2f; // spring
|
||||||
|
MotionA.m = 1.0f; // mass
|
||||||
|
MotionA.d = 0.02f; // damping
|
||||||
|
|
||||||
|
Serial.begin(9600);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
//send force out
|
||||||
|
if (MotionA.F > 0) MotorA.direction(FORWARD);
|
||||||
|
else MotorA.direction(BACKWARD);
|
||||||
|
duty = abs(MotionA.F);
|
||||||
|
duty = min(512,duty);
|
||||||
|
MotorA.torque(duty);
|
||||||
|
|
||||||
|
//send data to be plotted by Processing "plotter"
|
||||||
|
sprintf(buf, "%d %d %d %d", (int)MotionA.F, (int)MotionA.A, (int)MotionA.V, (int)MotionA.X);
|
||||||
|
Serial.println(buf);
|
||||||
|
|
||||||
|
delay(10);
|
||||||
|
|
||||||
|
if(stringComplete) {
|
||||||
|
if(b == 'k') {
|
||||||
|
MotionA.k = convertToFloat(inputString);
|
||||||
|
} else if(b == 'm') {
|
||||||
|
MotionA.m = convertToFloat(inputString);
|
||||||
|
} else if(b == 'd') {
|
||||||
|
MotionA.d = convertToFloat(inputString);
|
||||||
|
}
|
||||||
|
b = 'x';
|
||||||
|
stringComplete = false;
|
||||||
|
inputString = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void serialEvent() {
|
||||||
|
while (Serial.available()) {
|
||||||
|
char inChar = (char)Serial.read();
|
||||||
|
if(inChar == 'k' || inChar == 'm' || inChar == 'd') {
|
||||||
|
b = inChar;
|
||||||
|
} else {
|
||||||
|
if (inChar == ';') {
|
||||||
|
stringComplete = true;
|
||||||
|
} else
|
||||||
|
inputString += inChar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float convertToFloat(String str) {
|
||||||
|
char buf[16] = "";
|
||||||
|
str.toCharArray(buf, str.length() + 1);
|
||||||
|
return atof(buf);
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user