Arduion学习——PWM实验

前言

在有关PWM的学习中,我们了解了有关旋钮电位器的相关知识,实现了通过改变阻值实现控制灯泡的亮度,而在本次实验中,将通过旋钮电位器的阻值来控制多个LED灯实现相关功能。

一、目标实现

①阻值为 0 时关闭所有的灯
②阻值为 1-300 时打开红灯,熄灭黄灯和绿灯
③阻值为 320-700 时打开绿灯,熄灭红灯和黄灯
④阻值为 720-1020 时打开黄灯,熄灭红灯和绿灯
⑤阻值为 1023 时关闭所有的灯
同时加上必要的串口打印

二、实验器件

  • 开发板:arduion
  • 面包板:1 个
  • LED灯:3 个(红,绿,黄)
  • 旋钮电位器:1 个
  • 220欧电阻: 3 个
  • 多彩杜邦线:若干

三、接线

接线原理如下图所示

实验接线如图所示

四、代码程序

const int analogInpin =A0; //定义模拟接口0
int sensorValue = 0;       //暂存来自传感器的变量数值
int redled = 6;            //红灯LED输出
int greenled = 7;          //绿灯LED输出
int yellowled = 8;         //黄灯LED输出

void setup()
{
  pinMode(redled, OUTPUT);
  pinMode(greenled, OUTPUT);
  pinMode(yellowled, OUTPUT); //分别定义红灯、绿灯、黄灯的接口为输出接口
  Serial.begin(9600);         //设置波特率为9600
}

void loop()     //死循环体
{
  sensorValue = analogRead (analogInpin);    //读取传感器的模拟值并赋值给sensorValue
  Serial.println(sensorValue);               //串口打印
  if (sensorValue == 0) Clear_led();                           //当时阻值为 0 时,执行 RUN_RED() 函数
  if (sensorValue >= 1 && sensorValue <= 300) RUN_RED();       //当时阻值为 1-300 时,执行 RUN_RED() 函数
  if (sensorValue >= 320 && sensorValue <= 700)  RUN_GREEN();  //当时阻值为 320-700 时,执行 RUN_GREEN() 函数
  if (sensorValue >= 720 && sensorValue <= 1020)  RUN_YELLOW();//当时阻值为 720-1020 时,执行 RUN_YELLOW() 函数
  if (sensorValue == 1023)  RUN_ALL();                         //当时阻值为 1023 时,执行 RUN_RED() 函数
}
void Clear_led() //熄灭红灯、绿灯、黄灯
{
  digitalWrite(redled, LOW);
  digitalWrite(greenled, LOW);
  digitalWrite(yellowled, LOW);
}void RUN_RED()  //一直执行红灯亮,绿灯、黄灯熄灭
{
    digitalWrite(redled, HIGH);
    digitalWrite(greenled, LOW);
    digitalWrite(yellowled, LOW);
}
void RUN_GREEN() //一直执行绿灯亮,红灯、黄灯熄灭
{
    digitalWrite(greenled, HIGH);
    digitalWrite(redled, LOW);
    digitalWrite(yellowled, LOW);
}
void RUN_YELLOW() //一直执行黄灯亮,红灯、绿灯熄灭
{
    digitalWrite(yellowled, HIGH);
    digitalWrite(redled, LOW);
    digitalWrite(greenled, LOW);
}
void RUN_ALL()//熄灭所有灯
  digitalWrite(redled,HIGH);
  digitalWrite(greenled,HIGH);
  digitalWrite(yellowled,HIGH); 
}

Gitte源码仓库:https://gitee.com/chen_xy_chen/arduion_c/commit/ec5688eb37f8be9973371541b8ddaf0fe2ab512b

五、最终效果

具体效果视频就不在此展示了,感兴趣的伙伴可以自行接线复制代码进行实验。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值