資料介紹
描述
萬圣節快樂!今天我們本著萬圣節的精神,將學習一個教程來制作一個陌生人事物“幫助我”板。
您需要的零件:
- 發光二極管
- 硬紙板或刨花板
- 9V電池
- 夏普
Elegoo Uno R3 完整入門套件非常適合此用途,因為它包含 4 種不同的 LED 顏色。幸運的是,我周圍還有一些其他顏色的 LED,這樣我就可以為項目添加更多變化。
原理圖
為了使用更少的 I/O 引腳,我們將使用 5×5 矩陣。這將覆蓋字母 AY。對于 Z 它將有自己的引腳。通過查看上面的示意圖,您可以看到,為了打開一個 LED,該行將變為高電平,而源將被設置為低電平。例如。要打開 A,PIN 2 將設置為高電平,而 Pin 8 將設置為低電平。這只會打開 A。將一個 ROW 設置為高電平而將其他 ROWS 設置為 LOW 以及將一列設置為低電平而將其他列設置為 HIGH 的每種組合一次只會點亮一個 LED。這使用 10 個引腳 + 1 來完成所有 26 個字母。與必須為每個 LED 配備一個 I/O 相比,這使用的 I/O 引腳要少得多。
接下來要決定的是源電阻(R1-R6)。由于有不同的 LED,因此會有不同的電壓降。LED 兩端的電壓范圍為 1.5V 至 3.5V。因為這應該看起來很嚇人,所以我們并不真正關心某些 LED 可能看起來更亮而其他 LED 可能看起來更暗。我們唯一關心的是確保我們不超過 Arduino 引腳可以提供的最大電流 20mA。我最終為這個項目挑選了 250 歐姆的電阻器。這為我們提供了 (5V-1.5V)/250 Ohm 至 (5V-3.5V)/250Ohms 或 14mA – 6mA 的范圍。這沒關系,因為我們不會超過 I/O 引腳的最大 20mA 要求。
步驟1
現在我們有了要使用的電路,第一步是拿起硬紙板或硬紙板并布置字母表。確保事先在一張紙上試一試,這樣你才能得到正確的字母間距和大小
第2步
接下來我們將在字母下方鉆孔。盡量讓這些間隔開,以便 LED 引線可以輕松插入孔中。
步驟 3
鉆完所有孔后,就可以插入所有 LED 了。我選擇嘗試讓 LED 隨機。將它們全部插入相同的極性方向,這樣更容易接線。我在左側插入了每個帶有長引線的 LED。在查看原理圖時,這使得 LED 接線變得非常容易。
第4步
現在是時候開始焊接了。您需要將電路板翻轉到背面。確保執行此操作時 LED 不會掉落。當我將它翻轉到背面時,我通過將另一塊芯片板放在 LED 的頂部來做到這一點。
步驟 5
現在繼續添加你的 Arduino,9V 電池并將所有東西連接到適當的引腳。還可以使用電工膠帶確保沒有短路。我把我的放在 LED 的引線和 Arduino 的背面。然后我使用電工膠帶將 9V 電池和 Arduino 固定到電路板背面。
第 6 步 – 編碼
現在我們將開始編碼。您可以通過使用 digitalWrite() 進行設置來測試您的電路和布線,并將所有行設置為低,除了一列,然后將所有列設置為高,除了一列,并確保相應的 LED 為組合打開。
我們將不使用 digitalWrite(),而是直接進入 ATMEGA 微型庫,通過將PORTD 和 PORTB設置為我們想要打開和關閉的數字 I/O來打開和關閉引腳。這將使編程更容易。PORTD 控制數字 I/O 引腳 0-7,而 PORTB 控制引腳 8-13。例如:如果您想打開引腳 7 并關閉所有其他引腳,只需設置 PORTD = 10000000。
首先,我們將創建一個結構來定義每個字母的端口配置。
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 的結構。接下來,我們將布置表格,根據我們連接的 5×5 矩陣將每個字母定義為一個端口。這將是 letter[] 數組。
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
};
現在已經使用我們上面創建的結構為每個字母建立了引用 PIN 輸出的表。
接下來我們將轉到代碼的設置部分。每個引腳都需要設置為輸出
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);
}
現在已經設置了代碼并創建了表,我們將設置一些函數。該程序的主要功能是 runHelpme() 函數。這將使董事會拼寫 HELP ME。這是我們試圖表明“顛倒”中的某個人可能正在嘗試聯系我們的嘗試。
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);
}
這使用了我們創建的結構,并將減去我們想要的字母減去 'a' ,這是表中的第一個字母。這將通過給我們我們創建的表的想要的“字母”編號來實現。設置字母后,我們延遲一秒鐘,然后打開下一個字母。
下一個我們要寫的函數是一些花哨的函數,讓棋盤看起來有點怪異。第一個 flair 函數將是一個 runRandom() 函數,它將隨機選擇字母并將它們打開隨機次數。
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));
}
}
這將運行 15 個隨機字母。我們將 x 設置為 0-25 之間的隨機數,它選擇 26 個字母之一,然后等待 40 毫秒到 200 毫秒之間的三個隨機時間。
我們要編寫的最后一個函數是 flickerRandom() 函數。這將閃爍一個隨機函數。我認為這無疑增加了一個很好的感覺,即董事會正在發生一些奇怪的事情。
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 毫秒的閃爍時間之間的任何位置閃爍 5 個隨機字母。
現在所有的函數都寫好了,是時候把所有的主循環代碼放在一起了。
void loop() {
flickerRandom();
delay(2000);
runHelpme();
delay(2000);
flickerRandom();
flickerRandom();
runRandom();
}
這將首先啟動閃爍例程,延遲 2 秒,顯示我們的“幫助我”例程,等待 2 秒,再次連續閃爍 2 次,然后運行隨機例程。這一切都表明陌生人的事情板肯定有一些奇怪的事情正在發生,如果你觀察得足夠近,有人可以看到它在說“幫助我”。很明顯,來自 UPSIDE DOWN 的人正試圖聯系我們!
您可以在此處獲得完整的 BreakoutBros Stranger Things 代碼。
請確保您訂閱以查看有關項目、教程和評論的更多更新!
- 陌生人閃爍消息開源硬件
- pathoy教程-陌生的metaclass總結
- 單片機數據采集系統PCB板制作
- 對比兩種制作電路板的方法,哪個更好?資料下載
- Genesis2000線路制作教程 genesis2000軟件自學 0次下載
- 電路板的制作過程和使用的材料資料總結 0次下載
- 印制電路板的制作教程詳細資料概述 0次下載
- 如何設計java web人事管理系統的資料說明 13次下載
- 2017年江西省大學生電子設計制作現場(28屆)賽題 22次下載
- pcb四層板制作 0次下載
- 多層板與雙層板的制作 0次下載
- 電路板的設計與制作總結 22次下載
- 揭開來電顯示修改面紗 575次下載
- 軍事物流系統架構及其調度決策
- pcb板圖制作軟件 0次下載
- 基于歐智通V200Z-R開發板的智能門鈴設計 2470次閱讀
- 印制電路板的制作及檢驗 1w次閱讀
- PCB板加工制作的考慮因素 2314次閱讀
- 手機電路板的制作步驟 2w次閱讀
- 感光電路板的使用方法和制作步驟解析 2611次閱讀
- 電路板制作原理與結構!自制電路板最常用的五種方法比較 2.5w次閱讀
- led線路板制作流程 4424次閱讀
- 熱轉印電路板的制作方法 6254次閱讀
- 電路板的制作案例分享 5491次閱讀
- Protel99制作PCB板時各層各代表什么含義? 9100次閱讀
- 動態紋理合成新方法,由“靜”至“動” 4329次閱讀
- 太陽能板的制作方法(三種太陽能板制作方法) 19w次閱讀
- 人臉識別技術原理分析 1.7w次閱讀
- 雙層PCB板制作過程與雙層PCB板制作工藝(干貨分享) 1.1w次閱讀
- 愛車又無法啟動?解密蓄電池那些事!怎么選擇蓄電池?怎么延長蓄電池的生命周期? 2083次閱讀
下載排行
本周
- 1A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 2PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 3PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 4dsPIC33EDV64MC205電機控制開發板用戶指南
- 5.78MB | 8次下載 | 免費
- 5STC15系列常用寄存器匯總免費下載
- 1.60 MB | 7次下載 | 5 積分
- 6模擬電路仿真實現
- 2.94MB | 4次下載 | 免費
- 7PCB圖繪制實例操作
- 2.92MB | 2次下載 | 免費
- 8零死角玩轉STM32F103—指南者
- 26.78 MB | 1次下載 | 1 積分
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 452次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 141次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 137次下載 | 免費
- 4A7159和A7139射頻芯片的資料免費下載
- 0.20 MB | 55次下載 | 5 積分
- 5PIC12F629/675 數據手冊免費下載
- 2.38 MB | 36次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 19次下載 | 免費
- 7PIC16F716 數據手冊免費下載
- 2.35 MB | 18次下載 | 5 積分
- 8Q/SQR E8-4-2024乘用車電子電器零部件及子系統EMC試驗方法及要求
- 1.97 MB | 8次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多