教你用arduino的触控功能做一个实用的颈椎病预防器
本帖最后由 gada888 于 2018-11-26 22:12 编辑我知道学生一般写作业都会写很晚。头不由自主的会前倾。时间久了颈椎久会变形。时间长了就是颈椎病。
这里教大家做一个颈椎前倾的物理提醒。它主要是通过arduino的capacitance库来实现这个功能的。这里并不讲cap库的具体用法。大家有兴趣可以去google搜索。
除了这个触控功能,主要硬件就是arduino和一个电机驱动以及一个马达。这个马达可以在人的头部碰到触控点后。向左转3转。然后停止,再向右转3转。回到原位。当再次触发触控时候,马达重复以上动作。
一年前做的。电机可以用小型的减速电机。如果有3D打印机,打印一个直线驱动结构。用这个机构把弯曲的颈部给顶回来。那就更完美了。我没有3D打印机。无法完美呈现这种效果。
注意:主控可以是很小的arduino mini电机驱动也可以用很小的。完全可以做成可穿戴的。程序就是这个程序。’
//============add lib=============
#include <CapSense.h>
//============define================
#define ON_PERCH 1500
#define CAP_SENSE 30
#define ONBOARD_LED 13
//==========placement=============
CapSense foil_sensor = CapSense(10,7);
int perch_value = 0;
const int AIA = 5;
const int AIB = 6;
byte speed = 250;
//==========setup===========
void setup()
{
// for serial window debugging
Serial.begin(9600);
// set pin for onboard led
//pinMode(ONBOARD_LED, OUTPUT);
pinMode(AIA, OUTPUT); // set pins to output
pinMode(AIB, OUTPUT);
}
//============functions=============
void SendPerchAlert(int perch_value, int perch_state)
{
digitalWrite(AIA, perch_state ? HIGH : LOW);
digitalWrite(AIB, perch_state ? HIGH : LOW);
if (perch_state)
Serial.print("Perch arrival event, perch_value=");
else
Serial.print("Perch departure event, perch_value=");
Serial.println(perch_value);
}
//============loop============
void loop() {
delay(1000);
perch_value = foil_sensor.capSense(CAP_SENSE);
switch (perch_state)
{
case 0:
if (perch_value >= ON_PERCH)
{
perch_state = 1;
SendPerchAlert(perch_value, perch_state);
}
break;
case 1:
if (perch_value < ON_PERCH)
{
perch_state = 0;
SendPerchAlert(perch_value, perch_state);
forward();
delay(2000);
STOP();
Serial.println( "Indietro..." );
backward();
delay(2000);
STOP();
}
break;
}
}
void backward()
{
analogWrite(AIA, 0);
analogWrite(AIB, speed);
}
void forward()
{
analogWrite(AIA, speed);
analogWrite(AIB, 0);
}
void STOP()
{
analogWrite(AIA, 0);
analogWrite(AIB, 0);
delay (4000);
}
页:
[1]