資料介紹
描述
萬圣節(jié)快樂!今天我們本著萬圣節(jié)的精神,將學(xué)習(xí)一個(gè)教程來制作一個(gè)陌生人事物“幫助我”板。
您需要的零件:
- Arduino 或同等產(chǎn)品
- 發(fā)光二極管
- 硬紙板或刨花板
- 9V電池
- 夏普
Elegoo Uno R3 完整入門套件非常適合此用途,因?yàn)樗?4 種不同的 LED 顏色。幸運(yùn)的是,我周圍還有一些其他顏色的 LED,這樣我就可以為項(xiàng)目添加更多變化。
原理圖

為了使用更少的 I/O 引腳,我們將使用 5×5 矩陣。這將覆蓋字母 AY。對(duì)于 Z 它將有自己的引腳。通過查看上面的示意圖,您可以看到,為了打開一個(gè) LED,該行將變?yōu)楦唠娖?,而源將被設(shè)置為低電平。例如。要打開 A,PIN 2 將設(shè)置為高電平,而 Pin 8 將設(shè)置為低電平。這只會(huì)打開 A。將一個(gè) ROW 設(shè)置為高電平而將其他 ROWS 設(shè)置為 LOW 以及將一列設(shè)置為低電平而將其他列設(shè)置為 HIGH 的每種組合一次只會(huì)點(diǎn)亮一個(gè) LED。這使用 10 個(gè)引腳 + 1 來完成所有 26 個(gè)字母。與必須為每個(gè) LED 配備一個(gè) I/O 相比,這使用的 I/O 引腳要少得多。
接下來要決定的是源電阻(R1-R6)。由于有不同的 LED,因此會(huì)有不同的電壓降。LED 兩端的電壓范圍為 1.5V 至 3.5V。因?yàn)檫@應(yīng)該看起來很嚇人,所以我們并不真正關(guān)心某些 LED 可能看起來更亮而其他 LED 可能看起來更暗。我們唯一關(guān)心的是確保我們不超過 Arduino 引腳可以提供的最大電流 20mA。我最終為這個(gè)項(xiàng)目挑選了 250 歐姆的電阻器。這為我們提供了 (5V-1.5V)/250 Ohm 至 (5V-3.5V)/250Ohms 或 14mA – 6mA 的范圍。這沒關(guān)系,因?yàn)槲覀儾粫?huì)超過 I/O 引腳的最大 20mA 要求。
步驟1
現(xiàn)在我們有了要使用的電路,第一步是拿起硬紙板或硬紙板并布置字母表。確保事先在一張紙上試一試,這樣你才能得到正確的字母間距和大小

第2步
接下來我們將在字母下方鉆孔。盡量讓這些間隔開,以便 LED 引線可以輕松插入孔中。

步驟 3
鉆完所有孔后,就可以插入所有 LED 了。我選擇嘗試讓 LED 隨機(jī)。將它們?nèi)坎迦胂嗤臉O性方向,這樣更容易接線。我在左側(cè)插入了每個(gè)帶有長(zhǎng)引線的 LED。在查看原理圖時(shí),這使得 LED 接線變得非常容易。

第4步
現(xiàn)在是時(shí)候開始焊接了。您需要將電路板翻轉(zhuǎn)到背面。確保執(zhí)行此操作時(shí) LED 不會(huì)掉落。當(dāng)我將它翻轉(zhuǎn)到背面時(shí),我通過將另一塊芯片板放在 LED 的頂部來做到這一點(diǎn)。

步驟 5
現(xiàn)在繼續(xù)添加你的 Arduino,9V 電池并將所有東西連接到適當(dāng)?shù)囊_。還可以使用電工膠帶確保沒有短路。我把我的放在 LED 的引線和 Arduino 的背面。然后我使用電工膠帶將 9V 電池和 Arduino 固定到電路板背面。

第 6 步 – 編碼
現(xiàn)在我們將開始編碼。您可以通過使用 digitalWrite() 進(jìn)行設(shè)置來測(cè)試您的電路和布線,并將所有行設(shè)置為低,除了一列,然后將所有列設(shè)置為高,除了一列,并確保相應(yīng)的 LED 為組合打開。
我們將不使用 digitalWrite(),而是直接進(jìn)入 ATMEGA 微型庫,通過將PORTD 和 PORTB設(shè)置為我們想要打開和關(guān)閉的數(shù)字 I/O來打開和關(guān)閉引腳。這將使編程更容易。PORTD 控制數(shù)字 I/O 引腳 0-7,而 PORTB 控制引腳 8-13。例如:如果您想打開引腳 7 并關(guān)閉所有其他引腳,只需設(shè)置 PORTD = 10000000。
首先,我們將創(chuàng)建一個(gè)結(jié)構(gòu)來定義每個(gè)字母的端口配置。
typedef struct // Create a structure to convert Binary of the PORTs for the corresponding Letter
{
byte portd;
byte portb;
}letter_data_t;
我們將命名為 letter_data_t 的結(jié)構(gòu)。接下來,我們將布置表格,根據(jù)我們連接的 5×5 矩陣將每個(gè)字母定義為一個(gè)端口。這將是 letter[] 數(shù)組。
const letter_data_t letter[] =
{
{B00000100,B11111110}, //A
{B00000100,B11111101}, //B
{B00000100,B11111011}, //C
{B00000100,B11110111}, //D
{B00000100,B11101111}, //E
{B00001000,B11111110}, //F
{B00001000,B11111101}, //G
{B00001000,B11111011}, //H
{B00001000,B11110111}, //I
{B00001000,B11101111}, //J
{B00010000,B11111110}, //K
{B00010000,B11111101}, //L
{B00010000,B11111011}, //M
{B00010000,B11110111}, //N
{B00010000,B11101111}, //O
{B00100000,B11111110}, //P
{B00100000,B11111101}, //Q
{B00100000,B11111011}, //R
{B00100000,B11110111}, //S
{B00100000,B11101111}, //T
{B01000000,B11111110}, //U
{B01000000,B11111101}, //V
{B01000000,B11111011}, //W
{B01000000,B11110111}, //X
{B01000000,B11101111}, //Y
{B10000000,B11111111}, //Z
{B00000000,B00000000} //26 = 0ff
};
現(xiàn)在已經(jīng)使用我們上面創(chuàng)建的結(jié)構(gòu)為每個(gè)字母建立了引用 PIN 輸出的表。
接下來我們將轉(zhuǎn)到代碼的設(shè)置部分。每個(gè)引腳都需要設(shè)置為輸出
void setup() {
// Setup each pin used as an output
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
}
現(xiàn)在已經(jīng)設(shè)置了代碼并創(chuàng)建了表,我們將設(shè)置一些函數(shù)。該程序的主要功能是 runHelpme() 函數(shù)。這將使董事會(huì)拼寫 HELP ME。這是我們?cè)噲D表明“顛倒”中的某個(gè)人可能正在嘗試聯(lián)系我們的嘗試。
void runHelpme()
{
PORTD = letter['h'-'a'].portd;
PORTB = letter['h'-'a'].portb;
delay(1000);
PORTD = letter['e'-'a'].portd;
PORTB = letter['e'-'a'].portb;
delay(1000);
PORTD = letter['l'-'a'].portd;
PORTB = letter['l'-'a'].portb;
delay(1000);
PORTD = letter['p'-'a'].portd;
PORTB = letter['p'-'a'].portb;
delay(1000);
PORTD = letter[26].portd;
PORTB = letter[26].portb;
delay(1000);
PORTD = letter['m'-'a'].portd;
PORTB = letter['m'-'a'].portb;
delay(1000);
PORTD = letter['e'-'a'].portd;
PORTB = letter['e'-'a'].portb;
delay(1000);
PORTD = letter[26].portd; //Turn off the LEDs
PORTB = letter[26].portb; //Turn off the LEDs
delay(1000);
}
這使用了我們創(chuàng)建的結(jié)構(gòu),并將減去我們想要的字母減去 'a' ,這是表中的第一個(gè)字母。這將通過給我們我們創(chuàng)建的表的想要的“字母”編號(hào)來實(shí)現(xiàn)。設(shè)置字母后,我們延遲一秒鐘,然后打開下一個(gè)字母。
下一個(gè)我們要寫的函數(shù)是一些花哨的函數(shù),讓棋盤看起來有點(diǎn)怪異。第一個(gè) flair 函數(shù)將是一個(gè) runRandom() 函數(shù),它將隨機(jī)選擇字母并將它們打開隨機(jī)次數(shù)。
void runRandom()
{
for(int i = 0; i<=15; i++)
{
int x = random(0,25);
PORTD = letter[x].portd;
PORTB = letter[x].portb;
delay(random(40,200));
delay(random(40,200));
delay(random(40,200));
}
}
這將運(yùn)行 15 個(gè)隨機(jī)字母。我們將 x 設(shè)置為 0-25 之間的隨機(jī)數(shù),它選擇 26 個(gè)字母之一,然后等待 40 毫秒到 200 毫秒之間的三個(gè)隨機(jī)時(shí)間。
我們要編寫的最后一個(gè)函數(shù)是 flickerRandom() 函數(shù)。這將閃爍一個(gè)隨機(jī)函數(shù)。我認(rèn)為這無疑增加了一個(gè)很好的感覺,即董事會(huì)正在發(fā)生一些奇怪的事情。
void flickerRandom()
{
int x = random(0,25);
for(int i = 0; i<=5; i++)
{
PORTD = letter[x].portd;
PORTB = letter[x].portb;
delay(random(40,500));
PORTD = letter[26].portd;
PORTB = letter[26].portb;
delay(random(40,500));
}
}
這將在 40 毫秒至 500 毫秒的閃爍時(shí)間之間的任何位置閃爍 5 個(gè)隨機(jī)字母。
現(xiàn)在所有的函數(shù)都寫好了,是時(shí)候把所有的主循環(huán)代碼放在一起了。
void loop() {
flickerRandom();
delay(2000);
runHelpme();
delay(2000);
flickerRandom();
flickerRandom();
runRandom();
}
這將首先啟動(dòng)閃爍例程,延遲 2 秒,顯示我們的“幫助我”例程,等待 2 秒,再次連續(xù)閃爍 2 次,然后運(yùn)行隨機(jī)例程。這一切都表明陌生人的事情板肯定有一些奇怪的事情正在發(fā)生,如果你觀察得足夠近,有人可以看到它在說“幫助我”。很明顯,來自 UPSIDE DOWN 的人正試圖聯(lián)系我們!
您可以在此處獲得完整的 BreakoutBros Stranger Things 代碼。
請(qǐng)確保您訂閱以查看有關(guān)項(xiàng)目、教程和評(píng)論的更多更新!
- 陌生人閃爍消息開源硬件
- pathoy教程-陌生的metaclass總結(jié)
- 單片機(jī)數(shù)據(jù)采集系統(tǒng)PCB板制作
- 對(duì)比兩種制作電路板的方法,哪個(gè)更好?資料下載
- Genesis2000線路制作教程 genesis2000軟件自學(xué) 0次下載
- 電路板的制作過程和使用的材料資料總結(jié) 0次下載
- 印制電路板的制作教程詳細(xì)資料概述 0次下載
- 如何設(shè)計(jì)java web人事管理系統(tǒng)的資料說明 13次下載
- 2017年江西省大學(xué)生電子設(shè)計(jì)制作現(xiàn)場(chǎng)(28屆)賽題 22次下載
- pcb四層板制作 0次下載
- 多層板與雙層板的制作 0次下載
- 電路板的設(shè)計(jì)與制作總結(jié) 24次下載
- 揭開來電顯示修改面紗 576次下載
- 軍事物流系統(tǒng)架構(gòu)及其調(diào)度決策
- pcb板圖制作軟件 0次下載
- 基于歐智通V200Z-R開發(fā)板的智能門鈴設(shè)計(jì) 3.3k次閱讀
- 印制電路板的制作及檢驗(yàn) 1.2w次閱讀
- PCB板加工制作的考慮因素 2.9k次閱讀
- 手機(jī)電路板的制作步驟 2.2w次閱讀
- 感光電路板的使用方法和制作步驟解析 3.1k次閱讀
- 電路板制作原理與結(jié)構(gòu)!自制電路板最常用的五種方法比較 2.7w次閱讀
- led線路板制作流程 5.1k次閱讀
- 熱轉(zhuǎn)印電路板的制作方法 7.1k次閱讀
- 電路板的制作案例分享 6.5k次閱讀
- Protel99制作PCB板時(shí)各層各代表什么含義? 9.8k次閱讀
- 動(dòng)態(tài)紋理合成新方法,由“靜”至“動(dòng)” 4.8k次閱讀
- 太陽能板的制作方法(三種太陽能板制作方法) 19.4w次閱讀
- 人臉識(shí)別技術(shù)原理分析 1.8w次閱讀
- 雙層PCB板制作過程與雙層PCB板制作工藝(干貨分享) 1.2w次閱讀
- 愛車又無法啟動(dòng)?解密蓄電池那些事!怎么選擇蓄電池?怎么延長(zhǎng)蓄電池的生命周期? 2.3k次閱讀
下載排行
本周
- 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費(fèi)
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊(cè)
- 2.33 MB | 次下載 | 免費(fèi)
- 4MDD品牌三極管S9012數(shù)據(jù)手冊(cè)
- 2.62 MB | 次下載 | 免費(fèi)
- 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊(cè)
- 2.50 MB | 次下載 | 免費(fèi)
- 8MS1000TA 超聲波測(cè)量模擬前端芯片技術(shù)手冊(cè)
- 0.60 MB | 次下載 | 免費(fèi)
本月
- 1愛華AIWA HS-J202維修手冊(cè)
- 3.34 MB | 37次下載 | 免費(fèi)
- 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
- 1.63 MB | 23次下載 | 免費(fèi)
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費(fèi)
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊(cè)
- 1.81 MB | 1次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論