簡體   English   中英

使用簧片開關將 RGB 燈從黃色變為紅色

[英]Fading RGB light from yellow to red using reed switch

我對 arduino 編碼還很陌生,非常感謝您的幫助!

我最近用簧片開關和一個簡單的 LED 燈制作了一個電路,一旦它離開磁場,它就會慢慢熄滅,一旦接近磁場就會再次亮起。 對於我的項目,我需要 LED 在靠近磁場時發出恆定的黃光,但一旦它被帶走,光就必須逐漸變為紅光,並且一般同時淡出時間。

所以簡單地說:

  • 簧片開關“閉合”= 常亮黃燈
  • 簧片開關“打開”= 漸變為紅燈並同時漸暗

波紋管是我已經擁有的簡單 LED 和簧片開關的代碼。

`

int ledPin = 9;
int reedPin = 2;

int brightness = 0;
int fadeAmount = 5;
unsigned long timestamp = 0;

void setup(){
    pinMode(ledPin, OUTPUT);
    pinMode(reedPin, INPUT_PULLUP);
}

void loop(){
    if(millis()-timestamp > 30){
        brightness = brightness - fadeAmount;
        if(brightness < 0) brightness = 0;
        timestamp = millis();
    }

    if(!digitalRead(reedPin)){
        brightness = 255;
    }

    analogWrite(ledPin, brightness);
}

//different code begins here

int rVal = 254;
int gVal = 1;
int bVal = 127;

int rDir = -1;
int gDir = 1;
int bDir = -1;

const int rPin = 11;
const int gPin = 10;
const int bPin = 9;

void setup() {
  pinMode(rPin, OUTPUT);
  pinMode(gPin, OUTPUT);
  pinMode(bPin, OUTPUT);
}

void loop() {

  analogWrite(rPin, rVal);
  analogWrite(gPin, gVal);
  analogWrite(bPin, bVal);

  // change the values of the LEDs
  rVal = rVal + rDir;
  gVal = gVal + gDir;
  bVal = bVal + bDir;

  if (rVal >= 255 || rVal <= 0) {
    rDir = rDir * -1;
  }

  if (gVal >= 255 || gVal <= 0) {
    gDir = gDir * -1;
  }

  if (bVal >= 255 || bVal <= 0) {
    bDir = bDir * -1;
  }

  delay(33);
}
}

`

底部是使 RGB LED 淡入淡出不同顏色的代碼,但我需要將它從黃色變為紅色到 go。 我怎么能那樣做? 以及如何將 RGB 燈代碼合並到簧片開關代碼中?

您可以通過相同級別的綠色和紅色發射器獲得黃色。

為了淡化為紅色,您需要將綠色發射器減少到 0。這當然也會降低整體亮度。

一旦你淡出綠色,你就可以將紅色淡化為 0。

當然,您也可以同時淡出兩個 LED。 更快地淡化綠色分量也會將顏色移向紅色。

這是個人喜好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM