以低於5美元的價格製作一個pov-led空中寫手

在這個簡單的專案中,我們將製作一個小裝置,當你在空中揮舞時,它會點亮資訊。比你想象的容易,總成本在5美元以下。...

你可以用閃爍的LED做各種各樣的事情,在這個簡單的項目中,我們將**一個小設備,當你來回揮動它時,它會點亮空中的信息。這比你想象的容易,而且零件的總成本不到5美元。

pov-led-air-writer

這個項目利用一種稱為視覺持久性的視錯覺使文本出現在空氣中。你可能會遇到這種現象,當有人在夜間快速移動點燃的火花。我們將使用Arduino和一些LED來模擬這種效果。這個項目是簡單的建設,與幾個組件和小焊接(雖然如果你想要一些提示開始與你的烙鐵檢查這個指南)。

你需要

  • Arduino(我用的是2美元的Nano,因為它小巧便宜,但任何型號都可以)。
  • 5個紅色LED。
  • 5個220歐姆電阻器。
  • 1x 9v電池架。
  • 1x搖臂開關。
  • 1塊原型板。
  • 成品的外殼(我用了一個漆成黑色的小紙板箱)。

你還需要一個烙鐵和一些焊料來把它放在一起。

雖然是可選的,一些焊錫芯可以在非常方便的情況下,你做任何焊接錯誤。一個試驗板和一些連接線也有助於測試您的電路。

Components Required for Project

裝電線

接線再簡單不過了。首先,如圖所示連接Arduino、LED和電阻器。

pov fritzing

引腳D2到D6分別連接到每個電阻器,電阻器連接到每個LED的正極(長腿)。陰極接地,接地又與Arduino相連。完成後應該是這樣的:

pov breadboard

就這樣:我們的電路完成了!我們將添加一個電池外殼和開關,但這是所有我們需要測試它是否工作。

代碼

現在將您的Arduino連接到計算機並打開Arduino IDE。如果你是新的使用Arduino和想要一個很好的指南開始,這個鏈接將是有用的。

打開新草圖並將此代碼複製到中。代碼是從這個項目中修改的,您可以在這裡下載完整的代碼。

// how long each led stays on forint delayTime = 1;//how long between each int charBreak = 3;//how long to wait after the message is finished before it repeatsint resetTime = 20;int LED1 = 2;int LED2 = 3;int LED3 = 4;int LED4 = 5;int LED5 = 6;void setup(){pinMode(LED1, OUTPUT);pinMode(LED2, OUTPUT);pinMode(LED3, OUTPUT);pinMode(LED4, OUTPUT);pinMode(LED5, OUTPUT);}int a[] = {1, 6, 26, 6, 1};int b[] = {31, 21, 21, 10, 0};int c2[] = {14, 17, 17, 10, 0};int d[] = {31, 17, 17, 14, 0};int e[] = {31, 21, 21, 17, 0};int f[] = {31, 20, 20, 16, 0};int g[] = {14, 17, 19, 10, 0};int h[] = {31, 4, 4, 4, 31};int i[] = {0, 17, 31, 17, 0};int j[] = {0, 17, 30, 16, 0};int k[] = {31, 4, 10, 17, 0};int l[] = {31, 1, 1, 1, 0};int m[] = {31, 12, 3, 12, 31};int n[] = {31, 12, 3, 31, 0};int o[] = {14, 17, 17, 14, 0};int p[] = {31, 20, 20, 8, 0};int q[] = {14, 17, 19, 14, 2};int r[] = {31, 20, 22, 9, 0};int s[] = {8, 21, 21, 2, 0};int t[] = {16, 16, 31, 16, 16};int u[] = {30, 1, 1, 30, 0};int v[] = {24, 6, 1, 6, 24};int w[] = {28, 3, 12, 3, 28};int x[] = {17, 10, 4, 10, 17};int y[] = {17, 10, 4, 8, 16};int z[] = {19, 21, 21, 25, 0};int eos[] = {0, 1, 0, 0, 0};int excl[] = {0, 29, 0, 0, 0};int ques[] = {8, 19, 20, 8, 0};int space[] = {0, 0, 0, 0, 0};void displayLine(int line){int myline;myline = line;if (myline>=16) {digitalWrite(LED1, HIGH); myline-=16;} else {digitalWrite(LED1, LOW);}if (myline>=8) {digitalWrite(LED2, HIGH); myline-=8;} else {digitalWrite(LED2, LOW);}if (myline>=4) {digitalWrite(LED3, HIGH); myline-=4;} else {digitalWrite(LED3, LOW);}if (myline>=2) {digitalWrite(LED4, HIGH); myline-=2;} else {digitalWrite(LED4, LOW);}if (myline>=1) {digitalWrite(LED5, HIGH); myline-=1;} else {digitalWrite(LED5, LOW);}}void displayChar(char c){if (c == 'a'){for (int i = 0; i <5; i++){displayLine(a[i]);delay(delayTime);}displayLine(0);}if (c == 'b'){for (int i = 0; i <5; i++){displayLine(b[i]);delay(delayTime);}displayLine(0);}if (c == 'c2'){for (int i = 0; i <5; i++){displayLine(c2[i]);delay(delayTime);}displayLine(0);}if (c == 'd'){for (int i = 0; i <5; i++){displayLine(d[i]);delay(delayTime);}displayLine(0);}if (c == 'e'){for (int i = 0; i <5; i++){displayLine(e[i]);delay(delayTime);}displayLine(0);}if (c == 'f'){for (int i = 0; i <5; i++){displayLine(f[i]);delay(delayTime);}displayLine(0);}if (c == 'g'){for (int i = 0; i <5; i++){displayLine(g[i]);delay(delayTime);}displayLine(0);}if (c == 'h'){for (int i = 0; i <5; i++){displayLine(h[i]);delay(delayTime);}displayLine(0);}if (c == 'i'){for (int it = 0; it <5; it++){displayLine(i[it]);delay(delayTime);}displayLine(0);}if (c == 'j'){for (int i = 0; i <5; i++){displayLine(j[i]);delay(delayTime);}displayLine(0);}if (c == 'k'){for (int i = 0; i <5; i++){displayLine(k[i]);delay(delayTime);}displayLine(0);}if (c == 'l'){for (int i = 0; i <5; i++){displayLine(l[i]);delay(delayTime);}displayLine(0);}if (c == 'm'){for (int i = 0; i <5; i++){displayLine(m[i]);delay(delayTime);}displayLine(0);}if (c == 'n'){for (int i = 0; i <5; i++){displayLine(n[i]);delay(delayTime);}displayLine(0);}if (c == 'o'){for (int i = 0; i <5; i++){displayLine(o[i]);delay(delayTime);}displayLine(0);}if (c == 'p'){for (int i = 0; i <5; i++){displayLine(p[i]);delay(delayTime);}displayLine(0);}if (c == 'q'){for (int i = 0; i <5; i++){displayLine(q[i]);delay(delayTime);}displayLine(0);}if (c == 'r'){for (int i = 0; i <5; i++){displayLine(r[i]);delay(delayTime);}displayLine(0);}if (c == 's'){for (int i = 0; i <5; i++){displayLine(s[i]);delay(delayTime);}displayLine(0);}if (c == 't'){for (int i = 0; i <5; i++){displayLine(t[i]);delay(delayTime);}displayLine(0);}if (c == 'u'){for (int i = 0; i <5; i++){displayLine(u[i]);delay(delayTime);}displayLine(0);}if (c == 'v'){for (int i = 0; i <5; i++){displayLine(v[i]);delay(delayTime);}displayLine(0);}if (c == 'w'){for (int i = 0; i <5; i++){displayLine(w[i]);delay(delayTime);}displayLine(0);}if (c == 'x'){for (int i = 0; i <5; i++){displayLine(x[i]);delay(delayTime);}displayLine(0);}if (c == 'y'){for (int i = 0; i <5; i++){displayLine(y[i]);delay(delayTime);}displayLine(0);}if (c == 'z'){for (int i = 0; i <5; i++){displayLine(z[i]);delay(delayTime);}displayLine(0);}if (c == '!'){for (int i = 0; i <5; i++){displayLine(excl[i]);delay(delayTime);}displayLine(0);}if (c == '?'){for (int i = 0; i <5; i++){displayLine(ques[i]);delay(delayTime);}displayLine(0);}if (c == '.'){for (int i = 0; i <5; i++){displayLine(eos[i]);delay(delayTime);}displayLine(0);}if (c == ' '){for (int i = 0; i <5; i++){displayLine(space[i]);delay(delayTime);}displayLine(0);}delay(charBreak);}void displayString(char* s){ for (int i = 0; i<=strlen(s); i++){ displayChar(s[i]); }}void loop(){ //Change the text inside here to change the text displayed. //Make sure to keep the brackets and the quotation marks.displayString("..hello!..");delay(40);}

保存草圖並將其上載到您的電路板。如果出現任何錯誤,請確保選擇了正確的板和com端口。你的發光二極管應該開始閃爍。如果他們沒有,檢查你的試驗板上的所有連接。代碼開頭聲明的整數決定文本的顯示速度。數字越高,你就需要越快地揮動設備。我發現這裡使用的數字效果很好。

現在做一個快速測試。斷開Arduino與USB電纜的連接,將電池座連接到Arduino的VIN和GND引腳

pov fritz with batt

現在你可以移動它,小心地試著擺動你前面的發光二極管。如果你周圍足夠黑的話,你會看到一些字母在空中形成。我發現這有助於我的**捕捉到這個。

bread test

真管用!現在讓它更持久一點。

熨斗準備好了!

將Arduino板、電阻器和LED放在protoboard上,如下所示:

laid out on board

當然,只要電路保持不變,就可以使佈局儘可能緊湊。確保在Arduino的每側至少保留一行protoboard觸點,用於組件和電源。如果你是一個電子初學者,這裡有一些偉大的提示給你。

我們將焊接在一起的LED陰極線,使共同的立場,就像我們做了我們的LED矩陣。

row cathodes

摺疊每個陰極,使其與下一個陰極重疊,然後焊接它們,形成一條完整的線。現在我們需要把陽極焊接到電阻旁邊的支腳上。我發現最簡單的方法是把每個焊腳焊接到它們各自的焊盤上,然後把鐵放在它們之間加熱兩個接頭,最後再添加更多的焊料來填補它們之間的間隙。

檢查每個連接是否牢固連接,然後用鋼絲鉗將電阻器和LED上多餘的支腳切斷。

resistors to anodes

現在重複同樣的任務,但是這次把電阻的另一端連接到Arduino的腿上。這是焊接過程中最棘手的部分。每一個電阻都會單獨連接到它的Arduino引腳上,否則電路將無**常工作。我在這裡犯了幾個錯誤,不得不用焊錫芯去除不需要的焊料多次。

一旦您建立了所有正確的連接,請仔細檢查它們與鄰居之間的任何重疊。如果您可以在這裡使用萬用表,可以使用連續模式檢查每個引腳只有一條與電阻相連的未斷開的線路。如果你剛剛有一個萬用表,這篇文章有一個很好的入門指南。

continuity picture

檢查完每個連接後,從電阻器的支腳上切下多餘的長度

添加電源

現在把一根電線從Arduino的GND引腳接到焊接陰極線末端旁邊的一個洞裡,把電池架的黑色電線放在旁邊。

gnd wires top

現在把電線焊接到GND引腳上,就像我們焊接電阻器一樣,把兩根電線焊接到陰極線的末端,為電路創造一個公共接地。

最後,在arduino的VIN引腳上連接一根導線,並將開關置於導線和電池組之間。抱歉,在這張照片熱膠覆蓋開關,我不得不拆除成品機拍攝這個階段!

switch vin

一旦所有的焊接在一起,把一個電池和彈開關。祝賀 你!電路完成。如果你沒有看到任何東西亮起,仔細檢查每個焊接接頭,看看哪裡可能有一箇中斷或短路。

圈地

既然我們已經開始工作了,我們就把它放進盒子裡吧。這裡使用了一個彩繪的紙板箱,儘管你可以用一個愛好商店買的盒子,甚至是一箇舊的圖珀盒子來**更持久的東西。對於額外的極客,你甚至可以在這些廉價的3D打印機中打印你自己的3D。

削減你的原型板的大小,通過得分,並小心地搶走你不需要的部分。

proto gif

將電路放在外殼內,並標記LED和交換機需要**的位置。您還可以選擇標記Arduino板上的USB接口與邊緣的連接位置,這樣您就可以在不打開框的情況下**它來更改文本。在外殼上鑽或切你需要的孔。

make holes

現在在發光二極管的邊緣加一點熱膠水,把它們粘在適當的地方。我在電路下面粘了一塊海綿,這樣它就可以舒服地放在盒子裡了。把開關接到箱子上。我用了熱膠水,雖然螺絲或螺栓會使連接更牢固。你也可以把電池架粘在電路板的背面,以防止它在使用時在裡面移動,但要確保電池盒上的任何金屬觸點都不會碰到你的焊接接頭!

measure switch

任務完成了!

關上你的圍欄,你就完了!要更改文本,請將USB電纜連接到Arduino板,並在displayString in the loop方法之後更改括號內的文本。找一個黑暗的地方,玩得開心!

slower paced

你以前造過POV機器嗎?知道改進設計的方法嗎?你打算自己造一個嗎?請在下面的評論中告訴我們你的項目,我們很樂意聽到!

  • 發表於 2021-03-16 12:02
  • 閱讀 ( 37 )
  • 分類:DIY

你可能感興趣的文章

如何以低於10美元的價格合法獲得microsoft office pro plus 2016

