本帖最后由 rexpie 于 2016-3-3 16:04 编辑
最近颈椎腰椎告急,于是决定要开始矫正坐姿。
知乎说好的椅子很重要。我一看Herman Miller Embody要5位数。呵呵。
但是人体工学椅子好一点的上千,似乎会有用。但是!!
我曾经特地观察过。在某高大上办公楼里面,办公椅清一色Herman Miller Aeron,正确使用推荐坐姿的,不到5%。几乎全部都弓背前倾,程度不一。
注意正确坐姿:
请问正在看帖子的你,是不是这样的:
被我说中的继续往下看,坐姿正确的可以点右上角了。
没事的我觉得你还可以抢救一下
于是,我决定做个小东西提醒我自己:
材料:
超声波测距 x1
Beetle 主控板 x1
红外测距开关 x1
蜂鸣器 x1
充电宝 x1
震动马达 (可选)(店长推荐)
导线、铅丝、焊接工具不一而足
先把测距用铅丝固定到椅子背面,最好和自己的后脑保持水平。
把七七八八的东西绑到椅子边上。注意红外测距(右上角黄色部分)要调整好有效距离,能测出人是否坐着。
蜂鸣器和震动马达、电池、beetle放一起。
所以为什么要用震动马达?蜂鸣器不够么?
因为场景是办公室。蜂鸣器会吵同事啊。你喜欢鄙视的眼神是不是?
我知道,我也觉得丑。无路赛。
如果不想用充电宝,一根线连电脑也可以。
听说有人要视频。
没有视频。
勉强画了个图。
首先没人坐上去是不会触发警报的。没图。
然后你坐直了也是不会触发警报的。如图。
但是你坐姿有变就会触发警报。大概如图。
大致代码如下,参数可调整。
- #define trigPin 4
- #define echoPin 5
- #define irPin 3
- #define warnPin 2
-
- int count = 0;
- int countThreshold = 5;
- int warnTime = 200;
-
- int postureDistance = 20; //cm
- int maxDistance = 3000;
-
- void setup() {
- Serial.begin (9600);
- pinMode(trigPin, OUTPUT);
- pinMode(echoPin, INPUT);
- pinMode(irPin, INPUT);
- pinMode(warnPin, OUTPUT);
- }
-
- void loop() {
-
- long duration, distance;
-
- // for ultra sound distance sensor
- digitalWrite(trigPin, LOW);
- delayMicroseconds(2);
- digitalWrite(trigPin, HIGH);
- delayMicroseconds(10);
- digitalWrite(trigPin, LOW);
-
-
- // head position
- duration = pulseIn(echoPin, HIGH);
- distance = (duration / 2) / 29.1;
-
- Serial.print(distance);
- Serial.println(" cm");
-
- // ir 0 means object detected, so someone is sitting
- int ir = !digitalRead(irPin);
- digitalWrite(13, ir);
- Serial.print("ir: ");
- Serial.println(ir);
-
- if (ir && distance > postureDistance && distance < maxDistance) {
- // accumulate count when person detected
- count++;
- } else {
- // cool down
- count = 0;
- }
-
- Serial.print("count:");
- Serial.println(count);
-
- delay(1000);
-
- if ( count >= countThreshold ) {
- // need to warn you
- digitalWrite(warnPin, HIGH);
- Serial.println("###########Warning!!#############");
- count = 0;
- delay(warnTime);
- digitalWrite(warnPin, LOW);
- } else {
- digitalWrite(warnPin, LOW);
- }
- }
复制代码
|