-1

我试图让我的代码显示来自 Arduino Uno 上的操纵杆的开关输入。

当我在串行监视器上查看它时,我看到移动操纵杆时显示 x 和 y 轴。

当我点击它时,我什么也没有出现。我将开关设置为 Arduino 上的引脚 2。

编译代码时没有错误。

int pin_x = A0; 
int position_x = 0;
int pin_y = A1;
int position_y = 0;
int pin_z = 2; // switch pin
int position_z = LOW;

void setup() {
    Serial.begin(9600);   // initialize serial communications at 9600 bps
    pinMode(pin_x, INPUT);  // set pin mod as INPUT
    pinMode(pin_y, INPUT);
    pinMode(pin_z, INPUT);  // switch pin
}
void read(){
    position_x = analogRead(pin_x);
    position_y = analogRead(pin_y);
    position_z = digitalRead(pin_z);
}
void show(){
Serial.print(" X:");  //print information to Serial Monitor 
Serial.print(position_x);
Serial.print(" Y:");
Serial.print(position_y);
Serial.print(" Z:");
Serial.print(position_z);
}
void loop() {
  read();
  show();
  delay(500); 
}
4

2 回答 2

0

您可以使用多种方法来查找错误,以下是一些建议:

  1. 阅读操纵杆的数据表
  2. 使用万用表检查两个开关引脚的导电性
  3. 将其他东西连接到您的开关输入,检查输入是否正常工作

也就是说,您的代码编写方式希望您的开关引脚连接到 Vcc,检查是否确实如此。

于 2019-10-23T07:30:42.853 回答
0

尝试这个:

void setup() {
   Serial.begin(9600);   // initialize serial communications at 9600 bps
   pinMode(pin_x, INPUT);  // set pin mod as INPUT
   pinMode(pin_y, INPUT);
   pinMode(pin_z, INPUT);  // switch pin
   digitalWrite(pin_z, HIGH);
}

否则代码看起来是正确的。操纵杆上的开关确实是数字的,而其他开关是模拟的,你没看错。

这是一个关于如何使用操纵杆的视频,也许有帮助:https ://www.youtube.com/watch?v=MlDi0vO9Evg

于 2019-10-23T07:53:32.637 回答