用按钮控制伺服马达旋转90度 再用碰撞传感器转回0度-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2298|回复: 4

[未解决] 用按钮控制伺服马达旋转90度 再用碰撞传感器转回0度

[复制链接]
发表于 2020-12-20 03:44 | 显示全部楼层 |阅读模式
一个自动开门装置 用按钮按一次可以让伺服马达转90度使门打开 再用碰撞传感器按一次转回来把门锁上 这样一直循环 请问下面这个程序哪里写错了 这个程序连接之后 按钮按下没有反应 碰撞感应器只有一直按着才会转而且会从90度转到0度再转回90度 请问应该怎么改?
  1. #include <Servo.h>
  2. Servo servo;

  3. int crash = 7;
  4. int pin_button=8;

  5. void setup() {
  6.   pinMode(pin_button,INPUT);
  7.   Serial.begin(9600);
  8.   servo.attach(6);
  9.   pinMode(crash,INPUT);
  10. }

  11. void loop() {
  12.   while(digitalRead(pin_button)){
  13.     servo.write(90);
  14.   }
  15.   while(digitalRead(crash)){
  16.     servo.write(0);
  17.   }
  18. }
复制代码


发表于 2020-12-20 07:09 | 显示全部楼层
本帖最后由 lwq1947 于 2020-12-20 07:20 编辑

将pinMode(pin_button,INPUT);pinMode(crash,INPUT);改成
pinMode(pin_button,INPUT_PULLUP);pinMode(crash,INPUT_PULLUP);按钮和碰撞感应器一端接GND.
 楼主| 发表于 2020-12-20 13:57 | 显示全部楼层
lwq1947 发表于 2020-12-20 07:09
将pinMode(pin_button,INPUT);pinMode(crash,INPUT);改成
pinMode(pin_button,INPUT_PULLUP);pinMode(crash ...

改了之后还是没有反应是为什么呀 连得都是GND
发表于 2020-12-20 15:03 | 显示全部楼层
eobeom 发表于 2020-12-20 13:57
改了之后还是没有反应是为什么呀 连得都是GND

我用舵机按你的程序试的没问题.
发表于 2020-12-21 10:01 | 显示全部楼层
while(0)就是一次都不执行循环,while(1)代表死循环,你的按钮是不是用的是下拉电阻接法呢,没有按下的时候返回值是0,所以不执行按钮的动作。
#include <Servo.h>
Servo servo;
int crash = 7;
int pin_button=8;
int A;//定义变量储存按钮和碰撞的状态

void setup() {
  pinMode(pin_button,INPUT);
  Serial.begin(9600);
  servo.attach(6);
  pinMode(crash,INPUT);
}

void loop()
{
if(digitalRead(pin_button)==1&&digitalRead(crash)==0)//判断按钮按下,碰撞没感应
{
  A=1;
}
if(digitalRead(pin_button)==0&&digitalRead(crash)==1)//判断按钮没有按下,碰撞有感应
{
  A=2;
}
if(A==1)
{
  servo.write(90);
}
if(A==2)
{
  servo.write(0);
}

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

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 17:43 , Processed in 0.115261 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表