标题: 关于如何让Arduino串口打印一次或者两次的问题 [打印本页]

作者: kingzr00    时间: 2024-12-11 15:25
标题: 关于如何让Arduino串口打印一次或者两次的问题
写了一段代码,按下按键引脚输出高电平,并切串口打印相应字符,松开按键引脚输出低电平,串口打印相应字符,现在问题是不管是高电平还是低电平串口都在一直打印,想问问各位大佬怎样才能让串口打印一次或者两次字符?源代码,初学写的比较烂,大佬凑合看!
源码如下:


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);
   }
                     
}
作者: zpwgf    时间: 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);  // 可选,根据需要调整
}
作者: hhdsdy    时间: 2024-12-11 18:16
loop里面的程序是一直在循环运行的,肯定会一直打印,要加一个变量用来记录按键状态,只要读取到的按键状态和记录的不一样,就更改变量并执行相应的操作。
作者: kingzr00    时间: 2024-12-11 20:33
zpwgf 发表于 2024-12-11 17:49
bool lastButtonState = HIGH;  // 初始假设按键未按下(由于使用了PULLUP电阻)

void setup()

感谢大佬解惑,大佬的代码完美实现,把代码最后的延时加上了,不然按键时有抖动,感谢!
作者: kingzr00    时间: 2024-12-11 20:33
hhdsdy 发表于 2024-12-11 18:16
loop里面的程序是一直在循环运行的,肯定会一直打印,要加一个变量用来记录按键状态,只要读取到的按键状态 ...

感谢指点!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1