LedControl 庫說明文檔

LedControl 庫最初是為基于 8 位 AVR 處理器的 Arduino 板編寫的。但由于該代碼不使用處理器的任何復雜的內部功能,因此具有高度可移植性,并且應該在任何支持 和 功能的 Arduino(類似)板上pinMode()運行digitalWrite()?。

單個 MAX72XX Led 驅動器能夠控制 64 個 Led。該庫支持多達 8 個菊花鏈式 MAX72XX 驅動程序。控制 512 個 LED 對于大多數用途來說應該綽綽有余。

庫初始化

要將庫包含到 Arduino 代碼中,您必須編寫幾行初始化代碼。

將庫添加到您的草圖中

這與任何其他 Arduino 庫一樣工作,您可以使用?Include LibraryIDE 中的菜單功能,或者只需添加一個

#include "LedControl.h"

在草圖的頂部聲明。

創建 LedControl 變量

所有庫 API 函數都是通過類型變量調用的,?LedControl該變量應該在草圖的頂部定義,以便項目代碼的其余部分可以訪問它。

庫初始化的典型代碼如下所示:

/* 包含 LedControl 庫 */  
#include "LedControl.h"/* 創建一個新的 LedControl 變量。
* 我們使用 Arduino 上的引腳 12,11 和 10 作為 SPI 接口
* 引腳 12 連接到第一個 MAX7221 的 DATA IN 引腳
* 引腳 11 連接到第一個 MAX7221 的 CLK 引腳
* 引腳 10 連接到到第一個 MAX7221 的 LOAD(/CS) 引腳
* 只有一個 MAX7221 連接到 arduino 
*/   
LedControl  lc1 = LedControl ( 12 , 11 , 10 , 1 ); 

我們與 MAX72XX 器件通信的變量的初始化代碼有 4 個參數。前 3 個參數是 Arduino 上連接到 MAX72XX 的引腳號。這些可以是 arduino 上的任何數字 IO 引腳。在示例中12,引腳 、1110任意選擇。庫代碼不會以任何方式對引腳號進行完整性檢查以確保其?有效。傳遞一些愚蠢的東西(pin?123??),或者只是?錯誤的pin號會破壞代碼,而不會發出通知或錯誤消息。您不必將 IO 引腳初始化為輸出或將它們設置為特定狀態,庫將為您完成這些工作。

第四個參數LedControl(dataPin,clockPin,csPin,numDevices)是與此一起使用的級聯 MAX72XX 器件的數量LedControl。該庫可以通過單個變量尋址最多 8 個設備LedControl。添加到鏈中的每個設備都會帶來一些性能損失,但無論您設置多少個設備,庫代碼使用的內存量都將保持不變。由于LedControl無法尋址超過 8 個設備,因此此處僅允許使用 1..8 之間的值。

如果您的草圖需要控制超過 8 個 MAX72XX,則?LedControl需要創建另一個使用 arduino 板上 3 個不同引腳的變量。

#include "LedControl.h" 
// 為前 8 個設備創建一個 LedControl...   
LedControl  lc1 = LedControl ( 12 , 11 , 10 , 8 ); 
// ...以及接下來 8 個設備的另一個。   
LedControl  lc2 = LedControl ( 9,8,7,8 ) ; _ _ _ _ _ 

獲取連接設備的數量

無法從代碼中讀取 IO 引腳編號,但有一個函數可以獲取連接到LedControl.

/* 獲取連接到此 LedControl 的最大設備數。
* 返回 : 
* int 連接到此 LedControl 的設備數量 */  
int  LedControl : :getDeviceCount (); 

該函數用于循環訪問所連接的 MAX72XX 器件的完整列表。下面是一段代碼,用于將所有 MAX72XX 器件從省電模式切換到正常工作模式。即使shutdown(addr)稍后介紹該函數,這段代碼背后的想法也應該很清楚。

#include "LedControl.h"lc1=LedControl(12,11,10,5);void setup() { for(int index=0;index<lc1.getDeviceCount();index++) {lc1.shutdown(index,false); } 
} 

我們通過從 0 到 的索引迭代設備列表?getDeviceCount()-1。索引是每個設備的地址。該地址是每個在設備上設置功能或 (Led-) 值的函數的第一個參數。請注意,getDeviceCount()返回連接的設備數量,但 設備的地址從第一個設備的 0 開始,第二個設備的地址從 1 開始,最后一個設備的地址從?getDeviceCount()-10 開始。

省電模式

LED 點亮時會消耗相當多的能量。電池供電的設備需要一種節省電量的方法,可以在用戶不需要時關閉整個顯示屏。MAX72XX 支持電源關斷模式。

在關機模式下,設備會關閉顯示屏上的所有 LED,但數據會保留。當設備退出關閉模式時,相同的 LED 將像進入睡眠狀態之前一樣亮起。甚至可以在關閉模式期間發送新數據。當設備重新激活時,新數據將出現在顯示屏上。以下是7 段顯示屏上不可見倒計時的示例:

void countDown() { int i=9; lc.setDigit(0,(byte)i,false); //The digit '9' appears on the display delay(1000); //Go into shutdown mode lc.shutdown(0,true); //and count down silently while(i>1) { //data is updated, but not shownlc.setDigit(0,(byte)i,false); i--; delay(1000); } //Coming out of shutdown mode we have already reached '1' lc.shutdown(0,false);lc.setDigit(0,(byte)i,false); 
} 

這是方法的原型LedControl.shutdown(addr,status)

/* * Set the shutdown (power saving) mode for the device* Params :*   addr   The address of the display to control*   status If true the device goes into power-down mode. Set to false*          for normal operation.*/void shutdown(int addr, bool status);

注意:當 Arduino 上電時,始終MAX72XX處于關閉模式。

限制位數 (ScanLimit)

這是一種專家功能,大多數圖書館用戶并不真正需要。由于該庫將其初始化?MAX72XX?為安全的默認值,因此您不必僅僅為了讓您的硬件正常工作而閱讀本節

當創建新的 LedControl 時,它將激活所有設備上的所有 8 位數字。每個亮起的數字將由驅動數字的多路復用器電路打開 1/8 秒。如果您有任何理由限制掃描數字的數量,則 LED 會更頻繁地打開,因此會打開更長的時間。

將掃描限制設置為 4 的效果是,點亮的 LED 現在打開 1/4 秒,而不是標準的 1/8 秒。必須MAX72XX在較長的時間內為分段驅動器提供電流。

您應該仔細閱讀數據表的相關部分MAX72XX!實際上,通過選擇錯誤的電阻器組合,限制流過 LED 的電流和設備掃描的位數,可能會損壞 LED。調整掃描限制的唯一原因是顯示器看起來太暗。但這很可能是由于啟動時強度沒有提高。這是原型,供有需要的人使用:MAX72XXRSetsetScanLimit()

/* 設置要顯示的位數(或行數)。
* 有關掃描限制對顯示器亮度的副作用,請參閱數據表。
* 參數: * addr 要控制的顯示器的地址* limit 要顯示的位數*/ 
void setScanLimit ( int addr , int limit ) ;

設置顯示亮度

決定顯示器亮度的三個因素。

  • Rset限制流過 LED 的最大電流的電阻值。
  • 顯示器的掃描限制。(如果您閱讀了本節,您已經知道我建議將此選項保留為安全默認值。)
  • 以及一個允許通過軟件控制 LED 亮度的命令。

通過該setIntensity(int addr, int intensity)方法,LED 的亮度可以按 16 個離散步驟進行設置 (?0..15)。值越高,顯示越亮。大于 15 的值將被丟棄,而不改變亮度。即使是最低值也0不會完全關閉顯示屏。

/* Set the brightness of the display.* Params:*   addr the address of the display to control*   intensity the brightness of the display.
void setIntensity(int addr, int intensity); 

設備初始化

當創建新的庫時,LedControl庫將使用以下命令初始化硬件

  • 顯示清除
  • 強度設置為最小值
  • 設備處于省電模式
  • 激活設備上的最大位數

啟動時顯示空白可能是每個人都想要的。但當強度處于最低且設備處于關閉模式時,在啟動配置中不會點亮任何 LED。大多數用戶將在函數內進行自己的初始化setup()。下面是一段代碼,可用作創建一個模板,LedControl一旦顯示數據到達,該代碼就可以以中等亮度點亮 LED。

#include "LedControl.h"LedControl lc=LedControl(12,11,10,1);void setup() { //wake up the MAX72XX from power-saving modelc.shutdown(0,false); //set a medium brightness for the Ledslc.setIntensity(0,8); 
} 

LED矩陣

所有初始化代碼就位后,現在可以控制一些 LED 了。

圖像

清除顯示

該函數的名稱LedControl.clearDisplay(addr)已經暗示了它的作用。

/* 關閉顯示屏上的所有 LED。
* Params: 
* addr 要控制的顯示器的地址
*/  
void  clearDisplay ( int * addr ) ;  

