在这些困难时期,我们需要尽可能避免外部身体接触。我们定期使用消毒剂和洗手液,但它仍然是身体接触的来源。所以,我决定做一台自动洗手机。
阿杜诺
注意:您稍后会希望使您的项目可移植。为此,您可以将 Arduino 的 V IN 引脚连接到 +ve 导轨而不是 5V 引脚。然后,您可以将 9V 电池连接到电源轨为您的项目供电。
HC-SR04超声波距离传感器
注意:您也可以为此项目使用 IR 接近传感器或任何其他距离传感器。
伺服电机
而已!接线非常简单。
我们首先包括 New Ping 和 Servo 库。
#include
#include
接下来,我们定义所有变量。
int trigPin = 9;
int echoPin = 10;
float v = 343;
float d = 0;
float pingTime = 0;
int servoPin = 2;
int servoPos = 0;
int buzzPin = 5;
我们使用伺服库创建一个名为 myServo 的对象,并使用 New Ping 库创建另一个名为 sonar 的对象
Servo myServo;
NewPing sonar(trigPin,echoPin);
然后,我们设置这些对象,声明我们的引脚模式并在 void setup 中启动我们的串行监视器。
void setup(){
Serial.begin(9600);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
myServo.attach(servoPin);
myServo.write(servoPos);
pinMode(buzzPin,OUTPUT);
}
在 void 循环中,我们得到以厘米为单位的距离,并检查距离是大于还是小于 15cm。
d = sonar.ping_cm();
如果距离小于 15 厘米,我们使用简单的 if-else 语句将伺服器设置为移动 120 度。最后,我们将伺服位置写入电机。
if(d < 15){
servoPos = 120;
digitalWrite(buzzPin,HIGH);
delay(100);
digitalWrite(buzzPin,LOW);
}
else{
servoPos = 0;
}
digitalWrite(buzzPin,LOW);
myServo.write(servoPos);
注意:要使用超声波距离传感器测量距离,您不一定必须使用 New Ping 库,您可以在触发器和回波引脚中创建一个脉冲并计算到目标的距离(在这种情况下,我们的手)。您可以使用这段代码在触发引脚中创建一个脉冲并收听回声引脚中的 ping。
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
digitalWrite(trigPin,LOW);
delayMicroseconds(10);
pingTime = pulseIn(echoPin,HIGH);
pingTime /= 10000;
d = pingTime*343/2;
超声波距离传感器:超声波距离传感器从发射器发出超声波脉冲。这称为“ping”。接收器“监听”这个 ping 并计算传输后到达的时间。我们可以使用这个公式来计算距离(假设25⁰C时空气中的声速= 343 m/s)
v = 2d/t
在哪里
在重新安排时,我们得到
d = v*t/2
我们得到的距离以米 [m] 为单位。因此,我们可以将距离乘以 100 得到以厘米为单位的距离 [cm]。
伺服电机:伺服电机是一种特殊的电机,可以根据指令转动特定的角度。连接和编码非常简单。我们将为此使用该Servo.h
库。在这个项目中,我们将使用伺服电机来拉动洗手液的杠杆。
注意:确保在将电线连接到伺服器和消毒器时保持电线的张力。
您可以从这些站点下载库,也可以从 Arduino IDE 安装它们。只需转到工具-> 管理库。将弹出一个窗口,您可以搜索和下载所需的库。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !