Arduino与加工控制伺服

Arduino与加工控制伺服,arduino,processing,servo,Arduino,Processing,Servo,我试图控制伺服使用处理 基本上,我想要的是在加工过程中按下一个按钮,使伺服从0到180度,每两秒钟返回一次,如果我在加工过程中按下另一个按钮,我应该能够使用电位计移动伺服,但是我无法使其正常工作 例如,当我按下POT按钮时,伺服会转到所需的位置,但是如果我移动电位计,除非我再次单击POT按钮,否则伺服不会移动 这是Arduino的相关代码: 空循环() { if(Serial.available()){ val=Serial.read(); while(val==1){ 数字写入(ledCP

我试图控制伺服使用处理

基本上,我想要的是在加工过程中按下一个按钮,使伺服从0到180度,每两秒钟返回一次,如果我在加工过程中按下另一个按钮,我应该能够使用电位计移动伺服,但是我无法使其正常工作

例如,当我按下POT按钮时,伺服会转到所需的位置,但是如果我移动电位计,除非我再次单击POT按钮,否则伺服不会移动

这是Arduino的相关代码:


空循环()
{
if(Serial.available()){
val=Serial.read();
while(val==1){
数字写入(ledCPM,高);
数字写入(ledPot,低电平);
数字写入(ledFSR,低电平);
运动();
val=Serial.read();
} 
while(val==2){
数字写入(ledPot,高);
数字写入(ledCPM,低电平);
数字写入(ledFSR,低电平);
运动();
val=Serial.read();
}
while(val==3){
数字写入(ledPot,低电平);
数字写入(ledCPM,低电平);
数字写入(ledFSR,高);
fsrMovement();
val=Serial.read();
}
}
}
void cpm movement(){unsigned long currentMillis=millis();
if(当前毫秒-先前毫秒>间隔){
前一毫秒=当前毫秒;
如果(位置伺服==0){
位置伺服=179;
myservo1.写入(位置伺服);
}
否则{
位置伺服=0;
myservo1.写入(位置伺服);
}
}
}
无效移动(){
int analogValuePot=analogRead(Pot)/4;
串行打印(“电位计读数=”);
Serial.println(analogValuePot);//这将打印原始力值
int valuePot=map(analogValuePot,0,255,0,179);//将其缩放以与伺服一起使用(值介于0和180之间)
myservo1.write(valuePot);//根据缩放值设置伺服位置
延迟(10);//等待伺服到达那里
}
无效移动(){
force=analogRead(FSR);//读取FSR
串行打印(“力传感器读数=”);
Serial.println(force);//这将打印原始力值
int pos=map(力,0,1023,0,175);//为伺服控制将力读数缩放为度
串行打印(“伺服电机度数=”);
Serial.println(pos);//这将打印调整后的伺服读数(角度)
myservo1.write(pos);//将新角度写入伺服
延迟(150);//在进行另一次读取之前延迟150毫秒
}