Mixly-呼吸灯及可调灯
实验需求:
硬件:Arduino、LED灯、按钮
软件:Mixly IDE
要求:
1.使用函数方法实现呼吸灯功能。
2.使用中断或其他方式实现可调灯功能。
呼吸灯:
灯光在微电脑控制之下完成由暗到亮再由亮到暗的逐渐变化,感觉像是在呼吸,所以称为呼吸灯。呼吸灯广泛应用于手机、无线路由器之上,如你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。
首先,我们需要了解一个知识点,pwm知识点,呼吸灯得实验原理就是利用了他。
PWM基础知识:
脉宽调制输出:它是一种对模拟信号电平进行数字编码的方法,简单来说就是通过一个时钟周期内高低电平的不同占空比来表征模拟信号。而在Arduino中的PWM的取值范围是0-255,数字引脚标有“~”的才可以输出PWM信号
代码:
void fadeOff(int time) {
for (int i = 255; i >= 0; i = i + (-5)) {
analogWrite(9,i);
delay((time / (255 / 5)));
}
}
void fadeOn(int time) {
for (int i = 0; i <= 255; i = i + (5)) {
analogWrite(9,i);
delay((time / (255 / 5)));
}
}
void setup(){
}
void loop(){
fadeOn(2000);
fadeOff(2000);
}
图形化:
实验效果视频链接:
https://www.bilibili.com/video/av73654416/
5档可调控灯:
从0到5档的不同亮度的变化,1档为51亮度,2档为512,3档为513,4档为51*4,5档为255,然后再按的话就会恢复为0.
代码:
volatile int brightness;
volatile int state;
void setup(){
brightness = 0;
state = 0;
pinMode(2, INPUT_PULLUP);
Serial.begin(9600);
}
void loop(){
state = digitalRead(2);
delay(190);
if (state == 0) {
brightness = (long) ((brightness + 1)) % (long) (6);
Serial.print(state);
Serial.println(brightness);
}
analogWrite(9,(brightness * 51));
}
图形化:
实验效果视频链接:
https://www.bilibili.com/video/av73654659/