-2

我的 Arduino 代码和电路有问题。目标是让每个 LED 一个接一个地褪色。这没有正确发生。有些 LED 会适当地上下淡化,然后有些会闪烁。我一直在尝试进行故障排除,这是我已经完成但尚未解决的问题。

  1. 使用了不同的电路板
  2. 交换 LED
  3. 使用不同的电阻
  4. 将闪烁的引脚交换为褪色的引脚,并且闪烁将逐渐消失
  5. 将电路移至不同的面包板
  6. 检查代码是否通过串行监视器发送正确的亮度级别

这是我的板子的图片 图为我的电路

这是代码:

const int BUTTON = 2; // Naming switch button pin
const int LED1 = 3;   // Namin LED pin
const int LED2 = 4;
const int LED3 = 5;
const int LED4 = 6;
const int LED5 = 7;
const int LED6 = 8;
const int LED7 =9;
const int LED8 = 10;
const int LED9 = 11;

int BUTTONstate = 0; // A variable to store Button Status / Input


int brightness = 0;
int fadeAmount =5;

void setup(){ 
   pinMode(LED1, OUTPUT);
   pinMode(LED2, OUTPUT);
   pinMode(LED3, OUTPUT);
   pinMode(LED4, OUTPUT);
   pinMode(LED5, OUTPUT);
   pinMode(LED6, OUTPUT);
   pinMode(LED7, OUTPUT);
   pinMode(LED8, OUTPUT);
   pinMode(LED9, OUTPUT);
   

   pinMode (BUTTON, INPUT);
   Serial.begin(9600);
}

void loop() {
   BUTTONstate = digitalRead(BUTTON);  // Reading button status / input
   if (BUTTONstate == HIGH)  // Condition to check button input
   {
      FlashingLight();
  
   }
   else
   {
      digitalWrite(LED1, LOW);
      digitalWrite(LED2, LOW);
      digitalWrite(LED3, LOW);
      digitalWrite(LED4, LOW);
      digitalWrite(LED5, LOW);
      digitalWrite(LED6, LOW);
      digitalWrite(LED7, LOW);
      digitalWrite(LED8, LOW);
      digitalWrite(LED9, LOW);
      
  
   }
}
void FlashingLight()
{ 
  
  for ( int i = 0; i<=4;i++){
      
      //digitalWrite(LED, LOW);
    
    fading(LED1);  //Fades
    fading(LED2);  // blinks
    fading(LED3);  //fades
    fading(LED4);  //fades
    fading(LED5);  //blinks
    fading(LED6);  //blinks
    fading(LED7);  //fades
    fading(LED8);  //fades
    fading(LED9);  //fades

    delay(1000);
  }
}

void fading(int val) {
//brightness =0;
//digitalWrite(LED, LOW);
    analogWrite(val,brightness);
    for (brightness = 0; brightness <= 150; brightness += 5) {
      analogWrite(val,brightness);
  
      delay(30);
      Serial.println(brightness);
  
    }
    for (brightness = 150; brightness >= 0; brightness -= 5) {
    analogWrite(val,brightness);
  
    delay(30);
    Serial.println(brightness);
 
    }
    delay(100);
    //brightness =0;

}

感谢您的帮助,如果您有任何问题,请告诉我,

4

1 回答 1

0

根据这个 Arduino.cc 参考,并非 Arduino Nano 的所有引脚都适用于 PWM 控制(使用analogWrite())。在 Nano 上,只有引脚3, 5, 6, 9, 10, 11可用于输出 PWM 信号。

于 2022-01-17T12:49:26.183 回答