这是我在Arduino中的代码:
int blue1 = 1;
int blue2 = 2;
int blue3 = 3;
int blue4 = 4;
int yell1 = 5;
int yell2 = 6;
int yell3 = 7;
int yell4 = 8;
int red1 = 9;
int red2 = 10;
int red3 = 11;
int red4 = 12;
int knob = A0;
void setup() {
pinMode(blue1,OUTPUT);
pinMode(blue2,OUTPUT);
pinMode(blue3,OUTPUT);
pinMode(blue4,OUTPUT);
pinMode(yell1,OUTPUT);
pinMode(yell2,OUTPUT);
pinMode(yell3,OUTPUT);
pinMode(yell4,OUTPUT);
pinMode(red1,OUTPUT);
pinMode(red2,OUTPUT);
pinMode(red3,OUTPUT);
pinMode(red4,OUTPUT);
pinMode(13,OUTPUT);
pinMode(knob,INPUT); //Value from potentiometer
Serial.begin(9600);
}
void loop() {
delay(250);
digitalWrite(13,HIGH);
delay(250);
digitalWrite(13,LOW);
int number = analogRead(knob); //'number' is return from potentiometer
Serial.println(number);
digitalWrite(blue1,HIGH);
if(number > 85) {
digitalWrite(blue1,HIGH);
}
if(number > 170) {
digitalWrite(blue2,HIGH);
}
if(number > 255) {
digitalWrite(blue3,HIGH);
}
if(number > 340) {
digitalWrite(blue4,HIGH);
}
if(number > 425) {
digitalWrite(yell1,HIGH);
}
if(number > 510) {
digitalWrite(yell2,HIGH);
}
if(number > 595) {
digitalWrite(yell3,HIGH);
}
if(number > 680) {
digitalWrite(yell4,HIGH);
}
if(number > 765) {
digitalWrite(red1,HIGH);
}
if(number > 850) {
digitalWrite(red2,HIGH);
}
if(number > 935) {
digitalWrite(red3,HIGH);
}
if(number == 1023) {
digitalWrite(red4,HIGH);
}
}
目标是让LED指示灯亮起,电位计的返回值越高,LED指示灯越亮。我知道电位器工作正常,因为它打印到串行窗口的值。而且我几乎可以肯定我的面包板上有接线。所以基本上我在这里验证CODE是好的。我无法真正了解面包板(如果可能的话,我甚至不确定如何发布)。因此,如果您在代码中发现任何问题,请告诉我(以及如何解决它们)。但如果你不能,那么我就会知道他的问题在于面包板本身,或者是我接线的方式。提前谢谢!
答案 0 :(得分:1)
我发现您的代码存在两个主要问题:
您正在使用Serial
,虽然您需要 pin 1
作为您的带状地带。您无法同时使用两种方法:引脚用于串行接口(默认使用引脚0
和{{1} }},或者你使用 led 的引脚。尝试做这两件事可能会损坏您的组件和/或您的设备。 因此,您应该删除所有引用串行接口的代码。
您没有将任何 pin 设置为1
状态,这意味着如果数字在一个循环中等于LOW
在那之后,每个引脚将永远在1023
。您应该在循环开始时将每个引脚设置回HIGH
,或者为每个LOW
条件添加 else 分支。
除此之外,由于您使用了这么多针脚,我建议您检查设备吸收的电流是否超过 Arduino current limitations ,因为你可能会损坏你的电路板。