2301_79911033 2023-10-15 12:50 采纳率: 0%
浏览 13

arduino uno程序设计/按键控制LED灯/ 对串口监视器显示的数字有疑问

我在使用arduino uno开发版的时候,设计了一个程序,让按钮控制LED小灯

int buttonpin = 2;
int ledpin = 13;
void setup(){
Serial.begin(9600);
pinMode(buttonpin,INPUT_PULLUP);pinMode(ledpin,OUTPUT);
void loop(){
int val = digitalRead(buttonpin);if(val==HIGH)
digitalwrite(ledpin,HIGH);
if(val==LOW)
digitalwrite(ledpin,LOW);
Serial.println(val);
}

按理说应该按钮按下的时候,串口监视器显示的高电平也就是1,但我的完全相反,这是为什么

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-16 00:23
    关注

    【以下回答由 GPT 生成】

    问题分析

    问题描述中的程序是一个简单的按钮控制LED小灯的程序。当按钮按下时,LED应该亮起且串口监视器显示高电平(1),当按钮松开时,LED应该熄灭且串口监视器显示低电平(0)。然而,实际情况却相反,按钮按下时串口监视器显示低电平,按钮松开时显示高电平。那么,为什么会出现这种情况呢?

    解决方案

    出现这种情况的原因是按钮的引脚被设置为了上拉输入。因此,当按钮按下时,按钮引脚连接到了地线,导致低电平被读取。相反,当按钮松开时,按钮引脚处于高电平状态。

    为了解决这个问题,我们可以通过以下步骤进行修复:

    1. 将按钮引脚的模式设置为输入模式,而不是上拉输入模式。
    2. 在按钮引脚上使用外部下拉电阻,以确保当按钮没有被按下时,引脚处于低电平状态。
    3. 适当修改程序逻辑以匹配修复后的引脚电平。

    下面是修复后的程序代码示例:

    int buttonpin = 2;
    int ledpin = 13;
    
    void setup(){
      Serial.begin(9600);
      pinMode(buttonpin, INPUT);  // 将按钮引脚设置为输入模式
      pinMode(ledpin, OUTPUT);
    }
    
    void loop(){
      int val = digitalRead(buttonpin);
    
      if(val==LOW){  // 修改按钮状态判断条件
        digitalWrite(ledpin,HIGH);
      }
    
      if(val==HIGH){  // 修改按钮状态判断条件
        digitalWrite(ledpin,LOW);
      }
    
      Serial.println(val);
    }
    

    通过以上修复,你应该能够看到期望的结果了。按钮按下时,LED亮起且串口监视器显示低电平(0),按钮松开时,LED熄灭且串口监视器显示高电平(1)。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月15日

悬赏问题

  • ¥15 STM32多路复用器ADC采样
  • ¥20 Linux(ubuntu)操作相关问题
  • ¥15 python深度学习代码求跑
  • ¥100 对接美团闪购医药接口相关问题
  • ¥15 嵌入式软件电子烟开发
  • ¥15 职场 Excel 查重问题
  • ¥15 求怎么用idea2021.3.2创建web项目并配置tomcat
  • ¥100 or-tools的相关问题
  • ¥15 有可能用平板通过拓展坞来烧录程序吗(keil5的那种)
  • ¥15 状态图的并发态问题咨询