冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 704|回覆: 0
打印 上一主題 下一主題

[討論] ESP32-PICO-D4

[複製鏈接]

2609

主題

0

好友

947

積分

高級會員

Rank: 4

UID
373967
帖子
7462
主題
2609
精華
0
積分
947
楓幣
6399
威望
927
存款
21000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
409 小時
註冊時間
2023-1-12
最後登入
2024-5-8

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-28 06:52:21 |只看該作者 |倒序瀏覽
ESP32-PICO-D4 芯片的 PID 控制器,你需要以下零件:

ESP32-PICO-D4 控制芯片
直流馬達(或其他需要控制的裝置)
馬達驅動器
4位七段顯示器(選擇性,用於顯示控制器的狀態)
杜邦線和其他連接器

下面是 ESP32-PICO-D4 的引腳連接示意圖:


  ESP32-PICO-D4     |     零件
-------------------|-------------------
        5V         -->   馬達驅動器電源
        GND        -->   馬達驅動器GND
        GPIO12     -->   馬達驅動器PWM
        GPIO13     -->   馬達驅動器DIR
        GPIO14     -->   七段顯示器D1
        GPIO27     -->   七段顯示器D2
        GPIO26     -->   七段顯示器D3
        GPIO25     -->   七段顯示器D4
以下是 ESP32-PICO-D4 上的 PID 控制器的範例程式碼:

c++

#include <PID_v1.h>

// PID 控制器參數
double Setpoint, Input, Output;
double Kp = 2, Ki = 5, Kd = 1;

// 七段顯示器引腳
int digit1 = 14;
int digit2 = 27;
int digit3 = 26;
int digit4 = 25;

// 顯示數字的模式
byte digit[10][8] = {
  {1,1,1,1,1,1,0,0},  // 0
  {0,1,1,0,0,0,0,0},  // 1
  {1,1,0,1,1,0,1,0},  // 2
  {1,1,1,1,0,0,1,0},  // 3
  {0,1,1,0,0,1,1,0},  // 4
  {1,0,1,1,0,1,1,0},  // 5
  {1,0,1,1,1,1,1,0},  // 6
  {1,1,1,0,0,0,0,0},  // 7
  {1,1,1,1,1,1,1,0},  // 8
  {1,1,1,1,0,1,1,0}   // 9
};

// 建立 PID 控制器物件
PID myPID(&Input, &Output, &Setpoint, Kp, Ki, Kd, DIRECT);

void setup() {
  // 初始化引腳為輸出模式
  pinMode(digit1, OUTPUT);
  pinMode(digit2, OUTPUT);
  pinMode(digit3, OUTPUT);
  pinMode(digit4, OUTPUT);

// 設置 PID 控制器參數
Setpoint = 50;
Input = 0;
Output = 0;

// 啟動 PID 控制器
myPID.SetMode(AUTOMATIC);
}

void loop() {
// 讀取馬達速度
Input = analogRead(A0);

// 更新 PID 控制器
myPID.Compute();

// 控制馬達速度
analogWrite(12, Output);

// 顯示 PID 控制器狀態
int integer_part = (int)Output;
int decimal_part = (int)((Output - integer_part) * 10);
digitalWrite(digit1, LOW);
digitalWrite(digit2, LOW);
digitalWrite(digit3, LOW);
digitalWrite(digit4, HIGH);
displayNumber(decimal_part);
delay(1);
digitalWrite(digit1, LOW);
digitalWrite(digit2, LOW);
digitalWrite(digit3, HIGH);
digitalWrite(digit4, LOW);
displayNumber(integer_part % 10);
delay(1);
digitalWrite(digit1, LOW);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, LOW);
digitalWrite(digit4, LOW);
displayNumber((integer_part / 10) % 10);
delay(1);
digitalWrite(digit1, HIGH);
digitalWrite(digit2, LOW);
digitalWrite(digit3, LOW);
digitalWrite(digit4, LOW);
displayNumber((integer_part / 100) % 10);
delay(1);
}

// 顯示數字
void displayNumber(int number) {
for (int i = 0; i < 8; i++) {
if (digit[number][i] == 1) {
digitalWrite(i + 15, HIGH);
} else {
digitalWrite(i + 15, LOW);
}
}
}



這個程式碼示範了如何使用 ESP32-PICO-D4 和 PID 控制器來控制馬達速度,同時在 4 位七段顯示器上顯示 PID 控制器輸出。

程式碼中,我們先初始化 PID 控制器和七段顯示器的引腳,然後設置 PID 控制器的參數並啟動它。

在主循環中,我們讀取馬達速度,更新 PID 控制器,並控制馬達速度。

最後,我們顯示 PID 控制器的輸出值在 4 位七段顯示器上。
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-8 12:38

回頂部