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

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

作者: 不脱发的程序猿 | 来源:发表于2021-12-07 23:56 被阅读0次

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

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

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

    项目连线如下所示:

    实现代码如下所示:

    #include <Servo.h>

    int sensorPin = 3;          //震动传感器 – Digital 3

    Servo 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(角度); //写入舵机的角度

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/sryzxrtx.html