在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于移位寄存器的發(fā)光二極管立方體(4*4)編寫代碼

電子設(shè)計(jì) ? 來源:電路城 ? 作者:電路城 ? 2021-05-21 17:49 ? 次閱讀

該項(xiàng)目主要是為帶有移位寄存器的發(fā)光二極管立方體(4*4)編寫代碼,為立方體創(chuàng)造不同的模式。

硬件組件:

Arduino Nano R3

移位寄存器75HC595

瞬時(shí)按鈕開關(guān)

發(fā)光二極管

4*4立方體:

該立方體有16條腿和4排的立方體。Les s把這些行叫做層。如何將這16條支路連接到Arduino而不占用其所有引腳的最簡(jiǎn)單方法是使用移位寄存器75HC595。

基于移位寄存器的發(fā)光二極管立方體(4*4)編寫代碼

(移位寄存器75HC595)

將立方體的前8個(gè)引腳(1-8)連接到第一個(gè)移位寄存器(引腳Q0-Q7),并將其他8個(gè)引腳(9-16)連接到另一個(gè)引腳,如俯視圖中的表格所示:

基于移位寄存器的發(fā)光二極管立方體(4*4)編寫代碼

(俯視立方體的腿)

下一步是用Arduino連接移位寄存器的引腳,如下所示:

引腳8(兩個(gè)移位寄存器/ GND)至阿爾杜伊諾的接地引腳

第一移位寄存器的引腳9 (Q7)至第二移位寄存器的引腳14(數(shù)據(jù))

引腳10(兩個(gè)移位寄存器/復(fù)位)至Arduino的引腳8

引腳11(兩個(gè)移位寄存器/時(shí)鐘)至Arduino的引腳9

引腳12(兩個(gè)移位寄存器/鎖存器)至Arduino的引腳10

引腳14(第一個(gè)移位寄存器/數(shù)據(jù))至Arduino的引腳11

引腳16(兩個(gè)移位寄存器/ VCC)至Arduino的5V引腳

最后一步是用Arduino連接立方體的層:

引腳4 -第0層(通過100歐姆電阻

引腳5 -第1層(通過100歐姆電阻)

引腳6 -第2層(通過100歐姆電阻)

引腳7 -第3層(通過100歐姆電阻)

(立方體的底部)

控制led

一層中的每個(gè)led都由一個(gè)數(shù)字表示,如下表所示:

基于移位寄存器的發(fā)光二極管立方體(4*4)編寫代碼

(打開指示燈的值)

所以要打開圖層第二行的第二個(gè)led,就會(huì)設(shè)置layer = 32。要打開前兩個(gè)led,layer = 1 + 2 = 3。要打開第一行l(wèi)ed,layer = 1 + 2 + 4 + 8 = 15。

如果想將循環(huán)中的光穿過層中的所有LED,在第一步中,設(shè)置layer=b000000000000001=1,然后在循環(huán)中,將通過設(shè)置layer=layer《《1來移動(dòng)該位。或者可以設(shè)置layer=(1《《count)并在循環(huán)中增加“count”。

主回路:

當(dāng)知道如何在一層中設(shè)置led時(shí),想要控制4層。雖然只能向我們的2個(gè)移位寄存器發(fā)送關(guān)于1層的信息,但使用Arduino的主循環(huán)來非常快速地打開和關(guān)閉循環(huán)中的層,它們將在同一時(shí)刻全部改變。顯示圖層值的代碼非常簡(jiǎn)單:

SetShiftReg(layer[k]); //將層數(shù)據(jù)發(fā)送到移位寄存器

bitClear(PORTD, 4 + k); //啟用“層k”

delay(1); //對(duì)LED亮度很重要

PORTD |= B11110000; //關(guān)閉圖層

k++; if (k 》 3) k = 0; //在循環(huán)中再增加一層

在該項(xiàng)目中,使用按鈕(與接地和Arduino的引腳2連接)來改變創(chuàng)建的模式。按下按鈕設(shè)置“開始”。這個(gè)開始采用并初始化下一個(gè)模式。

然后,循環(huán)在“速度時(shí)間”值中設(shè)置的每一個(gè)時(shí)間(以毫秒為單位)后啟動(dòng)選定的模式。

關(guān)于主循環(huán)和按鈕的標(biāo)簽

#define buttonPin 2

unsigned int layer[4] = {0, 0, 0, 0}; //65535填充層

byte k = 0;

bool start = true;

unsigned long delayTime;

int speedTime = 0;

int count;

void setup() {

InitializeShiftReg();

InitializeMyLedCube();

}

void InitializeMyLedCube() {

DDRD = B11110000; //引腳D0-D3作為輸入,D4-D7作為輸出

PORTD |= B11110000; //關(guān)閉圖層

pinMode(buttonPin, INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(buttonPin), PushButton, FALLING);

delayTime = millis();

}

byte patternNum = 28;

byte pattern = patternNum - 1;

void loop() {

if (start) {

detachInterrupt(digitalPinToInterrupt(buttonPin));

delay(500); //等待釋放按鈕

pattern++;

if (pattern 》 patternNum) pattern = 1;

attachInterrupt(digitalPinToInterrupt(buttonPin), PushButton, FALLING);

count = 0;

}

if (((millis() - delayTime) 》 speedTime) || start) {

switch (pattern) {

case 1: LayersUpDown(); break;

case 2: FallingDot(); break;

case 3: Rain(); break;

case 4: AllCube(); break;

case 5: Cut(); break;

case 6: Cube(); break;

case 7: Diagonal(); break;

case 8: Mixer(); break;

case 9: Random(); break;

case 10: FallingLayer(); break;

case 11: LayerCut(); break;

case 12: Circle(); break;

case 13: RandomWay(); break;

case 14: SmallCube(); break;

case 15: RandomWayCube(); break;

case 16: GrowingCube(); break;

case 17: FallingLayers(); break;

case 18: GrowingLine(); break;

case 19: CircleEdges(); break;

case 20: CircleSide(); break;

case 21: RandomWayLine(); break;

case 22: RandomWaySide(); break;

case 23: DJCube(); break;

case 24: FillingCube(); break;

case 25: NanoBuilding(); break;

case 26: Curve(); break;

case 27: Snake(); break;

case 28: Julka(); break;

default: break;

}

delayTime = millis();

}

//此部分顯示在函數(shù)中設(shè)置的圖層

SetShiftReg(layer[k]); //將層數(shù)據(jù)發(fā)送到移位寄存器

bitClear(PORTD, 4 + k); //啟用“層k”

delay(1); //對(duì)LED亮度很重要

PORTD |= B11110000; //關(guān)閉圖層

k++; if (k 》 3) k = 0; //在循環(huán)中再增加一層

}

void PushButton() {

start = true;

}

“移位寄存器”標(biāo)簽:

#define latchPin 10 //端口 B2

#define clockPin 9 //端口 B1

#define dataPin 11 //端口B3

#define resetPin 8 //端口 B0

void InitializeShiftReg() {

DDRB |= B1111; //引腳D8-D11作為輸出

PORTB |= B0001; //將引腳重置為高

}

void SetShiftReg(unsigned int value) {

bitClear(PORTB, 2); //數(shù)字寫入(latchPin, LOW);

shiftOut(dataPin, clockPin, MSBFIRST, value 》》 8);

shiftOut(dataPin, clockPin, MSBFIRST, value);

bitSet(PORTB, 2); //數(shù)字寫入(latchPin, HIGH);

}

創(chuàng)建模式:

每次在“速度時(shí)間”值中設(shè)置模式的開始后,Arduino的主循環(huán)都會(huì)啟動(dòng)選定的模式。換句話說,一個(gè)模式的函數(shù)總是只改變一次層,但是主循環(huán)會(huì)重復(fù)多次。

以Rain()模式為例:

void Rain() {

if (start) {

start = false; speedTime = 200;

ClearLayers();

}

layer[0] = layer[1];

layer[1] = layer[2];

layer[2] = layer[3];

layer[3] = 1 《《 random(16);

}

只有當(dāng)打開模式時(shí),“開始”部分才會(huì)啟動(dòng)一次。它設(shè)置速度時(shí)間并關(guān)閉所有l(wèi)ed。然后,總是隨機(jī)打開頂層16個(gè)led中的一個(gè),在這個(gè)循環(huán)中,把它移到底層。
責(zé)任編輯:pj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7246

    瀏覽量

    91110
  • 發(fā)光二極管
    +關(guān)注

    關(guān)注

    13

    文章

    1214

    瀏覽量

    67318
  • 移位寄存器
    +關(guān)注

    關(guān)注

    3

    文章

    287

    瀏覽量

    22657
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    紫外發(fā)光二極管發(fā)光原理 紫外發(fā)光二極管的結(jié)構(gòu)

    紫外發(fā)光二極管是指可發(fā)出波長(zhǎng)約400nm的近紫外光的發(fā)光二極管(led)。
    的頭像 發(fā)表于 02-26 16:03 ?3674次閱讀
    紫外<b class='flag-5'>發(fā)光二極管</b>的<b class='flag-5'>發(fā)光</b>原理 紫外<b class='flag-5'>發(fā)光二極管</b>的結(jié)構(gòu)

    發(fā)光二極管型號(hào)有哪些_發(fā)光二極管型號(hào)大全

    `發(fā)光二極管隨著科技的不斷進(jìn)步,工業(yè)化程度也在不斷的提升,現(xiàn)在高科技產(chǎn)品被大量的使用,相信大家對(duì)于紅外發(fā)光二極管一定不會(huì)陌生,紅外發(fā)光二極管指的就是一種能發(fā)出紅外線的二極管,比較常見的
    發(fā)表于 04-03 11:33

    發(fā)光二極管型號(hào)有哪些_發(fā)光二極管型號(hào)大全

    `發(fā)光二極管隨著科技的不斷進(jìn)步,工業(yè)化程度也在不斷的提升,現(xiàn)在高科技產(chǎn)品被大量的使用,相信大家對(duì)于紅外發(fā)光二極管一定不會(huì)陌生,紅外發(fā)光二極管指的就是一種能發(fā)出紅外線的二極管,比較常見的
    發(fā)表于 09-07 11:29

    74HC595點(diǎn)亮8個(gè)發(fā)光二極管實(shí)驗(yàn)?zāi)康?/a>

    的擴(kuò)展點(diǎn)亮8個(gè)發(fā)光二極管按照 1011 0001調(diào)整燈的亮滅2. 知識(shí)點(diǎn)8位移位寄存器08-74HC595各個(gè)針腳功能如下Vin :芯片高電平輸入端(電源)GND:芯片接地端(接地)OE:使能端,接地才能正常工作,一般情況下接地MR:一般情況下接高電平,接低電平會(huì)重置0~
    發(fā)表于 12-07 10:05

    發(fā)光二極管

    發(fā)光二極管 發(fā)光二極管(LED)通常用元素
    發(fā)表于 09-17 09:25 ?1004次閱讀

    閃爍式發(fā)光二極管

    閃爍式發(fā)光二極管 閃爍式發(fā)光二極管是一種光電結(jié)合的器件,它是把CMOS-LED 技術(shù)應(yīng)用到發(fā)光二極管上而制成的。閃爍式發(fā)光二極管的外形與普通發(fā)光二
    發(fā)表于 09-19 17:40 ?6272次閱讀

    二極管-發(fā)光二極管

    二極管-發(fā)光二極管   發(fā)光二極管簡(jiǎn)稱為
    發(fā)表于 11-07 09:06 ?1906次閱讀

    什么是發(fā)光二極管

    什么是發(fā)光二極管              發(fā)光二極管功耗小,噪
    發(fā)表于 12-29 11:22 ?973次閱讀

    發(fā)光二極管(LED),發(fā)光二極管(LED)是什么意思

    發(fā)光二極管(LED),發(fā)光二極管(LED)是什么意思 發(fā)光二極管(LED)的發(fā)光原理可以用PN結(jié)的能帶結(jié)構(gòu)來解釋:當(dāng)導(dǎo)帶中的電子與價(jià)帶中的空穴
    發(fā)表于 02-27 16:14 ?4323次閱讀

    發(fā)光二極管的原理是什么?

    發(fā)光二極管的原理是什么? 發(fā)光二極管是一種特殊的二極管。和普通的二極管一樣,發(fā)光二極管由半導(dǎo)體芯片組成,這些半導(dǎo)體材料會(huì)
    發(fā)表于 02-27 16:17 ?6113次閱讀

    移位寄存器,移位寄存器是什么意思

    移位寄存器,移位寄存器是什么意思 移位寄存器_
    發(fā)表于 03-08 14:50 ?1.8w次閱讀

    有機(jī)發(fā)光二極管_什么是有機(jī)發(fā)光二極管

    本內(nèi)容介紹了什么是有機(jī)發(fā)光二極管,有機(jī)發(fā)光二極管的概念,有機(jī)發(fā)光二極管的結(jié)構(gòu)及優(yōu)勢(shì),詳細(xì)的全面的介紹有機(jī)發(fā)光二極管
    發(fā)表于 05-15 14:55 ?8216次閱讀
    有機(jī)<b class='flag-5'>發(fā)光二極管</b>_什么是有機(jī)<b class='flag-5'>發(fā)光二極管</b>

    移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途

    移位寄存器是一個(gè)具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移
    發(fā)表于 12-22 15:49 ?2.1w次閱讀

    發(fā)光二極管封裝是什么,關(guān)于發(fā)光二極管封裝的詳解

    說起發(fā)光二極管可能很多人不知道是什么東西,但是說起LED應(yīng)該大多數(shù)人都知道,畢竟LED在我們的日常生活中隨處可見,發(fā)光二極管即LED。今天我們想要了解的知識(shí)點(diǎn)與發(fā)光二極管(LED)有關(guān),讓我們來看
    發(fā)表于 12-26 11:04 ?6484次閱讀

    什么是紅外二極管?發(fā)光二極管?紅外二極管發(fā)光二極管的區(qū)別

    什么是紅外二極管?發(fā)光二極管又是什么呢?紅外二極管發(fā)光二極管的區(qū)別? 紅外二極管發(fā)光二極管
    的頭像 發(fā)表于 01-26 15:42 ?2713次閱讀
    主站蜘蛛池模板: 在线黄色网 | 国产成人三级经典中文 | 性色xxx | 在线小毛片 | 午夜精品福利视频 | 91啦视频在线 | 国产精品久久1024 | 欧美xxxxx精品 | 手机免费看a| 午夜视频在线免费 | 在厨房乱子伦在线观看 | 亚洲第一狼人社区 | 国产精品久久久久久久免费 | 91一级片| 特级中国aaa毛片 | 欧美黄色免费看 | 在线高清视频大全 | tube44在线观看 | 高级毛片| 欧美极品一区 | 网站在线播放 | 青草久草视频 | h视频在线观看免费网站 | 中文字幕在线观看第一页 | 婷婷久久综合九色综合98 | 欧美激情一欧美吧 | 欧美一级视频在线观看 | 综合天天| 加勒比视频一区 | 午夜久久福利 | 在线免费观看一级毛片 | 综合激情婷婷 | 亚洲狠狠婷婷综合久久久图片 | 国产卡一卡2卡三卡免费视频 | 天堂资源在线最新版 | 免费公开视频人人人人人人人 | se在线播放 | 一级特黄a大片免费 | 一区二区三区免费视频网站 | 国产成人乱码一区二区三区 | 国产gaysexchina男同men1068 |