带有用于Arduino Uno R3的开关控制的操纵杆将不会显示开关推动

时间:2019-10-23 02:04:14

标签: arduino switch-statement arduino-uno joystick uno

我正在尝试获取代码,以显示来自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); 
}

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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