找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1437|回复: 4
打印 上一主题 下一主题
收起左侧

关于如何让Arduino串口打印一次或者两次的问题

[复制链接]
跳转到指定楼层
楼主
ID:816562 发表于 2024-12-11 15:25 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
写了一段代码,按下按键引脚输出高电平,并切串口打印相应字符,松开按键引脚输出低电平,串口打印相应字符,现在问题是不管是高电平还是低电平串口都在一直打印,想问问各位大佬怎样才能让串口打印一次或者两次字符?源代码,初学写的比较烂,大佬凑合看!
源码如下:


void setup()
{
  Serial.begin(19200);
  pinMode(3, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  digitalWrite(13,LOW);
}

void loop()
{
  if (!digitalRead(3))
   {
    digitalWrite(13,HIGH);        
    Serial.print("1a");
    delay(1000);
    }
     
    else
   
  {
    digitalWrite(13,LOW);
    Serial.print("1b");
    delay(1000);
   }
                     
}

最佳答案

查看完整内容

bool lastButtonState = HIGH; // 初始假设按键未按下(由于使用了PULLUP电阻) void setup() { Serial.begin(19200); pinMode(3, INPUT_PULLUP); // 使用内部上拉电阻 pinMode(13, OUTPUT); digitalWrite(13, LOW); } void loop() { bool currentButtonState = !digitalRead(3); // 按键按下时引脚为LOW if (currentButtonState != lastButtonState) // 检查按键状态是否改变 { if (cur ...
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:583948 发表于 2024-12-11 15:25 | 只看该作者
bool lastButtonState = HIGH;  // 初始假设按键未按下(由于使用了PULLUP电阻)

void setup()
{
  Serial.begin(19200);
  pinMode(3, INPUT_PULLUP);  // 使用内部上拉电阻
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
}

void loop()
{
  bool currentButtonState = !digitalRead(3);  // 按键按下时引脚为LOW

  if (currentButtonState != lastButtonState)  // 检查按键状态是否改变
  {
    if (currentButtonState)  // 按键按下
    {
      digitalWrite(13, HIGH);
      Serial.println("Button pressed: 1a");  // 使用println换行,方便阅读
      lastButtonState = currentButtonState;  // 更新状态
    }
    else  // 按键松开
    {
      digitalWrite(13, LOW);
      Serial.println("Button released: 1b");  // 使用println换行,方便阅读
      lastButtonState = currentButtonState;  // 更新状态
    }
  }

  // 这里可以添加一个小的延时来减少CPU的占用,但注意不要太大以免影响响应速度
  // delay(10);  // 可选,根据需要调整
}
回复

使用道具 举报

板凳
ID:88256 发表于 2024-12-11 18:16 | 只看该作者
loop里面的程序是一直在循环运行的,肯定会一直打印,要加一个变量用来记录按键状态,只要读取到的按键状态和记录的不一样,就更改变量并执行相应的操作。
回复

使用道具 举报

地板
ID:816562 发表于 2024-12-11 20:33 来自手机 | 只看该作者
zpwgf 发表于 2024-12-11 17:49
bool lastButtonState = HIGH;  // 初始假设按键未按下(由于使用了PULLUP电阻)

void setup()

感谢大佬解惑,大佬的代码完美实现,把代码最后的延时加上了,不然按键时有抖动,感谢!
回复

使用道具 举报

5#
ID:816562 发表于 2024-12-11 20:33 来自手机 | 只看该作者
hhdsdy 发表于 2024-12-11 18:16
loop里面的程序是一直在循环运行的,肯定会一直打印,要加一个变量用来记录按键状态,只要读取到的按键状态 ...

感谢指点!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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