查看: 11501|回复: 4

Arduino教程中级 项目十 芝麻开门

[复制链接]
项目十 芝麻开门

本系列教程为DF创客社区版权所有,配套硬件套件新版Arduino中级套件
所谓芝麻开门,就是这门不是轻易能打开的,存在着某些玄关需要你去破解。我们这里设计的这个门,是通过不断晃动手中的传感器才能开。有人会说,传感器我知道是那个数字震动传感器,那门呢?你没看错就是舵机,它能控制角度。所以,所谓的门的转动,是靠舵机来完成的。做个来看下效果就知道了~

所需材料
l  1×  数字震动传感器

image001.jpg

l  1×  TowerPro SG50舵机

image003.jpg

硬件连接
TowerProSG50 →数字口9
数字震动传感器 → 数字口3

image005.jpg

输入代码

#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-1.0.5/ libraries/ Servo/ Servo.h,这就是Servo库所在位置。
如果要在代码中用库中函数,是不能直接调用的,需要给库找个中介,让“他”建立代码和库中间的关系:
Servo myservo;
这里的myservo起到的就是这个作用。建立联系,之后调用库中的函数的话,就要按照下面这个模式进行:
myservo.函数名();
中间那“.”不要漏了!
如何定义舵机是接到那个引脚呢?用到就是attach()函数了。
attach(pin);
attach(pin)函数有一个参数——pin, 任意一个数字引脚(不建议使用数字0,1)。我们这里选择数字引脚9。
myservo.attach(9);
知道了如何定义一个舵机之后,如何把对应的角度写进去呢?
    write(pos);
    pos就是写入的角度值。
   
※ 在之后的Arduino学习之旅中,不管你遇到奇奇怪怪的问题,都希望你与我们交流,欢迎登陆我们的DFRobot创客社区!

Lesson10_1.ino

1.04 KB, 下载次数: 19, 下载积分: 创造力 -1

6995417  学徒

发表于 2017-9-21 09:10:33

晃了半天舵机也没动,有没有哪位和我一样的情况?难道振动传感器坏的?
回复 支持 1 反对 0

使用道具 举报

ShenZhiYu  学徒

发表于 2017-9-25 09:31:20

我没有动传感器  我通过串口看 状态一直在变0和1  这个怎么解决
回复 支持 反对

使用道具 举报

careydavid  高级技师

发表于 2018-4-1 15:48:10

这个代码是有问题的,震动的状态应该用中断来采集。
回复 支持 反对

使用道具 举报

zhouyu77642017  学徒

发表于 2018-8-9 09:27:27

我要试一一
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail