【发布时间】:2019-02-25 20:45:35
【问题描述】:
所以我正在使用两个伺服电机制作一个“炮塔”类型的东西,由一个操纵杆控制。我正在运行的代码可以工作,但是它非常生涩并且移动得不是很好,尤其是在对角线上。我的代码如下:
#include <Servo.h>
#define LASER 11
int x = 0;
Servo servo_1; // create servo object to control a servo
Servo servo_2;
// Arduino pin numbers
const int SW_pin = 2; // digital pin connected to switch output
const int X_pin = 0; // analog pin connected to X output
const int Y_pin = 1; // analog pin connected to Y output
int butt;
int joy_val;
void setup() {
pinMode(SW_pin, INPUT);
digitalWrite(SW_pin, HIGH);
servo_1.attach(9);// attaches the servo on pin 9 to the servo object
servo_2.attach(10);
pinMode(LASER, OUTPUT);
digitalWrite(LASER, HIGH);
Serial.begin(9600);
}
void loop() {
joy_val = analogRead(X_pin); // reads the value of joystick (between 0-1023)
joy_val = map(joy_val, 0, 1023, 0, 180); // servo value between 0-180
servo_1.write(joy_val); // sets the servo position according to the joystick value
delay(150);
joy_val = analogRead(Y_pin); // reads the value of joystick (between 0-1023)
joy_val = map(joy_val, 0, 1023, 0, 180); // servo value between 0-180
servo_2.write(joy_val); // sets the servo position according to the joystick
value
delay(150);
delay(15);
butt = digitalRead(SW_pin);
if (butt == LOW){
x = true;
}
if (x == true){
digitalWrite(LASER, LOW);
Serial.print(x);
}
}
非常感谢任何建议或帮助,我对 arduino 还很陌生 :)
【问题讨论】:
-
首先你有一些延迟。如果删除它们会怎样?
-
您还应该解释一下 Jerky 的含义。我认为这意味着输入被延迟了,但阿德里安的回答是关于消除抖动的操纵杆值读数。