第1步:組件
-Arduino UNO (x1)
-74HC595移位寄存器( x2)
-LEDs (x16)
-220omh電阻器(x16)
-多根導線
-兩個面包(一個帶有400針,另一個帶有830)
-電位器,用于控制亮度(可選)
第2步:電路
進行電路(見上文)并按如下方式連接第一個移位寄存器:
-GND(引腳8)接地
-Vcc(引腳16)到5V
-OE(引腳13)接地
- MR(引腳10)至5V
-DS(引腳14)至Arduino引腳11
-SH_CP(引腳11)至Arduino引腳12
-ST_CP (引腳12)到Arduino引腳8
連接第二個移位寄存器完全相同,但是將DS(引腳14)連接到第一個寄存器引腳9。之后,將引腳:從兩個寄存器連接到LED的1、2、3、4、5、6、7和15。這種連接使所有引腳始終處于活動狀態且可尋址,但是當Arduino通電時,某些LED可能會打開。解決方案是將MR(引腳10)和OE(引腳13)直接連接到Arduino,但是這樣一來,您必須犧牲2個Aurduino引腳。
要添加更多的移位寄存器,就像第二個一樣寄存器。始終將MR和OE引腳直接連接到Arduino,將DS引腳直接連接到先前的寄存器。
如果要調節LED的亮度,請按照上圖所示連接電位計以控制所有LED的電阻。
第3步:代碼
現有代碼旨在用于有限數量的移位寄存器和沒有通用的功能/方法可以做到這一點。作為軟件開發人員,這對我來說是不可接受的,并且我習慣于使所有內容盡可能地動態,沒有限制。我重新設計了現有代碼示例,以允許您使用無限數量的移位寄存器。參見下面的代碼:
int numOfRegisters = 2;
byte * registerState;
void setup(){
//初始化數組
registerState =新字節[numOfRegisters];
for(size_t i = 0; i
registerState [i] = 0;
}
//。.. setup
}
void regWrite(int pin,bool state){
//確定寄存器int reg = pin/8;
//確定實際寄存器的
int actualPin = pin-(8 * reg);
//開始會話
digitalWrite(latchPin,LOW);
for(int i = 0; i
//獲取寄存器的實際狀態
字節*狀態=?isterState[i];
//更新狀態
if(i == reg){
bitWrite(* states,ActualPin,state);
}
//寫入
shiftem(dataPin,clockPin,MSBFIRST,* sta TES);
}
//結束會話
digitalWrite(latchPin ,HIGH);
}
第4步:最終代碼
我將完整的源代碼發布在github上,因為這里不可讀:
https://github.com/jr2002008/Arduino-74HC595-shift-registers/blob/master/ArduinoLEDsWithShiftRegisters/ArduinoLEDsWithShiftRegisters.ino
在最終代碼中,我為這16個LED添加了幾種效果。上面的視頻演示了這些效果。如果要添加更多的LED,請按照前面所述連接更多的寄存器,并在代碼中更改 numOfRegisters 的值(還可以調整效果的邏輯)。
您也可以使用此代碼不僅僅用于LED,如果您只是想為Arduino使用更多引腳,請使用 regWrite(int引腳,布爾狀態)函數為任何引腳寫入狀態,并且沒有限制多少移位寄存器您正在使用,只需更改 numOfRegisters 的值,其他所有操作都會自動執行。
責任編輯:wv
-
led
+關注
關注
242文章
23362瀏覽量
663245 -
移位寄存器
+關注
關注
3文章
259瀏覽量
22344 -
74HC595
+關注
關注
7文章
191瀏覽量
30945 -
Arduino
+關注
關注
188文章
6477瀏覽量
187842
發布評論請先 登錄
相關推薦
74hc595的功能及作用是什么
74HC595常用移位寄存器芯片資料包
74HC595PW(nexperia)移位寄存器中文參數_功能圖_引腳圖_封裝尺寸
![<b class='flag-5'>74HC595</b>PW(nexperia)<b class='flag-5'>移位寄存器</b>中文參數_功能圖_引腳圖_封裝尺寸](https://file1.elecfans.com//web2/M00/05/E5/wKgZombf6Q6AVtUDAAD8v25Z-7o106.jpg)
移位寄存器右移是怎么移位的
74HC595D/74HCT595D(nexperia)移位寄存器_中文參數_功能特點_工作原理
![<b class='flag-5'>74HC595</b>D/<b class='flag-5'>74HCT595</b>D(nexperia)<b class='flag-5'>移位寄存器</b>_中文參數_功能特點_工作原理](https://file1.elecfans.com//web2/M00/EC/19/wKgZomZhFz6AZU6lAAFYFn40Wu8678.jpg)
SN74HC595-EP帶3態輸出寄存器的8位移位寄存器數據表
![SN<b class='flag-5'>74HC595</b>-EP帶3態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
采用三態輸出寄存器的 8 位移位寄存器SN74HC595B數據表
![采用三態輸出<b class='flag-5'>寄存器</b>的 8 位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74HC595</b>B數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
帶3態輸出寄存器的8位移位寄存器SN74AHC595數據表
![帶3態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74AHC595</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SN74HCT595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SN<b class='flag-5'>74HCT595</b> 8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SN74HCT595-Q1 汽車類8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SN<b class='flag-5'>74HCT595</b>-Q1 汽車類8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的CD74HC595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的CD<b class='flag-5'>74HC595</b> 8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有施密特觸發輸入和三態輸出寄存器的8位移位寄存器SN74HCS595數據表
![具有施密特觸發輸入和三態輸出<b class='flag-5'>寄存器</b>的8位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74HCS595</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 8 位移位寄存器SN74LV595A-Q1數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 8 位<b class='flag-5'>移位寄存器</b>SN<b class='flag-5'>74LV595</b>A-Q1數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的SN74LV595A 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的SN<b class='flag-5'>74LV595</b>A 8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有三態輸出寄存器的 SNx4HC595 8位移位寄存器數據表
![具有三態輸出<b class='flag-5'>寄存器</b>的 SNx4<b class='flag-5'>HC595</b> 8位<b class='flag-5'>移位寄存器</b>數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論