在點燈科技APP使用esp8266控制舵機

最近有點事,一個星期沒有寫博客記錄啦,其實遇到了不少有用的知識和小項目,沒有寫博客記錄慚愧慚愧

廢話不多說,我們進入正題:


這次我們用點燈科技來控制舵機的旋轉

使用的還是我們的Arduino IDE,硬件的需求有esp8266 nodemcu以及一個舵機

1、爲Arduino IDE添加點燈科技的庫文件,具體操作看文章:
小愛同學脫離局域網遠程控制開關?

2、上代碼:

#include <Servo.h> 
#define BLINKER_WIFI
 
#include <Blinker.h>
 
char auth[] = "";   //key
char ssid[] = "";             //wifi名稱
char pswd[] = "";      //wifi密碼
 
// 新建組件對象
BlinkerButton Button1("btn-max");   //位置1 按鈕 數據鍵名
BlinkerButton Button2("btn-min");   //位置2 按鈕 數據鍵名
BlinkerButton Button3("btn-pw");    //循環模式 按鈕 數據鍵名  開關模式
Servo myservo;
BlinkerSlider Slider1("max-num");   //位置1 滑塊 數據鍵名  範圍1-180
BlinkerSlider Slider2("min-num");   //位置2 滑塊 數據鍵名  範圍1-180
BlinkerSlider Slider3("ser-num");   //實時位置 滑塊 數據鍵名  範圍1-180
BlinkerSlider Slider4("time-num");  //循環模式間隔時間 滑塊 數據鍵名 範圍單位毫秒

bool xunhuan_mode = false;

int servo_max,servo_min,ser_num,time_num;
  
void button1_callback(const String & state) {    //位置1按鈕
    BLINKER_LOG("get button state: ", servo_max);
    myservo.write(servo_max);
    Blinker.vibrate();
}
  
void button2_callback(const String & state) {   //位置2按鈕
    BLINKER_LOG("get button state: ", servo_min); 
    myservo.write(servo_min);
    Blinker.vibrate();
}

void button3_callback(const String & state) {    //位置3按鈕  開關模式
   // Blinker.vibrate();
    if(state == "on"){
      xunhuan_mode = true;  
      Button3.print("on");  
      Blinker.delay(100);
    }else if (state == "off"){
      xunhuan_mode = false;
      Button3.print("off");
      Blinker.delay(100);
    }
}


void slider1_callback(int32_t value)
{
    servo_max = value;
    Slider1.color("#1E90FF");
    Slider1.print();
    
    BLINKER_LOG("get slider value: ", value);
}

void slider2_callback(int32_t value)
{
    servo_min = value;
    Slider2.color("#FFF8DC");
    Slider2.print();
    BLINKER_LOG("get slider value: ", value);
}

void slider3_callback(int32_t value)
{
    ser_num = value;
    myservo.write(ser_num);
    Blinker.delay(100);
    BLINKER_LOG("get slider value: ", value);
}


void slider4_callback(int32_t value)
{
    time_num = value;
    Blinker.delay(100);
    BLINKER_LOG("get slider value: ", value);
}

void xunhuan(){
     myservo.write(servo_max);
     Blinker.delay(time_num/2);
     myservo.write(servo_min);
     Blinker.delay(time_num/2);
}

void setup() {

    Serial.begin(115200);    
    BLINKER_DEBUG.stream(Serial);
    Blinker.begin(auth, ssid, pswd);
    Button1.attach(button1_callback);
    Button2.attach(button2_callback);
    Button3.attach(button3_callback);
    Slider1.attach(slider1_callback);
    Slider2.attach(slider2_callback);
    Slider3.attach(slider3_callback);
    Slider4.attach(slider4_callback);
    myservo.attach(5);	//servo.attach():設置舵機數據引腳
    myservo.write(10);	//servo.write():設置轉動角度
    servo_max=70;
    servo_min=120;
    time_num=500;

}

void loop() {

  Blinker.run();
  if(xunhuan_mode==true){
    xunhuan();
  }
    
}

這裏說一下Servo庫

  1. attach()
    描述
    將Servo變量附加到引腳,注意:在Arduino 0016及之前的版本上,Servo庫僅支持將舵機連接至第9和第10腳上。
    語法
    servo.attach(pin)
    servo.attach(pin, min, max)
    參數說明
    servo,一個類型爲servo的變量
    pin,連接至舵機的引腳編號
    min(可選),舵機爲最小角度(0度)時的脈衝寬度,單位爲微秒,默認爲544
    max(可選),舵機爲最大角度(180度時)的脈衝寬度,單位爲微秒,默認爲2400

  2. write()
    描述
    向舵機寫入一個數值,來直接控制舵機的軸。在一個標準的舵機中,這將設定齒輪的角度,將齒輪轉到對應的位置。在一個連續旋轉的舵機中,這將設置一個舵機的角度(0作爲全速向一邊,180爲全速向另一邊,在90附近的值爲停止)。
    語法
    servo.write(angle)
    參數說明
    servo,一個類型爲servo的變量
    angle,寫向舵機的角度,從0到180之間

然後這裏設置的是GPIO引腳,而我們esp8266並沒有標明GPIO編號
我們按照下面編號對應表進行設置:

所以我們設置的GPIO5就是我們的D1端口

接下來進行燒錄,硬件連接

這裏再說一下我們的舵機接線問題:
在我手上的小舵機有三根線:棕色、紅色以及黃色
黃色線爲數據線,接我們數據引腳D1
紅色爲正極:接正極供電
棕色爲負極:接負極接地

3、點燈科技APP設備的按鈕設置
進入我們的設備

以下是我設置好的按鈕和滑塊:

可以看到有三個按鈕,四個滑塊,具體怎麼設置呢?
三個按鈕我們都以下爲模板設置:
數據鍵名和文本名稱都在我們代碼頭部註釋了,大家注意一下。
可以看到我設置的鍵名爲btn-max,文本名稱爲位置1。

以及我們的位置2和循環模式都是這樣設置的

接下來我們設置滑塊:
我們一共有4個滑塊,其中位置1、位置2以及實時位置的設置是一模一樣的:
我們設置對應的文本名稱以及鍵名,最小值爲0,最大值爲180,代表舵機轉動的角度

我這裏再說一下最後一個,循環時間的滑塊設置,其實和前面三個滑塊的設置一樣,設置文本名稱以及對應的數據鍵名。但是,這裏的最大值最小值可以根據自己的需求來的,它代表的是循環的間隔時間,單位爲毫秒。我設置了0-2000,最大的時候間隔時間爲2000毫秒。

4、我們上電開機:

一開始我們可以看到舵機復位到初始位置

設備在線以後我們進入我們設置好的控制界面
將位置2的滑塊設置到一下位置,再點擊位置2的按鈕,可以看到舵機轉動了


剩下的按鈕及功能大家自己去慢慢嘗試吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章