久坐提醒器

2018-10-237082
AI 快速预览详细 收起
这是一个基于Arduino的久坐提醒器项目。通过使用超声波传感器检测用户是否久坐,并在久坐超过一定时间后发出声音提醒和显示提示信息。项目中使用了MsTimer2库来实现定时功能,结合超声波传感器检测距离,当距离小于51cm时触发提醒。这个项目不仅有助于保持健康,还能激发孩子的编程兴趣。

代码
#include <SoftI2CMaster.h>
#include <LiquidCrystal_SoftI2C.h>
#include <MsTimer2.h>

volatile float distance;

float checkdistance_8_7() {
  digitalWrite(8, LOW);
  delayMicroseconds(2);
  digitalWrite(8, HIGH);
  delayMicroseconds(10);
  digitalWrite(8, LOW);
  float distance = pulseIn(7, HIGH) / 58.00;
  delay(10);
  return distance;
}

LiquidCrystal_SoftI2C mylcd(0x20,16,2,A5,A4);
void msTimer2_func() {
  mylcd.clear();
  distance = checkdistance_8_7();
  delay(10);
  if (distance < 51) {
    tone(0,131);
    delay(10);
    mylcd.setCursor(1-1, 1-1);
    mylcd.print("您已久坐,");
    mylcd.setCursor(1-1, 0-1);
    mylcd.print("该运动一下啦!");
    delay(300);

  }
}

void setup(){
  pinMode(8, OUTPUT);
  pinMode(7, INPUT);
  distance = checkdistance_8_7();
  mylcd.init();
  mylcd.backlight();
  mylcd.display();
  pinMode(0, OUTPUT);
}

void loop(){
  if (digitalRead(7) == HIGH) {
    digitalWrite(8,HIGH);
    MsTimer2::set(1800000, msTimer2_func);
    MsTimer2::start();

  } else {
    digitalWrite(8,LOW);

  }
  for (int time = 1; time <= 10; time = time + (1)) {
    mylcd.clear();
    distance = checkdistance_8_7();
    delay(10);
    if (distance < 51) {
      tone(0,131);
      delay(10);
      mylcd.setCursor(1-1, 1-1);
      mylcd.print("您已久坐,");
      mylcd.setCursor(1-1, 0-1);
      mylcd.print("该运动一下啦!");
      delay(300);

    }
  }

}






QQ图片20181023164734.png (188.59 KB, 下载次数: 1876)

久坐提醒器 · Arduino项目_image_3.webp

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(5)
DFBJ1tpvsP4
DFBJ1tpvsP4
请问您最后解决了吗?
gada888
gada888
DFBJOseAZnM
DFBJOseAZnM
是吗?
DFBJOseAZnM
DFBJOseAZnM
实现不了?
chris许
chris许
作者
请大神帮我看看 代码是否有什么不对的地方 希望能得到帮助 谢谢:))
- 没有更多了 -