本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1.0 简介
- **发光二极管(LED)**是一种常用的发光器件,通过电子与空穴复合释放能量发光,它在照明、显示等领域应用广泛。
- 当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,氮化镓二极管发蓝光。因化学性质又分有机发光二极管OLED和无机发光二极管LED。==光的三原色是红绿蓝,颜料的三原色是平红黄青==
- 本篇博文将介绍如何使用arduino逐步实现LED控制:有源蜂鸣器伴随点灯,串口点灯,呼吸灯。
发光二极管可高效地将电能转化为光能,在现代社会具有广泛的用途,如照明、平板显示、医疗器件等。发光二极管简称为LED。由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。 这种电子元件早在1962年出现,早期只能发出低光度的红光,之后发展出其他单色光的版本,时至今日能发出的光已遍及可见光、红外线及紫外线,光度也提高到相当的光度。而用途也由初时作为指示灯、显示板等;随着技术的不断进步,发光二极管已被广泛地应用于显示器和照明。
2.0 准备
- 软件:下载arduino的开发环境
- 硬件:arduino uno板一块、数据线一条、杜邦线和220欧电阻(分压保护)若干、红绿蓝三种LED灯珠各一、面包板
3.0 接线图
- 红绿蓝分别接9/10/11pwm引脚,有源蜂鸣器输出接9号中间串一个220欧姆电阻起分压电路,保护LED和控制板,避免过电流烧毁啊😜😜😜
4.0 三个实验的程序
接下来依次展示有源蜂鸣器伴随点灯,串口点灯,呼吸灯三种程序。🤞🤞🤞
4.1 有源蜂鸣器伴随点灯
逻辑思路:红绿蓝初始化,都给低电平,主程序红绿蓝依次交替点亮熄灭
void setup(){ //初始化9/10/11三个端口
pinMode(9, OUTPUT); //9号端口设置为输出
pinMode(10, OUTPUT); //10号端口设置为输出
pinMode(11, OUTPUT); //11号端口设置为输出
digitalWrite(9,LOW); //给9号低电平
digitalWrite(10,LOW); //给10号低电平
digitalWrite(11,LOW); //给11号低电平
}
void loop(){ //主程序
delay(2000); //延时2秒
digitalWrite(9,HIGH); //给9号高电平
digitalWrite(11,LOW); //给11号低电平
delay(2000); //延时2秒
digitalWrite(10,HIGH);//给10号高电平
digitalWrite(9,LOW); //给9号低电平
delay(2000); //延时2秒
digitalWrite(11,HIGH);//给11号高电平
digitalWrite(10,LOW); //给10号低电平
}
演示效果视频如下 [video(video-6UT2qqSu-1612519309650)(type-youku)(url-player.youku.com/embed/XNTA5…)]
4.2串口点灯
逻辑思路:红绿蓝初始化,都给低电平,主程序读取串口赋值字符串“item”,判断为“start”开始进入循环开始红绿蓝依次交替点亮熄灭,判断为“stop”跳出循环,又开始读取串口。。。下面为mixly模块和代码
String item;
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
item = "";
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
void loop(){
if (Serial.available() > 0) {
item = Serial.readString();
Serial.println(item);
if (item == "start") {
while (true) {
item = Serial.readString();
Serial.println(item);
if (item == "stop") {
break;
}
delay(2000);
digitalWrite(9,HIGH);
digitalWrite(11,LOW);
delay(2000);
digitalWrite(10,HIGH);
digitalWrite(9,LOW);
delay(2000);
digitalWrite(11,HIGH);
digitalWrite(10,LOW);
}
}
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
}
}
演示效果视频如下
[video(video-j3i97uuv-1612519597623)(type-youku)(url-player.youku.com/embed/XNTA5…)]
4.3 呼吸灯
逻辑思路:红初始化,给低电平,主程序读取串口赋值字符串“item”,判断为“start”开始进入循环开始红色呼吸灯由暗变亮,再由亮变暗,判断为“stop”跳出循环,又开始读取串口。。。下面为mixly模块和代码
String item;
void setup(){
Serial.begin(9600);
pinMode(9, OUTPUT);
item = "";
digitalWrite(9,LOW);
}
void loop(){
if (Serial.available() > 0) {
item = Serial.readString();
Serial.println(item);
if (item == "start") {
while (true) {
item = Serial.readString();
Serial.println(item);
if (item == "stop") {
break;
}
for (int i = 0; i <= 255; i = i + (1)) {
analogWrite(9,i);
delay(20);
}
for (int i = 255; i >= 0; i = i + (-1)) {
analogWrite(9,i);
delay(20);
}
}
}
digitalWrite(9,LOW);
}
}
演示效果视频如下
[video(video-XZiRzIDE-1612525383566)(type-youku)(url-player.youku.com/embed/XNTA5…)]
5.0 小结
- 逐步通过这个三个小实验,我们可以简单对arduino实现LED和有源蜂鸣器代码控制,串口字符串控制,甚至于呼吸灯。最终实现了上位机与下位机的简单通信,相当于学会使用手进行有意识的简单运动。
- 在以后的博文中我们将学会用arduino==常用传感器和执行器==,从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。