【问题标题】:How to make a servo push a button with Arduino?如何用 Arduino 制作伺服按钮?
【发布时间】:2021-04-28 13:42:07
【问题描述】:

我正在尝试使用 Arduino 复制玩具“无用的盒子”,但版本不同。
我有一个按钮、一个 LED 和一个伺服电机。
当我单击按钮时,LED 会亮起,2 秒后我希望伺服电机旋转并再次按下该按钮以关闭 LED。
问题是当我按下按钮时,LED 亮起,同时伺服电机移动,这样当它点击按钮时,LED 不会关闭。
这是代码:
#include <Servo.h>

int servoPin = 3;

Servo Servo1;
const int button = 7;
const int led = 8;
int ledState = 0;

void setup() {
 Servo1.attach(servoPin);
 pinMode(led, OUTPUT);
 pinMode(button, INPUT);
}

void loop() {
 if (digitalRead(button) == HIGH) {
   if (ledState == 0) {
     ledState = 1;
     digitalWrite(led, HIGH);

     delay(2000);
     Servo1.write(0);
     delay(1000);
     Servo1.write(100);
     delay(1000);
   }
 }
   else {
     ledState = 0;
     digitalWrite(led, LOW);
     Servo1.write(0);
   }
 }

【问题讨论】:

    标签: c++ arduino arduino-c++ servo


    【解决方案1】:

    你试过了吗?

    bool check = true;
    void loop() {
     if (digitalRead(button) == HIGH && check) {
       check = false;
       if (ledState == 0) {
         ledState = 1;
         digitalWrite(led, HIGH);
    
         delay(2000);
         Servo1.write(0);
         delay(1000);
         Servo1.write(100);
         delay(1000);
       }
       else {
         ledState = 0;
         digitalWrite(led, LOW);
         Servo1.write(0);
       }
     }
    if (digitalRead(button) == LOW) {
       check = true;
     }
    

    【讨论】:

    • 是的,但显然我按下按钮多少次都没关系,LED 一直亮着
    • 我更改了代码并添加了一个布尔值,用于检查按钮是否已被放弃或不尝试代码
    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多