LED 不会用 Arduino 点亮

LED's won't light up with Arduino

这是我在 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 灯亮起,电位计的 return 值越高,点亮的 LED 灯就越多。我知道电位器工作正常,因为它正在将值打印到串行 window。而且我几乎可以肯定我的接线就在面包板上。所以基本上我来这里是为了验证代码是否正确。我真的无法很好地了解面包板(如果可以的话,我什至不确定如何 post 它)。因此,如果您在代码中发现任何问题,请告诉我(以及如何解决这些问题)。但如果你不能,那么我就会知道他的问题出在面包板本身,或者我的接线方式。提前致谢!

我发现您的代码存在两个主要问题:

  1. 您正在使用 Serial,尽管您为 LED 灯条预留了 pin 1。您不能同时使用两种方法:要么将 pin 用于 Serial 接口(默认情况下,使用引脚 01),或者您使用 led 的引脚。尝试同时执行这两项操作可能会损坏您的组件 and/or 您的设备。 因此,您应该删除所有引用串行接口的代码。

  2. 你没有设置任何pinLOW状态,也就是说如果number是在一个循环中等于 1023,在那一刻之后,每个引脚将永远处于 HIGH 状态。您应该在循环开始时将每个引脚设置回 LOW,或者为每个 if 条件添加一个 else 分支。

除此之外,由于您使用了这么多引脚,因此我建议您检查设备吸收的电流是否不超过 Arduinocurrent limitations,因为你可能会损坏你的电路板。