← 專案持續維護2020科技
小夜燈・ATtiny85
星光瓶
玻璃罩、永生花、一串銅線燈,底座藏著一片指甲大小的 ATtiny85。按一下按鈕,在小夜燈、呼吸燈、快閃之間切換。從手機遙控、無線遙控改到一顆按鈕,一路改了五個版本。

- 3 種小夜燈、呼吸燈、快閃
- 1 顆按鈕按一下換一種模式
- 8 隻腳ATtiny85,指甲大小的微控制器
- 5 個版本從手機遙控到一顆按鈕
v1.4 按鈕版:銅線燈從暗慢慢變亮,再慢慢變暗。
星光瓶
一朵會呼吸的玫瑰
玻璃罩裡是一朵永生花,底下鋪著棉花,一串銅線燈繞在花的周圍。
底座裡藏著電路,按一下側邊的按鈕,燈光就在小夜燈、呼吸燈、快閃之間切換。
底座裡有什麼
一顆晶片控制所有燈光

- ATtiny85只有 8 隻腳的微控制器,可以用 Arduino 寫程式,插 USB 就能供電。
- 銅線燈細銅線上焊著一顆顆小燈珠,可以隨意彎折,繞在花的周圍。
- 一顆按鈕接在晶片的中斷腳位,按下去的瞬間,程式就記下「換下一個模式」。
按按看
亮度是怎麼調出來的
按按鈕切換模式,看看程式送出的亮度值怎麼變化。勾選「加上旋鈕」,轉動旋鈕調整亮度和速度。
現在的模式:小夜燈
analogWrite 的值10
高電位的比例4%
這個模式
LED 其實只有「全亮」和「全暗」兩種狀態。PWM 讓它每秒開關很多次,開的時間比例越高,眼睛看起來就越亮。
模擬的數值照星光瓶 v1.41 與 v1.5 的程式:小夜燈亮度 10/255;呼吸燈從 0 亮到 150,每一階停 8 毫秒;快閃每次亮 40 毫秒、暗 40 毫秒。玻璃罩裡的亮度只是示意。
只有開和關,怎麼調亮度
開關得夠快
眼睛就分不出來
LED 只有全亮和全暗兩種狀態。程式裡的 analogWrite(0, 10) 不是輸出比較小的電壓,而是讓腳位快速地開、關、開、關:每個週期裡,開的時間只占 10/255,大約 4%。
開關的速度快到眼睛跟不上,看到的是「平均」的亮度,所以燈看起來是暗暗地亮著。這種方法叫做脈衝寬度調變(PWM)。
呼吸燈就是讓這個比例從 0 慢慢升到 150,再慢慢降回 0;快閃則是在 255 和 0 之間跳來跳去。
- 為什麼按了按鈕沒有馬上換? 按鈕接在中斷腳位,按下的瞬間只會把「模式」加一;程式要等這一輪呼吸或快閃跑完,下一輪才照新的模式亮。模擬裡也是這樣。
一路改版
從手機遙控到一顆按鈕

早期v1.0
瓶子裡的星光
細長的玻璃瓶塞進一整串銅線燈,就是星光瓶最早的樣子。

早期v1.2
手機遙控
用手機上的滑桿調整亮度和閃爍頻率,切換小夜燈、快閃、呼吸燈。

2020.04v1.3
無線遙控器
改用 ATtiny85 加上無線遙控模組,USB 供電,按遙控器在關燈和三種模式之間切換。

2020.09v1.4
一顆按鈕
拿掉遙控器,按鈕直接做在木頭底座上;放進永生花和棉花,把電線藏起來。

2020.12v1.5
加上旋鈕
同一套電路也拿來改裝籐球燈:多一顆旋鈕,轉一轉就能調整亮度、呼吸的快慢和閃爍的頻率。
早期版本
遙控的星光瓶
v1.2 手機遙控
滑桿調亮度和頻率,按鈕切換模式。
v1.3 遙控器
藍色的銅線燈,用遙控器切換模式。
接線圖
在麵包板上接起來
改裝籐球燈時畫的三種接法,從最簡單的一顆按鈕,到多一顆旋鈕。
三段模式:按鈕切換,用板子上內建的 LED
三段模式:按鈕切換,外接 LED
三段模式加旋鈕:轉旋鈕調亮度和速度
做完之後會知道
一盞小夜燈裡的學問
- PWM 調光。用開關的時間比例控制亮度。
- 視覺暫留。開關夠快,眼睛只看到平均的亮度。
- 中斷。按鈕不必一直被檢查,按下的瞬間程式就知道。
- 微控制器。8 隻腳的晶片,也能用 Arduino 寫程式。
- 產品思維。從能動,到好看、好用、電線藏起來。
相簿
製作過程
永生花放在棉花上
棉花把電路和電線藏起來
木頭底座
v1.0:玻璃瓶裡的銅線燈
光劍創作營也是用程式控制燈光:光劍創作營
光立方用程式控制 64 顆 LED
電荷偵測器三顆電晶體點亮一顆 LED