写点什么

和 12 岁小同志搞创客开发:手撕代码,做一款密室自动门

  • 2021 年 12 月 08 日
  • 本文字数:1134 字

    阅读完需:约 4 分钟

和12岁小同志搞创客开发:手撕代码,做一款密室自动门

机缘巧合在网上认识一位 12 岁小同志,从零开始系统辅导其创客开发思维和技巧。

​项目专栏:https://blog.csdn.net/m0_38106923/category_11097422.html 


所谓密室自动门,就是这门不是轻易能打开的,存在着某些玄关需要你去破解。这里设计的这个门,是通过不断晃动手中的传感器才能开。

有人会说,传感器我知道是那个数字震动传感器,那门呢?你没看错就是舵机,它能控制角度。所以,所谓的门的转动,是靠舵机来完成的。做个来看下效果就知道了~

拓展学习:和12岁小同志搞创客开发:遥控舵机_不脱发的程序猿-CSDN博客

项目连线如下所示:

​实现代码如下所示:

#include <Servo.h>             
int sensorPin = 3; //震动传感器 – Digital 3Servo myservo; int pos = 0;
void setup() { Serial.begin(9600); pinMode(sensorPin, INPUT); myservo.attach(9); //舵机 – Digital 9}
void loop() { int sensorState = digitalRead(sensorPin);//读取震动传感器的状态 Serial.println(sensorState); if(!sensorState){ //一旦状态发生变化,舵机加2°,直到加到180° pos = pos +2; if(pos >=180){ pos = 180; } myservo.write(pos); //写入舵机的角度 Serial.println(pos); //串口同时输出角度值 delay(100); } else{ //状态不发生变化,舵机减2°,直到减到0° pos = pos - 2; if(pos <=0){ pos = 0; } myservo.write(pos); Serial.println(pos); delay(100); }
delay(1); }
复制代码

代码的开始先调用<Servo.h>库:

#include <Servo.h>
复制代码

这个库已经在 Arduino IDE 中了,可以打开 Arduino 安装路径,例如我的安装路径:D:\Arduino\libraries\Servo\src,这就是 Servo 库所在位置。如果要在代码中用库中函数,是不能直接调用的,需要给库找个中介,让“他”建立代码和库中间的关系,也就是类的使用:

Servo myservo; 
复制代码

这里的 myservo 起到的就是这个作用。建立联系,之后调用库中的方法和变量的话,就要按照下面这个模式进行:

myservo.方法名myservo.变量
复制代码

如何定义舵机是接到那个引脚呢?用到就是 attach()方法了。

myservo.attach(引脚ID);         //舵机 – Digital 9
复制代码

知道了如何定义一个舵机之后,如何把对应的角度写进去呢?

myservo.write(角度);      //写入舵机的角度   
复制代码


最后,运行程序,不断的晃动震动传感器,可以看到舵机的角度会随之变大。停止晃动后,舵机角度又开始慢慢减小。好比一扇门慢慢打开,合上。

发布于: 1 小时前阅读数: 5
用户头像

【研究方向】物联网、嵌入式、AI、Python 2018.02.09 加入

【公众号】美男子玩编程,关注获取海量资源~

评论

发布
暂无评论
和12岁小同志搞创客开发:手撕代码,做一款密室自动门