所選設備上的所有 LED 均關閉。重要的是要了解這與保留數據的關閉模式不同。

控制單個 LED

這是打開或關閉單個 Led 的函數原型。

/* 設置單個 LED 的狀態。
* 參數 : 
* 顯示器的地址
* row Led 的行 (0..7) 
* col Led 的列 (0..7) 
* state 如果為 true,則 LED 打開,如果為 false,則打開off 
*/  
void  setLed ( int  addr ,  int  row ,  int  col ,  boolean  state ) ; 

addr和參數背后的想法state應該很清楚,但是rowcolumn參數指的是什么?這取決于矩陣MAX72XX和矩陣之間的接線。-libraryLedControl假定此示意圖中使用的設置:

圖像

矩陣中有 8 行(索引從 0..7 開始)和 8 列(索引也從 0..7 開始)。如果要點亮位于頂部第三行最右側的 Led,則2.7必須使用 Led 的索引作為行和列參數。

此代碼摘錄顯示了第一個 MAX72XX 器件上的 LED 數量設置情況

//打開addr=0處設備第3行第8列的LED
lc.setLed(0,2,7,true);
//現在 LED 位于第 0 行,從左側數第二個
lc.setLed(0,0,1,true);
延遲(500);
//關閉第一個LED燈(第二個保持打開狀態)
lc.setLed(0,2,7,false);

setLed()函數適合點亮幾個 LED,但如果需要更新更多 LED,則需要很多行代碼。因此,庫中還有兩個函數,可以使用單個命令控制完整的行和列。

控制矩陣的行

- 函數setRow(addr,row,value)有 3 個參數。第一個是我們已經熟悉的設備地址。第二個是需要更新的行,第三個是要為此行設置的值。

value參數采用 8 位寬字節,其中設置的每個位1?代表一個點亮的 LED,設置為0要關閉的 LED 的每個位。

例如,標記為紅色的 LED 將打開,所有其他 LED 將關閉。

圖像

要更新的行的索引為2(從頂部數)。必須將參數value?設置為字節值才能點亮 LED。最簡單的方法是將標準頭文件包含<binary.h>到您的草圖中。該值以二進制編碼寫入,是設置的位1和要打開的 LED 之間的精確映射。

//將此文件包含在草圖的頂部
<二進制.h>// ...省略初始化代碼...//設置第一個設備的第三行(索引=2)的LED
lc.setRow(0,2,B10110000);

當無法以二進制編碼指定值時,將每個位的十進制值映射到其影響的 Led 的簡單表會有所幫助。底部的兩行顯示要計算的示例的十進制值。

Led2.0Led2.1Led2.2Led2.3Led2.4Led2.5Led2.6Led2.7
Bit-Value1286432168421
Led On?YesNoYesYesNoNoNoNo
Row-Value128032160020

?

value=176 (128+32+16)

該語句更新了Arduino 附加的lc.setRow(0,2,176)第一行的第三行。MAX72XX

顯然?,對所有 LED 連續setRow()調用八次要快得多。setLed()a 的硬件MAX72XX?使得該函數也比下一節中介紹的函數setRow()快 8 倍 。setColumn()如果草圖代碼的性能是重要因素,請setRow()?盡可能使用該函數。

函數原型

/* 將一行中的所有 8 個 Led 設置為新狀態
* 參數:
* 顯示器的地址
* 要設置的行行 (0..7) 
* 每個位設置為 1 的值將點亮相應的 Led。  
*/  
void  setRow ( int  addr ,  int  row , 字節 值) ; 

控制矩陣的列

-setColumn()函數的工作方式與該命令類似setRow(),但會更新垂直列中的 8 個 LED。

