【发布时间】:2018-05-25 23:40:53
【问题描述】:
我有一个包含 4 个运动方向的游戏(上下左右) 使用 Arduino Nano 和模拟操纵杆,看起来代码在其他帖子之前是正确的。
这是 Arduino 代码:
byte x_axis = A3;
byte y_axis = A1;
byte btn1 = 8;
byte btn2 = 9;
byte btn3 = 10;
byte btn4 = 11;
byte btn5 = 12;
byte led = 13;
void setup(){
pinMode(x_axis, INPUT);
pinMode(y_axis, INPUT);
pinMode(btn1, INPUT);
pinMode(btn2, INPUT);
pinMode(btn3, INPUT);
pinMode(btn4, INPUT);
pinMode(btn5, INPUT);
digitalWrite(btn1, HIGH);
digitalWrite(btn2, HIGH);
digitalWrite(btn3, HIGH);
digitalWrite(btn4, HIGH);
digitalWrite(btn5, HIGH);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
Serial.begin(9600);
}
void loop(){
Int read_x = analogRead(x_axis);
int read_y = analogRead(y_axis);
if(read_x > 600){
Serial.println("R");
digitalWrite(led, HIGH);
}
if(read_x < 400){
Serial.println("L");
digitalWrite(led, HIGH);
}
if(read_y > 600){
Serial.println("D");
digitalWrite(led, HIGH);
}
if(read_y < 400){
Serial.println("U");
digitalWrite(led, HIGH);
}
if(digitalRead(btn1) == LOW){
Serial.println("1");
digitalWrite(led, HIGH);
}
if(digitalRead(btn2) == LOW){
Serial.println("2");
digitalWrite(led, HIGH);
}
if(digitalRead(btn3) == LOW){
Serial.println("3");
digitalWrite(led, HIGH);
}
if(digitalRead(btn4) == LOW){
Serial.println("4");
digitalWrite(led, HIGH);
}
if(digitalRead(btn5) == LOW){
Serial.println("5");
digitalWrite(led, HIGH);
}
delay(10);
digitalWrite(led, LOW);
}
但是当我使用串口监视器检查它时,它不停地显示U和L,即使没有触摸操纵杆。p>
我该如何解决这个问题?
【问题讨论】:
-
修复你的电路。
-
要修复您的电路,直接打印出在两个轴上读取的值会有所帮助。从那里,您将能够判断您的电路是否错误,或者您选择的值是否关闭。
-
我只尝试了没有任何电路的 Arduino,但它仍然显示随机值
-
@Emadmohseny 这是意料之中的。如果您没有连接任何东西,模拟输入的值将是由于存在任何噪声和随机波动。如果不连接输入,您将无法获得任何有意义的信息。
标签: arduino