步驟1:制作該項目所需的條件
硬件:
4個74HC595移位寄存器
4個16引腳DIP IC插座
16個1N4001二極管
2個10K電阻
1330電阻
1個5mm LED
該軟件:
Arduino IDE
步驟2:關于主要組件(74HC595)
硬件部分它非常簡單,并且基于74HC595移位寄存器,因此是一種簡便且經濟的方法,可以增加開發板上的數字I/O引腳數量。這種集成電路本質上是數字的,就像Arduino上的數字引腳一樣,這意味著它們只能讀取或寫入高或低邏輯電平,不應將其用于從模擬傳感器或電位計讀取數據。
我們可以找到許多基于這種移位寄存器的硬件和電路,例如Adafruit電機護罩,7段模塊。該電路的使用非常方便,并且是多路復用的一種很好的動手方法,它是一種有效的技術,用于控制連接在一起的許多組件。
您可以在線訂購5張74HC595圖片,價格低于6 $:亞馬遜
那么如何使用74HC595!
該電路提供了三個接口引腳,分別是SHIFT_CLOCK(SH_CP),LATCH_CLOCK(ST_CP)和數據引腳(DS)。
第一步是將數據存儲在存儲寄存器中,為此,我們需要將鎖存器引腳設置為LOW以禁用輸出,這樣當我們向74HC595發送新數據時,輸出引腳將保持不變。
下一步是通過對時鐘引腳施加脈沖并從數據引腳發送新數據的每個字節,逐位串行發送數據。
最后一步是將閂鎖引腳設置為高電平。這樣,寄存器將更新(并行輸出)。
您可以在其數據表中找到有關該集成電路的更多詳細信息。
我只是在解釋如何移位寄存器可以工作,但是,我們將不做所有這些工作,因為我們將使用Arduino SPI庫來控制整個過程,并且不要忘記您將擁有一個庫來控制模塊,而這只是有關移位寄存器的最后信息它具有8個并行輸出(Q0-Q7)和一個串行輸出(Q7‘)以進行級聯。
步驟3:硬件設計(電路)
IOExtension模塊基于四個移位寄存器(74HC595),可提供16個數字輸入和16個數字輸出,您只需在開發板上使用四個引腳即可控制模塊,另外還需要Vcc和Gnd引腳
為了具有32個I/O引腳,我們將使用四個移位寄存器(74HC595),如圖所示C。四個寄存器應具有同步的數據并同時更新所有輸出和輸入,這就是為什么我們應該將所有LATCH_CLOCK引腳以及所有SHIFT_CLOCK都連接在一起,但是第一個寄存器的Data引腳將連接到的原因您的Arduino開發板和其余寄存器將通過串行輸出(Q7’)相互連接,這意味著將第一個移位寄存器的串行輸出連接至下一個移位寄存器的數據引腳,依此類推。
我強烈推薦easyEDA網站制作您的PCB。
但是什么是easyEDA!
這是一個免費的在線電子設計自動化社區,允許創建,測試和編輯
在此處查找指向easyEDA平臺的鏈接。
此在線程序在所有平臺(甚至是android)上均受支持,借助easyEDA,您可以為文檔制作Schematic Capture,電路仿真,在線PCB設計,可導入PCB和原理圖文件,因此從這一點上我們可以理解,我們可以在此在線設計器中創建PCB,也可以僅使用其他軟件來制造PCB,然后將gerber文件上傳到easyEDA進行訂購。
協同設計是最好的easyEDA的一部分,您可以使用公共或私人訪問權限輕松協作并就設計發表評論。社區提供了完善的云開發,但這還不是全部,我們仍然擁有這個出色的Google chrome擴展,可以讓您隨時了解所有聊天伙伴和合作伙伴的活動。
登錄后,開始一個新項目給它起個名字并選擇其隱私權,別忘了簡短的描述對您的合作伙伴總有好處,然后自動協助將指導您從選項和工具入手。在這個項目中,我們將使電路如圖所示。 easyEDA庫中有一些不可用的組件,例如74hc595移位寄存器,因此您應該在其他公共項目中進行搜索,只需寫下標簽并單擊搜索,當找到它時,選擇它,然后將其放在空白表中即可,但是您需要封裝表示形式以完成PCB設計,因此請單擊封裝的空白區域并進行更新。
完成原理圖后,您可以為文檔下載漂亮的PDF或圖像。關于PCB,單擊“將項目轉換為PCB”,您將獲得適合您的電路的PCB,我在這個平臺上真正喜歡的是它可以為您提供所需的組件,因此可以按您希望的方式放置它們。 easyEDA解決了手動路由的問題,使您只需單擊一下即可制作自動路由器。
完成任務后,您可以添加一些選項,例如圖像以改善外觀,并添加一些指示器標簽,然后如果要為PCB下訂單,請單擊制造輸出按鈕。我們的模塊每5張圖片不到30美元,這是一個不錯的購買價格。
PCB收到很好
僅僅6天,我就收到了訂單,給我留下了深刻的印象
第4步:軟件(庫)
IOGA擴展庫是由MEGA DAS社區開發的,目的是促進使用同一社區制造的數字擴展模塊(基于74HC595換檔注冊人)。
這是一個Github鏈接,用于下載該庫。
此庫包含所有必需的API,可以肯定地將這些庫添加到您的libreries目錄中,然后將它們用Arduino IDE編寫的代碼中使用。 。該軟件包還包含示例文件,您可以在其中找到一些基本示例來演示如何將模塊連接到開發板上以及如何利用API(例如DigitalRead和DigitalWrite示例),這些API表現出與Arduino digitalRead和digitalWrite API相同的行為。/p》
DigitalRead示例:
#include//包含MegaDAS_IOExtension頭文件
const int SH_CP = 13;//13或ICSP-3(適用于Arduino Uno,Nano,Leonardo和101)52或//ICSP-3(適用于Arduino Mega2560和Mega1280)
const int DS = 11;//11或ICSP-4(適用于Arduino Uno,Nano,Leonardo和101)51或//ICSP-4(適用于Arduino Mega2560和Mega1280)
const int ST_CP = 3;
const int IN_P = 4;
const int LED = 13;
IOExtension myExt(SH_CP,DS,ST_CP,IN_P);//創建實例并命名為您想要的任何名稱(在此示例中,實例為myExt)
void setup(){
pinMode(LED,OUTPUT);//將LED引腳配置為輸出引腳
}
void loop(){
if(myExt.DigitalRead(1)== HIGH)//讀取擴展模塊digitalWrite(LED,HIGH)的第一個輸入引腳//如果擴展輸入為HIGH
else
digitalWrite(LED,LOW),則將LED輸出設置為HIGH;//如果擴展輸入為低,則將LED輸出設置為低
}
DigitalWrite示例:
#include//包含MegaDAS_IOExtension頭文件
const int SH_CP = 13;//13或ICSP-3(適用于Arduino Uno,Nano,Leonardo和101)52或//ICSP-3(適用于Arduino Mega2560和Mega1280)
const int DS = 11;//11或ICSP-4(用于Arduino Uno,Nano,Leonardo和101)51或
//ICSP-4(用于Arduino Mega2560和Mega1280)
const int ST_CP = 3;
const int IN_P = 4;
const int LED = 2;
IOExtension myExt(SH_CP,DS,ST_CP,IN_P);//創建實例并命名為所需名稱(在此示例中,實例為myExt)
void setup(){pinMode(LED,OUTPUT);//將LED引腳配置為輸出引腳}
void loop(){
myExt.DigitalWrite(LED,HIGH);//將第五個擴展模塊引腳設置為HIGH
digitalWrite(LED,HIGH);//將第五個Arduino板引腳設置為HIGH
delay(1000);
myExt.DigitalWrite(LED,LOW);//將第五個擴展模塊引腳設置為HIGH
digitalWrite(LED,LOW);//將第五個Arduino板引腳設置為HIGH
delay(1000);
}
我們試圖確保您不會發現任何編碼錯誤經過大量示例和不同用途組合測試后,由該庫引起的。
該庫允許用戶編寫最少的代碼來控制所有輸入和輸出,因此僅使用兩個簡單的指令(例如DigitalRead(Pinx)或DigitalWrite(Pinx,value))就可以直接使模塊運行并以肯定的方式確定MEGA DAS社區創建了這個Arduino庫,以通過一些示例來解釋該模塊的使用。
步驟5:進行一些測試
按照上面的說明,我們得到了令人滿意的結果,我們可以在沒有任何問題的情況下使用新的GPIO引腳。
-
引腳
+關注
關注
16文章
1195瀏覽量
50429 -
74HC595
+關注
關注
7文章
191瀏覽量
30849 -
Arduino
+關注
關注
188文章
6469瀏覽量
186983
發布評論請先 登錄
相關推薦
評論