同樣,紅色標記的 LED 燈將打開,所有其他 LED 燈將關閉。

圖像

這次,第 6 列底部的 4 個 LED 將被點亮。對于二進制編碼,值中最左邊的位指的是列頂部的 LED。

//將此文件包含在草圖的頂部
<二進制.h>// ...省略初始化代碼...//設置第一個設備的第三行(索引=2)的LED
lc.setRow(0,2,B00001111);

setRow()如果值的二進制編碼不是一種選擇,則與 參考資料部分中的表類似的表會有所幫助。

LED2.0LED2.1LED2.2LED2.3LED2.4LED2.5LED2.6LED2.7
位值1286432168421
帶領是的是的是的
行值128032160020

=15 (8+4+2+1)

函數原型:

/* 將一列中的所有 8 個 Led 設置為新狀態
* 參數:
* 顯示器的地址
* 要設置的列列 (0..7) 
* 每個位設置為 1 的值將點亮相應的 Led。  
*/  
void  setColumn ( int  addr ,  int  col , 字節 值) ; 

控制 7 段顯示器

圖像

在 7 段顯示器上打印數字

7 段顯示器最常見的用途是打印數字。LedControl 庫有一個函數,只需接受字節類型的參數并在指定列上打印相應的數字。數字的有效值為從015,以允許顯示十六進制值。大于 15(或負值)的值將被默默丟棄。該函數還提供了一個參數來打開或關閉列上的小數點。

以下是在顯示屏上以 4 位數字打印 int 值 (-999..999) 的代碼摘錄。

