最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

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

Arduino 少儿编程 1708浏览 0评论

友情提示:380元/半年,儿童学编程,就上码丁实验室

 

本教程由DFRobot提供。

该教程为中级套件教程。购买地址:

https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-12108364412.9.uh4s3j&id=44531434864

 

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

 

所需材料

  • 1× 数字震动传感器

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

  • 1× TowerPro SG50 舵机

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

硬件连接

TowerPro SG50 ->数字口 9

数字震动传感器 ->数字口 3

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

输入代码

#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就是写入的角度值。


 

您必须 登录 才能发表评论!