用blinker按键控制舵机-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3165|回复: 2

[已解答] 用blinker按键控制舵机

[复制链接]
发表于 2019-9-17 22:04 | 显示全部楼层 |阅读模式
  想用blinker按键控制舵机来控制方向,自己写的下面的程序,BLINKER设置单个按键的时候舵机可以控制转动一个角度,但是在加上一个按键的时候只能有一个按键起作用,另一个按键没反应 这是错在哪里了?
#define BLINKER_WIFI
#include <Servo.h>
#include <Blinker.h>


Servo s1;
char auth[] = "53d7";
char ssid[] = "";
char pswd[] = "qy88";

// 新建组件对象
BlinkerButton Button1("btn-1");
BlinkerButton Button2("btn-abc");
BlinkerButton Button3("a");

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(14, !digitalRead(14));
    Blinker.vibrate();
}
void button2_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(D6, !digitalRead(13));
    Blinker.vibrate();
}
void button3_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(D3, !digitalRead(D3));
    Blinker.vibrate();
}
void setup() {
    // 初始化串口,并开启调试信息
    Serial.begin(115200);   
    BLINKER_DEBUG.stream(Serial);
    // 初始化有LED的IO
    pinMode(14, OUTPUT);
    pinMode(D6, OUTPUT);
     digitalWrite(14, LOW);
    digitalWrite(D6, LOW);
    pinMode(D3, OUTPUT);


    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    s1.attach(D3);

}


void loop() {  
int Val=digitalRead(D6);
  if (Val ==HIGH) {
    s1.write(180);
int Va2=digitalRead(14);
if(Va2==LOW){s1.write(135);}
  else {
    s1.write(90); }
Blinker.run();
}

发表于 2019-9-17 22:13 | 显示全部楼层
请用个变量保存状态吧。
一会儿GPIO编号,一会儿Dx引脚的。。。都不知道你在干嘛。。。
发表于 2019-9-18 13:11 | 显示全部楼层
读了下你的逻辑。按键2按下,D6置高,然后VAL得到HIGH,然后只要你不再按下按键2,其他按键都不会有反应,因为你if后VAL一直是HIGH,逻辑问题,重新捋一捋你的loop
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 03:33 , Processed in 0.140096 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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