首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让RGB LED变得更亮?

让RGB LED变得更亮?
EN

Stack Overflow用户
提问于 2021-04-07 23:20:06
回答 2查看 27关注 0票数 0

我一直在尝试制作一个红绿灯模拟器,但在使一个RGB灯亮起来(在代码中用(颜色)Pin2表示)时遇到了麻烦。第一个灯光工作正常,但左侧的RGB不能正常工作。我成功地在白光时使它变亮,但当我试图使它变黄时,光是如此暗淡,我几乎看不见它。它是正确连接的,所以我认为代码中可能有错误。如果有人需要https://www.tinkercad.com/things/g0UkhvSKylW-copy-of-traffic-light-with-pedestrian-crossing,这里是该项目的链接

(对于混乱的代码,我也很抱歉,我还不太习惯arduinos,所以我知道代码不是很好)

代码语言:javascript
复制
int redLight = 13;
int yellowLight = 12;
int greenLight = 11;
int redLight2 = 10;
int yellowLight2 = 9;
int greenLight2 = 8;
int redPin = 7;
int bluePin = 6;
int greenPin = 5;
int redPin2 = 4;
int bluePin2 = 3;
int greenPin2 = 2;

void setup() {
  pinMode(redLight, OUTPUT);
  pinMode(yellowLight, OUTPUT);
  pinMode(greenLight, OUTPUT);
  pinMode(redLight2, OUTPUT);
  pinMode(yellowLight2, OUTPUT);
  pinMode(greenLight2, OUTPUT);
  pinMode(redPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  pinMode(greenPin, OUTPUT);
}

void loop() {
  //Note: leftmost traffic light is used for refrence
  //all other lights are based on each others timing
  while(digitalRead(redLight) ==HIGH){
    redLightOn();
    break;
  }
  while(digitalRead(greenLight) == HIGH){
   //pedestrian light is white
    digitalWrite(redPin, 255);
    digitalWrite(greenPin, 255);
    digitalWrite(bluePin, 255);
    //pedestrian light is off
    digitalWrite(redLight2, HIGH);
    delay(6000);
    digitalWrite(bluePin, 0);//make sure to turn blue pin off!
    digitalWrite(redPin, 255);
    digitalWrite(greenPin, 40);
    delay(1000);
    digitalWrite(redPin, 0);
    digitalWrite(greenPin, 0);
    delay(500);
    digitalWrite(redPin, 255);
    digitalWrite(greenPin, 40);
    delay(1000);
    digitalWrite(redPin, 0);
    digitalWrite(greenPin, 0);
    delay(500);
    digitalWrite(redPin, 255);
    digitalWrite(greenPin, 40);
    delay(1000);
    digitalWrite(greenLight, LOW);
    digitalWrite(redPin, 0);
    digitalWrite(greenPin, 0);
    digitalWrite(bluePin, 0);
    digitalWrite(yellowLight, HIGH);
    //pedestrial light flashing
    digitalWrite(redPin, 255);
    digitalWrite(greenPin, 40);

  delay(5000);
    //yellow light changes to red
    digitalWrite(yellowLight, LOW);
    digitalWrite(redLight, HIGH);
  }

//Initial starting light: starts off red
  digitalWrite(redLight, HIGH);
}
//create an initial red light function
void redLightOn(){
    digitalWrite(redLight2, LOW);
    digitalWrite(greenLight2, HIGH);
    digitalWrite(redPin2, 255);
    digitalWrite(greenPin2, 255);
    digitalWrite(bluePin2, 255);
    //pedestrian light on white
    digitalWrite(redPin, 255);
    digitalWrite(greenPin, 40);
    //pedestrian light is off
    delay(6000);
    digitalWrite(bluePin2, 0);//make sure to turn blue pin off!
    digitalWrite(redPin2, 255);
    digitalWrite(greenPin2, 255);
    delay(1000);
    digitalWrite(redPin2, 0);
    digitalWrite(greenPin2, 0);
    delay(500);
    pYellow();
    delay(1000);
    digitalWrite(redPin2, 0);
    digitalWrite(greenPin2, 0);
    delay(500);
    pYellow();
    delay(1000);
    digitalWrite(greenLight, LOW);
    //digitalWrite(redPin, 0);
    //digitalWrite(greenPin, 0);
    //digitalWrite(bluePin, 0);
    digitalWrite(greenLight, LOW);

    //pedestrial light off
  
    digitalWrite(greenLight2, LOW);
    digitalWrite(yellowLight2, HIGH);
    delay(5000);
    digitalWrite(yellowLight2, LOW);
    digitalWrite(redLight, LOW);
    digitalWrite(greenLight, HIGH);
}

void pYellow(){
    digitalWrite(redPin2, 255);
    digitalWrite(greenPin2, 40);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-07 23:37:47

你似乎把digitalWrite和analogWrite搞混了。digitalWrite函数接受引脚编号和高位或低位。在undefined中传递一个整数值。我猜测0的整数将被关闭,而其他任何值都将被打开。

看起来您想要将引脚设置为模拟引脚,然后使用analogWrite更新它们。使用此命令,您可以使用值0- 255设置0- 5v之间的任何电压电平。

此外,检查其代码或硬件的一个好方法是简单地将LED的黄色引脚连接到5V电源线,看看它变得有多亮。最后,你有没有一个共同的LED下拉电阻,或者你有每个颜色的独立电阻?如果是这样的话,可能其中一个值是错误的,或者你在黄线上的某个地方有一个不可靠的连接。

票数 1
EN

Stack Overflow用户

发布于 2021-04-07 23:32:57

我看不出你的代码有什么问题。实际上,这不是一个软件问题,而是一个物理问题。如果您测量LED支脚之间的电压,您可能会看到该电压根据您的代码而变化。问题是,亮度是你用眼睛测量的东西。有一些情况,比如你从同一家供应商购买了不同颜色的LEDS,但灯泡看起来不同。

如果你想在所有颜色中获得均匀的亮度,你可以尝试从代码中使较浅的颜色变暗,或者尝试在腿上使用不同的值电阻。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66989112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档