void printNumber(int v) {  int ones;  int tens;  int hundreds; boolean negative=false;if(v < -999 || v > 999)  return;  if(v<0) {  negative=true; v=v*-1;  }ones=v%10;  v=v/10;  tens=v%10;  v=v/10; hundreds=v;  if(negative) {  //print character '-' in the leftmost column  lc.setChar(0,3,'-',false);  } else {//print a blank in the sign column  lc.setChar(0,3,' ',false);  }  //Now print the number digit by digit lc.setDigit(0,2,(byte)hundreds,false);lc.setDigit(0,1,(byte)tens,false); lc.setDigit(0,0,(byte)ones,false); 
} 

該函數的原型:

/* Display a (hexadecimal) digit on a 7-Segment Display* Params:*  addr   address of the display*  digit  the position of the digit on the display (0..7)*  value  the value to be displayed. (0x00..0x0F)*  dp     sets the decimal point.  
*/  
void setDigit(int addr, int digit, byte value, boolean dp); 

- 參數digit必須在 0..7 范圍內,因為 MAX72XX 可以控制 7 段顯示器上最多 8 位數字。

在 7 段顯示器上打印字符

在 7 段顯示器上具有(視覺)意義的字符集有限。常見的用途是在-前面添加負值的字符以及表示整數十六進制值的 'A'..'F' 中的 6 個字符。

-setChar(addr,digit,value,dp)函數接受 7 位 ASCII 編碼范圍內的 char 類型值。由于可識別的模式有限,大多數定義的字符都會打印 -char?<SPACE>。但有相當多的字符在 7 段顯示器上有意義。

這是可打印字符集:

  • 0 1 2 3 4 5 6 7 8 9
  • A a(打印大寫字母)
  • B b(打印小寫)
  • C c(打印小寫)
  • D d(打印小寫)
  • E e(打印大寫字母)
  • F f(打印大寫字母)
  • H h(打印大寫字母)
  • L l(打印大寫字母)
  • P p(打印大寫字母)
  • -(減號)
  • . ,(點亮小數點)
  • _(下劃線)
  • <SPACE>(空白或空格字符)

十六進制字符 (?0..F) 已在字符值 0x00...0x0F 處重新定義。這使得混合數字和字符值成為可能。- 函數的字節值setDigit()可以與 一起使用setChar(),并將打印該值的十六進制表示形式。

該函數的原型看起來與顯示數字的函數原型非常相似。

/* Display a character on a 7-Segment display.* Params:*   addr  address of the display*   digit the position of the character on the display (0..7)*   value the character to be displayed.*   dp    sets the decimal point.  
*/ 
void setChar(int addr, int digit, char value, boolean dp);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/168207.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/168207.shtml
英文地址,請注明出處:http://en.pswp.cn/news/168207.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C練習題_3

一、單項選擇題&#xff08;本大題共20小題&#xff0c;每小題2分&#xff0c;共40分。在每小題給出的四個備選項中,選出一個正確的答案&#xff0c;并將所選項前的字母填寫在答題紙的相應位置上。 以下正確的C語言自定義標識符是() A. la B. 2a C. do D. a.12 2.在C語言中,錯…

C# 之對象與Xml序列化工具類

寫在前面 一個常用的對象與Xml序列化工具類&#xff0c;使用系統類庫System.Xml&#xff0c;序列化時需要注意只能將對象的公共字段和讀/寫屬性轉換為 XML。不轉換方法、索引器、私有字段或只讀屬性。另外XmlSerializer 類無法序列化ArrayList數組和List<T>數組。 using…

3、Qt使用windeploy工具打包可執行文件

新建一個文件夾&#xff0c;把要打包的可執行文件exe拷貝過來 點擊輸入框&#xff0c;復制一下文件夾路徑 點擊電腦左下角&#xff0c;找到Qt文件夾&#xff0c; 點擊打開 “Qt 5.12.0 for Desktop” &#xff08;我安裝的是Qt 5.12.0版本&#xff09; 輸入“cd bin”&#xff…

springsecurity5.7.x和springsecurity6.x配置文件對比

springsecurity5和springsecurity6如何要實現多種登錄方式&#xff0c;自定義登錄方式都是一樣的操作步驟&#xff0c;主要有四個步驟。 一、自定義登錄用戶實體實現springsecurity中的UserDetails接口 二、自定義登錄用戶實現類實現springsecurity中的UserDetailsService接口 …

vivado產生報告閱讀分析20-QOR

Report QoR Suggestions report_qor_suggestions 命令是處理 QoR 建議對象時使用的主要命令。 QoR 建議對象會創建命令和屬性來改善設計的時序性能&#xff08; 欲知詳情 &#xff0c; 請參閱 QoR 建議 &#xff09; 。 report_qor_suggestions 命令可執行兩項任務 &am…

代碼隨想錄-刷題第七天

454. 四數相加II 題目鏈接&#xff1a;454. 四數相加II 思路&#xff1a;哈希法。使用map集合&#xff0c;key存放ab的值&#xff0c;value存放ab出現的次數。使用兩層循環&#xff0c;循環前兩個數組&#xff0c;找出ab&#xff0c;對map賦值。再用兩層循環&#xff0c;遍歷…

唯創知音WT2605C-A001音頻藍牙語音芯片:小巧體積,高品質音頻播放的創新

在現今的科技繁榮時代&#xff0c;音頻技術作為人類感知世界的重要方式&#xff0c;已經變得越來越重要。唯創知音WT2605C-A001音頻藍牙語音芯片&#xff0c;以其卓越的特性和創新性&#xff0c;正在為音頻技術領域帶來一場革命。 首先&#xff0c;這款芯片以其極小的體積—僅…

chatGPT4機器學習數據后最終保留在機器里的是什么? 機器是怎么產生智能的? TensorFlow沒有直接開發出類似GPT-4這樣的模型

機器學習數據后最終保留在機器里的是機器學習模型。機器學習模型是機器學習系統中的核心&#xff0c;它是機器學習系統能夠進行推理和預測的基礎。 機器學習模型通常由參數組成。參數是機器學習模型的權重和偏差。機器學習系統通過訓練來學習這些參數。訓練是指讓機器學習系統…

webpack 打包優化

在vue.config.js中配置 下載 uglifyjs-webpack-plugin 包 const { defineConfig } require("vue/cli-service"); var path require("path");module.exports defineConfig({transpileDependencies: true,filenameHashing: false, // 去除Vue打包后.cs…

0003Java程序設計-ssm基于微信小程序的家教信息管理系統

文章目錄 摘要目 錄系統實現開發環境 編程技術交流、源碼分享、模板分享、網課分享 企鵝&#x1f427;裙&#xff1a;776871563 摘要 本文講述了基于微信小程序的家教信息管理系統的設計與實現。結合線上管理的特點&#xff0c;分析了家教信息管理系統的現狀&#xff0c;給出…

外匯天眼:香港監管機構對AMTD Global Markets Limited啟動法律訴訟

香港證監會&#xff08;SFC&#xff09;已經啟動了法律程序&#xff0c;要求首次審裁法院調查AMTD Global Markets Limited&#xff08;AMTD&#xff0c;目前以orientiert XYZ Securities Limited為名&#xff09;及其前高管在與首次公開發行&#xff08;IPO&#xff09;相關的…

【經典小練習】修改文件中的數據

文章目錄 &#x1f339;例子&#x1f33a;思路&#x1f6f8;方法一?報錯解決 &#x1f6f8;方法二 &#x1f339;例子 文本文件中有下面的數據 2-1-9-4-7-8 將文件中的數據進行排序&#xff0c;變成下面的數據 1-2-4-7-8-9 &#x1f33a;思路 要對這些數據進行排序&#xf…

智慧樓宇可視化視頻綜合管理系統,助力樓宇高效安全運行

隨著互聯網技術的進步和發展&#xff0c;智能化的樓宇建設也逐步成為人們選擇辦公場所是否方便的一個重要衡量因素。在智能化樓宇中&#xff0c;安全管理也是重要的一個模塊。得益于互聯網新興技術的進步&#xff0c;安防視頻監控技術也得到了快速發展并應用在樓宇的安全管理中…

Python武器庫開發-前端篇之html概述(二十八)

前端篇之html概述(二十八) html概述 HTML5是構建Web內容的一種語言描述方式。HTML5是互聯網的下一代標準&#xff0c;是構建以及呈現互聯網內容的一種語言方式&#xff0e;被認為是互聯網的核心技術之一。HTML產生于1990年&#xff0c;1997年HTML4成為互聯網標準&#xff0c;…

虹科Pico汽車示波器 | 汽車免拆檢修 | 2011款瑞麒M1車發動機起動困難、加速無力

一、故障現象 一輛2011款瑞麒M1車&#xff0c;搭載SQR317F發動機&#xff0c;累計行駛里程約為10.4萬km。該車因發動機起動困難、抖動、動力不足、熱機易熄火等故障進廠維修。用故障檢測儀檢測&#xff0c;發動機控制單元&#xff08;ECU&#xff09;中存儲有故障代碼“P0340相…

【Python 訓練營】N_2 打印乘法口訣表

題目 借助格式化輸出長方形、左上三角形、右上三角形、左下三角形、右下三角形5種格式的九九乘法口訣表。 答案 長方形格式 for i in range(1,10):for j in range(1,10):print(%d*%d%2d%(i,j,i*j),end ) # %2d 整數站兩個字節print()左上三角形 for i in range(1,10):for …

Vue框架學習筆記——事件處理

文章目錄 前文提要事件處理的解析過程樣例代碼如下&#xff1a;效果展示圖片&#xff1a;v-on:click"響應函數"v-on:click簡寫形式響應函數添加響應函數傳參占位符"$event"注意事項 前文提要 本人僅做個人學習記錄&#xff0c;如有錯誤&#xff0c;請多包…

2、git進階操作

2、git進階操作 2.1.1 分支的創建 命令參數含義git branch (git checkout -b)<new_branch> <old_branch>表示創建分支-d <-D>刪除分支 –d如果分支沒有合并&#xff0c;git會提醒&#xff0c;-D強制刪除-a -v查看分支-m重新命名分支commit id從指定的commi…

如何打造“面向體驗”的音視頻能力——對話火山引擎王悅

編者按&#xff1a;隨著全行業視頻化的演進&#xff0c;我們置身于一個充滿創新與變革的時代。在這個數字化的浪潮中&#xff0c;視頻已經不再只是傳遞信息的媒介&#xff0c;更是重塑了我們的交互方式和體驗感知。作為字節跳動的“能力溢出”&#xff0c;火山引擎正在飛速奔跑…

【React】路徑別名配置

路徑解析配置&#xff08;webpack&#xff09;&#xff0c;把 / 解析為 src/路徑聯想配置&#xff08;VsCode&#xff09;&#xff0c;VSCode 在輸入 / 時&#xff0c;自動聯想出來對應的 src/下的子級目錄 1. 路徑解析配置 安裝craco npm i -D craco/craco項目根目錄下創建配…