雖然您可以****一些線上或移動形式的Microsoft Office產品,但您會發現web版本中缺少許多核心功能。如果你想購買桌上型電腦版本,它可能會非常昂貴——除非你利用微軟的家用程式。 ...

  • 發佈於 2021-03-11 20:49
  • 閲讀 ( 32 )

使用這款價值100美元的sandisk 1tb nvme ssd,以低廉的價格製作您自己的快速usb-c驅動器

...度的小工具開始,SanDisk的超1TB NVMe SSD在百思買售價為100美元。這是一個偉大的價格為這種能力,因為它遠遠快於您的標準SATA SSD。SanDisk為這款車型提供五年保修。至於如何使用它,請確保你的電腦主機板有一個開放的M.2 2280插槽...

  • 發佈於 2021-04-16 13:40
  • 閲讀 ( 32 )

今天花33美元就可以獲得一年的playstation plus

...低於200美元 這並不是蘋果旗艦無線耳塞的最低價格,但以低於200美元的價格購買這些耳塞仍然是一個很大的便宜貨。AirPods Pro在一些地方有售,但目前最低的是Woot的190美元。如果你有一個活躍的亞馬遜Prime會員,你可以得到免費...

  • 發佈於 2021-04-17 03:51
  • 閲讀 ( 42 )

麻省理工學院學生以150美元的價格製造木製diy手機

如果你正在尋找一款外觀獨特、價格適中的新**,麻省理工學院的高-低技術研究小組正好為你準備了一款木質DIY**。博士生大衛·梅利斯(David Mellis)決定**這款**,以“探索和拓展DIY的極限”,第一款**的原型採用1.8英寸、160×128...

  • 發佈於 2021-04-22 03:39
  • 閲讀 ( 33 )

東芝將在日本以低於9500美元的價格釋出55英寸4k3dtv

東芝將於今年6月推出一款55英寸3D電視,解析度為3840×2160畫素,售價約75萬日元(約合9410美元)。僅限日本的Regza 55XS5與我們去年12月報道的無眼鏡3D 55X3非常相似,但有兩個關鍵區別:55XS5需要眼鏡才能觀看3D,將比55X3便宜整整15...

  • 發佈於 2021-04-22 06:50
  • 閲讀 ( 42 )

你只需不到100美元就可以自己製作一個wi-fi連線的恆溫器

在谷歌宣佈將支付32億美元現金收購雀巢後,雀巢一週來一直在新聞中。這一收購在許多人眼中證明瞭Nest是一家可行的公司,儘管事實上它可以為你家中已有的裝置提供相當昂貴的替代品。當然,不是每個人都願意花249美元買一...

  • 發佈於 2021-04-25 03:24
  • 閲讀 ( 38 )

自然紀錄片的教父正在為奧庫魯斯裂谷製作一部紀錄片

...飛行中被使用。&#13; Oculus最近被Facebook以20億美元的價格收購,獲得了主流的認可,而一部阿滕伯勒紀錄片可能不會影響它的成功。然而,這部電影的成功並不依賴於Oculus和Facebook。《征服天空》實際上將是阿滕伯勒的...

  • 發佈於 2021-04-25 17:53
  • 閲讀 ( 42 )

這家法國公司使用windows10製作了自己的表

...#13; 當然,按正常標準來看,La Table Kineti並不便宜,但5600美元的價格比微軟的前兩款Surface表(第一代售價12500美元,三星型號8400美元)相對更划算。&#13; 是否有人真的需要一臺,尤其是當你能以500美元的價格買到一批完全相同...

  • 發佈於 2021-05-06 08:24
  • 閲讀 ( 40 )

搖滾樂隊背後的工作室正在製作一個音樂混搭紙牌遊戲

...的:Dropmix入門包,其中包括董事會和60卡,零售價為99.99美元。16張卡的附加卡套餐為14.99美元,5張卡的附加卡套餐為4.99美元。孩之寶表示,預計到今年年底將推出300張不同的賀卡,其中包括布魯諾·馬爾斯(Bruno Mars)、埃德·...

  • 發佈於 2021-05-10 05:55
  • 閲讀 ( 37 )

candy crush背後的工作室正在製作一款《使命召喚》手機遊戲

在Activision暴雪以59億美元的價格正式收購糖果壓碎創造者King一年多後,瑞典開發商透露,正在基於值班的要求,打造一款新的移動遊戲。這場比賽似乎發展得很早,將由國王斯德哥爾摩工作室內的一支新球隊來處理。目前還沒...

  • 發佈於 2021-05-10 15:14
  • 閲讀 ( 51 )
oal9410871
oal9410871

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章