今天為大家分享一個DIY 產(chǎn)品,如下: 前兩天天我在瀏覽購物網(wǎng)站的時候,被一個購物清單吸引住了,5個ATtiny13單片機(jī)售價1.5美元。你敢相信,一個可編程的微控制器,只要0.3美元!于是我打算撿個便宜,買幾個回來玩玩。為了讓買回來的ATtiny13不落在角落里吃灰,我上網(wǎng)搜索了 "ATtiny13 Arduino"的關(guān)鍵詞,發(fā)現(xiàn)Arduino支持ATtiny13,所以我準(zhǔn)備拿他搞些事情。ATtiny13對庫的支持有限,所以除了讓它點亮幾個LED之外,我暫時沒有想到其他玩法。正當(dāng)我苦苦思索還能做什么時,突然想到了一個很久以前的項目。那是一個使用ATtiny85的PoV
顯示器 。
(拍出來的效果會閃爍,眼睛看就不會) PoV顯示器基本上是一堆閃爍的LED,并有一些精心安排的延遲。而我發(fā)現(xiàn)ATtiny13和ATtiny85都有相同的引腳布局。那么…… 嘿嘿,我也來做一個!
材料準(zhǔn)備 1 x ATtiny13 5個3毫米的LED(也可以用5毫米的LED,3毫米的看起來更好,因為可以更靠近PCB) 1個CR2032電池 1個CR2032電池座 1個滑動開關(guān) 原型PCB或定制PCB 電烙鐵 什么是PoV顯示器,它們是如何工作的? 人眼在觀察景物時,光信號傳入大腦神經(jīng),需經(jīng)過一段短暫的時間(1/16秒),光的作用結(jié)束后,視覺形象并不立即消失,這種殘留的視覺稱“后像”,視覺的這一現(xiàn)象則被稱為“視覺暫留”。比如你看一個正常的顯示器,像素是以矩陣方式排列的,但在PoV
顯示器 中,像素或者LED則是排列成一個陣列的。就像是你快速翻動小人書那邊,由于視覺暫留效應(yīng),小人書的人會動起來,這邊我們看到的,也不會是一排LED,而是一串字母或者是一幅圖像。
Arduino IDE相關(guān)設(shè)置 你可能正盯著ATtiny13,想知道 "我到底該怎樣為這個東西編程,它又沒有像Arduino那樣的USB接口"。好吧,要為這個微控制器編程,你需要另一個Arduino,Arduino Nano或Arduino Uno都可以。下載并安裝Arduino IDE。用USB線將你的Arduino Nano / Uno連接到電腦上。打開?
工具->
開發(fā)板,選擇你的主控板(注意選Uno/Nano而不是ATtiny13)。現(xiàn)在我們需要將我們的Arduino轉(zhuǎn)換成一個編程器。在Arduino IDE中,打開
文件?->?
示例?->?
11.ArduinoISP?->?
ArduinoISP并點擊
上傳按鈕。如果上傳成功,就可以用我們的Arduino為其他微控制器編程了。現(xiàn)在我們還需要在Arduino IDE上安裝ATtiny13的硬件包,因為IDE默認(rèn)不支持ATtiny13。打開
文件?->?
首選項?->?
附加開發(fā)版管理器網(wǎng)址然后粘貼上下面的鏈接:
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json然后打開
工具?->?
開發(fā)板?->?
開發(fā)板管理器。從列表中找到
MicroCore并點擊安裝。
ok,現(xiàn)在你就可以從Arduino IDE中選擇到ATtiny13了。選擇
工具?->?
開發(fā)板?->?
MicroCore?->?
ATtiny13我們需要在Arduino IDE中再改變一些選項,打開
工具,并設(shè)置以下值:
Option Value Board ATtiny13 BOD 2.7v Clock 9.6Mhz internal Osc. Timing "Micors Disabled" Port Select Serial Port in which your Arduino is connected Programmer Arduino as ISP (MicroCore)
對ATtiny13進(jìn)行編程 現(xiàn)在可以把ATtiny連接到我們的Arduino了。把ATtiny連接到Arduino,如下所示(在ATtiny中,針腳1將用一個點
.?標(biāo)記。)
ATtiny13 Pin Arduino Pin 1 10 5 11 6 12 7 13 8 5v 4 Ground (GND)
燒錄引導(dǎo)程序到ATtiny13 這是一個一次性的設(shè)置,不用在每次上傳代碼到ATtiny時都重復(fù)這個設(shè)置。點擊?
工具->
燒錄引導(dǎo)程序。
這將把引導(dǎo)程序燒到ATtiny上,現(xiàn)在我們就可以用Arduino IDE把程序上傳到ATtiny了。
上傳PoV程序到ATtiny 在Arduino中新建一個程序。復(fù)制代碼并將其粘貼到新創(chuàng)建的程序中。
//?https://github.com/B45i/Tiny-PoV //?App?to?calculate?array?values:?https://pov-display-calc.vercel.app/ //?Preact?app?source:?https://github.com/B45i/pov-display-calc #include ? #define ?DELAY_TIME?1 #define ?CHAR_BREAK?2 uint8_t ?leds[]?=?{?0 ,?1 ,?2 ,?3 ,?4 ?};uint8_t ?keys[]?=?{?1 ,?2 ,?4 ,?8 ,?16 ?};void ?setup () ? { ??for ?(uint8_t ?i?=?0 ;?i?5 ;?i )?{ ????pinMode(leds[i],?OUTPUT); ??} }const ?PROGMEM?uint8_t ?alphabets[][5 ]?=?{ ??{?0 ,?0 ,?0 ,?0 ,?0 ?},???????//?Space ??{?30 ,?5 ,?5 ,?30 ,?0 ?},?????//?A ??{?31 ,?21 ,?21 ,?10 ,?0 ?},???//?B ??{?14 ,?17 ,?17 ,?10 ,?0 ?},???//?C ??{?31 ,?17 ,?17 ,?14 ,?0 ?},???//?D ??{?31 ,?21 ,?21 ,?17 ,?0 ?},???//?E ??{?31 ,?20 ,?20 ,?16 ,?0 ?},???//?F ??{?14 ,?17 ,?19 ,?10 ,?0 ?},???//?G ??{?31 ,?4 ,?4 ,?4 ,?31 ?},?????//?H ??{?0 ,?17 ,?31 ,?17 ,?0 ?},????//?I ??{?0 ,?17 ,?30 ,?16 ,?0 ?},????//?J ??{?31 ,?4 ,?10 ,?17 ,?0 ?},????//?K ??{?31 ,?1 ,?1 ,?1 ,?0 ?},??????//?L ??{?31 ,?12 ,?3 ,?12 ,?31 ?},???//?M ??{?31 ,?12 ,?3 ,?31 ,?0 ?},????//?N ??{?14 ,?17 ,?17 ,?14 ,?0 ?},???//?O ??{?31 ,?20 ,?20 ,?8 ,?0 ?},????//?P ??{?14 ,?17 ,?19 ,?14 ,?2 ?},???//?Q ??{?31 ,?20 ,?22 ,?9 ,?0 ?},????//?R ??{?8 ,?21 ,?21 ,?2 ,?0 ?},?????//?S ??{?16 ,?16 ,?31 ,?16 ,?16 ?},??//?T ??{?30 ,?1 ,?1 ,?30 ,?0 ?},?????//?U ??{?24 ,?6 ,?1 ,?6 ,?24 ?},?????//?V ??{?28 ,?3 ,?12 ,?3 ,?28 ?},????//?W ??{?17 ,?10 ,?4 ,?10 ,?17 ?},???//?X ??{?17 ,?10 ,?4 ,?8 ,?16 ?},????//?Y ??{?19 ,?21 ,?21 ,?25 ,?0 ?},???//?Z ??{?31 ,?17 ,?31 ,?0 ,?0 ?},????//?0 ??{?18 ,?31 ,?16 ,?0 ,?0 ?},????//?1 ??{?29 ,?21 ,?23 ,?0 ,?0 ?},????//?2 ??{?21 ,?21 ,?31 ,?0 ,?0 ?},????//?3 ??{?7 ,?4 ,?31 ,?4 ,?0 ?},??????//?4 ??{?23 ,?21 ,?29 ,?0 ,?0 ?},????//?5 ??{?31 ,?21 ,?29 ,?0 ,?0 ?},????//?6 ??{?1 ,?1 ,?31 ,?0 ,?0 ?},??????//?7 ??{?31 ,?21 ,?31 ,?0 ,?0 ?},????//?8 ??{?23 ,?21 ,?31 ,?0 ,?0 ?},????//?9 };void ?displayLine (uint8_t ?line) ? { ??for ?(uint8_t ?i?=?0 ;?i?5 ;?i )?{ ????digitalWrite(leds[i],?(line?