一,用for循环控制LED灯亮度
代码:
void setup() {
pinMode(9,OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
for (int bright = 0; bright<255;bright++){
analogWrite(9,bright);
Serial.println(bright);
delay(10);
}
for (int bright =255; bright>0;bright--){
analogWrite(9,bright);
Serial.println(bright);
delay(10);
}
}
for
2.analogRead()的熟悉与电位器控制LED亮度
analogRead()
说明
本指令用于从Arduino的模拟输入引脚读取数值。Arduino控制器有多个10位数模转换通道。这意味着Arduino可以将0-5伏特的电压输入信号映射到数值0-1023。
换句话说,我们可以将5伏特等分成1024份。0伏特的输入信号对应着数值0,而5伏特的输入信号对应着1023。
注意:在模拟输入引脚没有任何连接的情况下,用analogRead()指令读取该引脚,这时获得的返回值为不固定的数值。这个数值可能受到多种因素影响,如将手靠近引脚也可能使得该返回值产生变化。
map()函数-等比映射
map()可以用来将某一数值从一个区间等比映射到一个新的区间。
语法
map (x, in_min, in_max, out_min, out_max)
注意
map()不会将数值限制在映射区间内。
注:不同的开发板的模拟输出与输入不同
代码:
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(9,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
int analogInputVal = analogRead(A0);
int bright = map(analogInputVal,0,1023,0,255);//将模拟输入数值(0~1023)等比映射到(0~255)
Serial.println(analogInputVal);
analogWrite(9,bright);
}
实物演示:
LED
51单片机的学习准备:
学习视频:江协科技51单片机入门教程
学习软件下载:Keil5,与STC-ISP
下载链接:https://jiangxiekeji.com/download.html