用Arduino不会点亮LED

时间:2016-07-12 17:16:37

标签: arduino-uno

这是我在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是好的。我无法真正了解面包板(如果可能的话,我甚至不确定如何发布)。因此,如果您在代码中发现任何问题,请告诉我(以及如何解决它们)。但如果你不能,那么我就会知道他的问题在于面包板本身,或者是我接线的方式。提前谢谢!

1 个答案:

答案 0 :(得分:1)

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

  1. 您正在使用Serial,虽然您需要 pin 1作为您的带状地带。您无法同时使用两种方法:引脚用于串行接口(默认使用引脚0和{{1} }},或者你使用 led 的引脚。尝试做这两件事可能会损坏您的组件和/或您的设备。 因此,您应该删除所有引用串行接口的代码。

  2. 您没有将任何 pin 设置为1状态,这意味着如果数字在一个循环中等于LOW在那之后,每个引脚将永远在1023。您应该在循环开始时将每个引脚设置回HIGH,或者为每个LOW条件添加 else 分支。

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