Arduino之呼吸灯

        呼吸灯,就是让灯有一个由亮到暗,再到亮的逐渐变化的过程,感觉像是在均匀的呼吸。实则是通过PWM来控制LED亮度,使其呈现呼吸灯效果。

        Arduino UNO数字引脚中有六个引脚标有“~”,这个符号就说明该口具有PWM功能。

一、呼吸灯

实物图:

参考代码:

int ledPin = 10;

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

void loop(){
    for (int value = 0 ; value < =255; value++)  //控制PWM亮度增加
    {
        analogWrite(ledPin, value);
        delay(10);
    }
    for (int value = 255; value >=0; value--)   //控制PWM亮度减小
    {
        analogWrite(ledPin, value);
        delay(10);
    }
}

二、串口控制LED明暗度

在串口监视器中发送信号a时,LED灯一点点亮,发送信号b时,LED灯更亮一点,发送c时,LED灯达到最亮,发送信号d时,LED灯熄灭。

参考代码:

int ledPin=10;
char key;
int value;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(ledPin,OUTPUT);
  
}

void loop() {
  // put your main code here, to run repeatedly:
  key=Serial.read();
  if(key=='a'){
    value=85;
    analogWrite(ledPin,value);
    Serial.print("key=");
    Serial.println(key);
    Serial.print("value=");
    Serial.println(value);
  }
  if(key=='b'){
    value=170;
    analogWrite(ledPin,value);
    Serial.print("key=");
    Serial.println(key);
    Serial.print("value=");
    Serial.println(value);
  }
  if(key=='c'){
    value=255;
    analogWrite(ledPin,value);
    Serial.print("key=");
    Serial.println(key);
    Serial.print("value=");
    Serial.println(value);
  }
  if(key=='d'){
    value=0;
    analogWrite(ledPin,value); 
    Serial.print("key=");
    Serial.println(key);
    Serial.print("value=");
    Serial.println(value);
  }
}

三、火焰灯

通过PWM使LED产生随机的亮度变化,来模拟一个火焰闪烁的效果。random(0,120)+135,让其值稳定在135附近。

参考代码:

int ledPin1=5;
int ledPin2=10;
int ledPin3=11;
void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin1,OUTPUT);
  pinMode(ledPin2,OUTPUT);
  pinMode(ledPin3,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  analogWrite(ledPin1,random(0,120)+135);
  analogWrite(ledPin2,random(0,120)+135);
  analogWrite(ledPin3,random(0,120)+135);
}

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值