Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带Arduino Uno R3开关控制的操纵手柄将不显示开关按下_Arduino_Switch Statement_Arduino Uno_Joystick_Uno - Fatal编程技术网

带Arduino Uno R3开关控制的操纵手柄将不显示开关按下

带Arduino Uno R3开关控制的操纵手柄将不显示开关按下,arduino,switch-statement,arduino-uno,joystick,uno,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

我正试图让我的代码显示来自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); 
}

有几种方法可用于查找错误,以下是一些建议:

  • 阅读操纵杆的数据表
  • 使用万用表检查两个开关针脚的导电性
  • 将其他内容挂接到开关输入,检查输入是否正常工作
  • 也就是说,您编写代码的方式要求您的开关管脚连接到Vcc,请检查是否确实如此。

    尝试以下方法:

    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);
    }
    
    否则代码看起来是正确的。操纵杆上的开关确实是数字的,而其他的是模拟的,你说得对


    这里有一个关于如何使用操纵手柄的视频,可能会有所帮助:

    您是否确保开关工作正常且连接正确?我确实检查过了。开关工作正常,导线连接到正确的引脚。在两种开关状态下,您测量的电压是多少?我在按下并释放开关的情况下测试了导通性,但尚未测试电压。它正在运行的5v引脚。我必须检查电压,看看它的输出是什么