【Arduino】串口控制LED灯PWM调光

实验现象
通过PWM技术实现串口控制LED灯光强弱。
电路连接
在这里插入图片描述
源代码及注释

#define Led 11  //定义Led引脚,输出PWM
int LedLight=0; //Led灯光亮度
char now; //获取键盘输入
void setup()
{
  pinMode(Led,OUTPUT);      //定义LED为输出引脚  
  Serial.begin(9600); //串口波特率9600    
}                                                    

void loop()
{  
    if(Serial.available()>0){ //串口输入
      now=Serial.read();//获取输入字符
      LedLight=now-97;//字符‘a’~‘j’对应数字0~9
      Serial.print(LedLight);//输出灯光亮度
      LedLight=map(LedLight,0,9,0,255);//将灯光亮度从0~9缩放至0~255
      Serial.print("**");
      Serial.println(LedLight); //输出缩放后的灯光亮度
      analogWrite(Led,LedLight);//输出PWM波,控制Led亮度
    } 
}

实验现象
发送字符’a’

在这里插入图片描述
发送字符’b’
在这里插入图片描述
发送字符’h’
在这里插入图片描述
相关文章

【Arduino基础】LED灯闪烁实验描述

【Arduino基础】按键控制LED灯亮灭实验

Arduino笔记

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
要在Arduino上通过串口控制舵机、LED或RGB迷彩,需要使用相应的模块或元件,并编写相应的代码。 以下是一个控制舵机的示例代码,假设舵机信号线接到Arduino的数字引脚9: ``` #include <Servo.h> Servo myservo; // 创建一个舵机对象 void setup() { myservo.attach(9); // 将舵机信号线连接到数字引脚9 Serial.begin(9600); // 初始化串口通信,波特率为9600 } void loop() { if (Serial.available() > 0) { // 如果串口有数据可读 int angle = Serial.parseInt(); // 读取角度值 myservo.write(angle); // 控制舵机转到指定角度 } } ``` 在上面的代码中,使用了Servo库来控制舵机,通过Serial.parseInt()函数读取串口传来的角度值,并用myservo.write()函数控制舵机转到指定角度。 以下是一个控制LED的示例代码,假设LED接到Arduino的数字引脚13: ``` void setup() { pinMode(13, OUTPUT); // 将数字引脚13设置为输出模式 Serial.begin(9600); // 初始化串口通信,波特率为9600 } void loop() { if (Serial.available() > 0) { // 如果串口有数据可读 int state = Serial.parseInt(); // 读取状态值 digitalWrite(13, state); // 控制LED亮或灭 } } ``` 在上面的代码中,使用digitalWrite()函数控制数字引脚13输出高电平或低电平,从而控制LED的亮灭。 以下是一个控制RGB迷彩的示例代码,假设红、绿、蓝三色LED分别接到Arduino的数字引脚11、10、9: ``` void setup() { pinMode(11, OUTPUT); // 将数字引脚11设置为输出模式(红色LED) pinMode(10, OUTPUT); // 将数字引脚10设置为输出模式(绿色LED) pinMode(9, OUTPUT); // 将数字引脚9设置为输出模式(蓝色LED) Serial.begin(9600); // 初始化串口通信,波特率为9600 } void loop() { if (Serial.available() > 0) { // 如果串口有数据可读 String color = Serial.readString(); // 读取颜色值 if (color == "red") { // 如果颜色为红色 digitalWrite(11, HIGH); // 红色LED亮 digitalWrite(10, LOW); // 绿色LED灭 digitalWrite(9, LOW); // 蓝色LED灭 } else if (color == "green") { // 如果颜色为绿色 digitalWrite(11, LOW); // 红色LED灭 digitalWrite(10, HIGH); // 绿色LED亮 digitalWrite(9, LOW); // 蓝色LED灭 } else if (color == "blue") { // 如果颜色为蓝色 digitalWrite(11, LOW); // 红色LED灭 digitalWrite(10, LOW); // 绿色LED灭 digitalWrite(9, HIGH); // 蓝色LED亮 } } } ``` 在上面的代码中,使用digitalWrite()函数控制红、绿、蓝三色LED的亮灭,从而实现RGB迷彩的效果。同时,使用Serial.readString()函数读取串口传来的颜色值,并通过if语句判断控制哪个LED亮。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏小泡泡#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值