新手求助教程LED灯调光-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 595|回复: 2

[未解决] 新手求助教程LED灯调光

[复制链接]
发表于 2021-12-12 21:16 | 显示全部楼层 |阅读模式
本帖最后由 bgsdd 于 2021-12-12 21:18 编辑

按照教程用串口监视器控制LED灯亮度,输入一个数值就能把LED调节到相应亮度,在输入一个数值就继续调节亮度,可教程上是每一次调节都能保持当前亮度,可我这出来的亮度调节到数值后停顿了一下然后自动恢复到0,程序都一样,接线也都一样,不知道什么原因,UNO兼容板:
//利用串口发送指令控制LED灯,0-255之间调节亮度
//逐步调节亮度
//不明白为何循环结束后变量seria1Data会变成0
int brightness;  //定义LED亮度变量
int seria1Data;  //定义串口数据变量

void setup(){
  Serial.begin(9600);//定义串口通信
  pinMode(LED_BUILTIN,OUTPUT);  //定义LED为输出模式
  pinMode(9,OUTPUT);  //定义9号端口为输出模式
}

void loop(){
  if(Serial.available()>0){  //如果串口监视器有数据
    seria1Data=Serial.parseInt();  //读取接收的字符存储到seria1Data变量
    Serial.print("seria1Data=");Serial.println(seria1Data);
    if(seria1Data >= 0 && seria1Data <= 255){ //如果指令在0-255之间
      if(seria1Data>=brightness){ //如果接受指令大于等于当前LED亮度
        for (brightness;brightness<=seria1Data;brightness++){ //当前亮度累加调节亮度
          analogWrite(9,brightness);//那么端口9输出高电平,值为当前数值
          Serial.print("当前亮度=");Serial.println(brightness);//打印实时亮度
          delay(10);//调节亮度间隔时间
        }
      }
      else{
        for(brightness;brightness >= seria1Data;brightness--){ //当前亮度累减调节亮度
          analogWrite(9,brightness);//那么端口9输出高电平,值为当前数值
          Serial.print("当前亮度=");Serial.println(brightness);//打印实时亮度
          delay(10);//调节亮度间隔时间
        }
      }   
    }   
  }
}

串口监视器的输出,输入了4,接受输入范围是0-255
seria1Data=4
当前亮度=-1
当前亮度=0
当前亮度=1
当前亮度=2
当前亮度=3
当前亮度=4
seria1Data=0
当前亮度=5
当前亮度=4
当前亮度=3
当前亮度=2
当前亮度=1
当前亮度=0




发表于 2021-12-14 16:30 | 显示全部楼层
你是用Arduino IDE 的串口监视器吗?你把串口监视器波特率设置左边的回车换行设置成第一个选项no line ending试试,
 楼主| 发表于 2021-12-15 20:06 | 显示全部楼层
好了,和教程一摸一样了,看来还有很多的细节教程都忽略了,新手真是踩不尽的坑
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 19:04 , Processed in 0.179159 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表