SDFZ机器人社活动记录之①arduino Uno开发板IDE编程控灯基础【闪烁&渐变&颜色遍历】【接线图&代码】

写在前面

金秋九月,又是一年开学季,SDFZ机器人社也迎来了偷♂税开学第一课。升入高二,原本过着无忧无虑、有人带领的高一社团生活的小编M;H;终于要和其他两位社团负责人独当一面,独立管理社团事务了。作为社团的讲解担当【伪】,M;H;的紧迫感也是日渐增强。所谓“当你的才能不足以支持你的野心时,就应该静下心来好好学习”,M;H;决定本学期努力学习足以支持社团活动的各项技能,并尝试将学习记录写成博客。关于这样做的原因,首先是留下学习记录方便自己日后温故知新以及查漏补缺,其次是方便社员自学时查看,最后就是可以为其他像我们一样想要自学的萌新同胞们提供一点帮助【虽然不太可能……2333】

P.S.:本博客仅为社团活动记录,内容仅供参考,如果有什么写得不专业、不正确的地方,还请各位大佬多多指正,这里将不胜感激。如果想深入学习arduino,建议登陆W3Cschool编程学院https://www.w3cschool.cn/arduino/进行学习。

那么☆让我们开始愉快的学wan习shua吧233【误】!

【本期学习的三个实战项目组件需求及面包板接线图均相同,LED闪烁接开发板2、4、7数字引脚,渐变以及颜色遍历均接9、10、11模拟引脚。】

组件需求:Arduino Uno开发板*1;全彩LED*1;330Ω电阻*3;面包板*1;杜邦线若干。

接线图如下:

(frizing画的接线图出了点小问题……小编正在尽快修复中)

P1:数字引脚

P2:模拟引脚

P3-5:模拟引脚实物图

接线图

引脚

面包板

 

LED闪烁(MCU的“Hello World”)

目标效果:控制全彩LED实现单色闪烁。

思路引导:digitalWrite数字输出—当使用引脚作为OUTPUT时,可以将其命令为HIGH(输出5伏)或LOW(输出0伏)。

代码如下:(代码说明都写在注释里了,后面的程序同理)

void setup() {//使用void声明setup函数。
pinMode(2,OUTPUT);//使用2号引脚进行输出。
}

void loop() {
 digitalWrite(2,HIGH);//2号引脚输出为5V。
 delay(1000);//延时1s。
 digitalWrite(2,LOW);//2号引脚输出为0V。
 delay(1000);//延时1s。
}}//写在loop函数中的程序会循环运行。

LED渐变(呼吸灯)

目标效果:控制LED实现渐亮渐暗效果。

思路引导:AnalogWrite模拟输出使用脉冲宽度调制(PWM),以开和关之间的不同比率非常快速地打开和关闭数字引脚,以产生渐变效应。

代码如下:

int brightness;//声明整型变量“亮度”。
void setup() {
//控制LED渐变效果应使用模拟引脚。
  pinMode(9,OUTPUT);//引脚配置函数格式为"pinMode(引脚编号,输入/输出)"
}

void loop() { 
brightness = 0;
for(brightness=0;brightness<=255;brightness=brightness+5){ 
  analogWrite(9,brightness);//模拟输出函数格式为“analogWrite(引脚编号,赋值)”
  delay(50);//延时50ms
}//for循环语句格式为"for(变量初始值;变量范围;运算方式){...}"

//渐亮完毕,渐暗程序与渐亮同理。
for(brightness=255;brightness>=0;brightness=brightness-5){
  analogWrite(9,brightness);
  delay(50);
}
}

利用以上两个基础程序,我们就可以发挥自己的想象力对它们进行重复与组合等操作,可能会创造出意想不到的控灯效果。我们不妨来看看下面这个难度不高的变式↓↓

全彩LED颜色遍历

目标效果:控制全彩LED渐亮,遍历所有颜色后渐暗。

思路引导:AnalogWrite模拟输出使用脉冲宽度调制(PWM),以开和关之间的不同比率非常快速地打开和关闭数字引脚,以产生渐变效应。想要达到颜色遍历效果,我们不妨从基础的单色渐变出发,先使某一颜色达到最大值,再混合其余两种颜色,然后再按照同样的顺序分别将三原色光淡化到最小值,从而遍历所有颜色。

代码如下:

int brightness;
void setup() {
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(11,OUTPUT);
}

void loop() { 
brightness = 0;
for(brightness=0;brightness<=255;brightness=brightness+5){ 
  analogWrite(9,brightness);
  delay(50);
}
for(brightness=0;brightness<=255;brightness=brightness+5){ 
  analogWrite(10,brightness);
  delay(50);
}//10、11号引脚与9号同理。
for(brightness=0;brightness<=255;brightness=brightness+5){ 
  analogWrite(11,brightness);
  delay(50);
}
//三原色渐亮完毕,渐灭程序与渐亮同理。
for(brightness=255;brightness>=0;brightness=brightness-5){
  analogWrite(9,brightness);
  delay(50);
}
for(brightness=255;brightness>=0;brightness=brightness-5){
  analogWrite(10,brightness);
  delay(50);
}
for(brightness=255;brightness>=0;brightness=brightness-5){
  analogWrite(11,brightness);
  delay(50);
}

}

本期SDFZ机器人社活动记录就到此为止啦,你学会了吗?qwq

衷心希望各位读者可以从M;H;的博客中有所收获,终成大佬!共勉☆~

【M;H;小编吐槽:是第一次写博客,一激动好像写的太多了,而且都是最最基础的东西QWQ……随着学习的进展,活动记录也一定会有所丰富和深入的,还望各位大佬多多指教QWQ,也希望SDFZ机器人社能够有幸受到广泛关注qwq】

猜你喜欢

转载自blog.csdn.net/M_H_NEKOAKIKI/article/details/82756074