LED 呼吸燈, 這篇是  Arduino Blink 的延伸應用.

硬體很簡單就是直接在NANO上插一個LED, 短的街GND, 長的接D6.

請參考一下我的短影音 https://youtube.com/shorts/WHD2Do11J-I?si=wXeUiHkHly3KukYL

執行步驟

1. 準備好硬體, 插上LED.

 

2. 寫一個Blink程式, 1秒亮, 1秒暗, 會的請直接跳過.

void setup() 
{
  pinMode(6, OUTPUT);
}
void loop() 
{
    digitalWrite(6, HIGH);
    delay(1000);
    digitalWrite(6, LOW);
    delay(1000);
}

 

3. 加速10倍, 1/10秒亮, 1/10秒暗, 會的請直接跳過.

 這時LED閃爍加劇.

void setup() 
{
  pinMode(6, OUTPUT);
}
void loop() 
{
    digitalWrite(6, HIGH);
    delay(100);
    digitalWrite(6, LOW);
    delay(100);
}

 

4. 加速1000倍, 1毫秒亮, 1毫秒暗, 會的請直接跳過.

這時LED的閃爍, 眼睛已無法辨識(殘影效應), 變成恆亮.

void setup() 
{
  pinMode(6, OUTPUT);
}
void loop() 
{
    digitalWrite(6, HIGH);
    delay(1);
    digitalWrite(6, LOW);
    delay(1);
}

 

5. 再把delay(1); 切出1000個刻度, 就是換成 delayMicroseconds(1000); 就行了.

解釋一下指令

delay(1); // 延遲1毫秒, 0.001秒

delayMicroseconds(1); // 延遲1微秒, 0.000001秒

亮: 1微秒

暗:1999微秒

就是亮度最小時

void setup() 
{
  pinMode(6, OUTPUT);
}
void loop() 
{
    digitalWrite(6, HIGH);
    delayMicroseconds(1);
    digitalWrite(6, LOW);
    delayMicroseconds(1999);
}

亮: 1999微秒

暗:1微秒

就是亮度最大時

void setup() 
{
  pinMode(6, OUTPUT);
}
void loop() 
{
    digitalWrite(6, HIGH);
    delayMicroseconds(1999);
    digitalWrite(6, LOW);
    delayMicroseconds(1);
}

 

6. 最後讓延遲數值動起來就行了

int BlinkVal = 1000;
void setup() 
{
  pinMode(6, OUTPUT);
}
void loop() 
{
  // 漸亮
  for(int i=0;i<2000;i++)
  {
    digitalWrite(6, HIGH);
    delayMicroseconds(i);
    digitalWrite(6, LOW);
    delayMicroseconds(2000-i);
  } 
  // 漸暗
  for(int i=0;i<2000;i++)
  {
    digitalWrite(6, HIGH);
    delayMicroseconds(2000-i);
    digitalWrite(6, LOW);
    delayMicroseconds(i);
  } 
  
  delay(500); // 延遲一下方便觀察, 無關LED亮暗.
}

 

本作品已獲得CC BY-NC-ND 4.0許可 透過 P LED 呼吸燈LED 呼吸燈

 

arrow
arrow

    30sec 發表在 痞客邦 留言(0) 人氣()