← 專案持續維護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 之間跳來跳去。

  • 為什麼按了按鈕沒有馬上換? 按鈕接在中斷腳位,按下的瞬間只會把「模式」加一;程式要等這一輪呼吸或快閃跑完,下一輪才照新的模式亮。模擬裡也是這樣。

一路改版

從手機遙控到一顆按鈕

  1. 玻璃瓶裡的銅線燈

    早期v1.0

    瓶子裡的星光

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

  2. 用手機遙控

    早期v1.2

    手機遙控

    用手機上的滑桿調整亮度和閃爍頻率,切換小夜燈、快閃、呼吸燈。

  3. 藍色燈光的遙控版

    2020.04v1.3

    無線遙控器

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

  4. 一邊接線,一邊用電表量電壓

    2020.09v1.4

    一顆按鈕

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

  5. 三段模式加旋鈕的接線圖

    2020.12v1.5

    加上旋鈕

    同一套電路也拿來改裝籐球燈:多一顆旋鈕,轉一轉就能調整亮度、呼吸的快慢和閃爍的頻率。

早期版本

遙控的星光瓶

  • v1.2 手機遙控

    滑桿調亮度和頻率,按鈕切換模式。

  • v1.3 遙控器

    藍色的銅線燈,用遙控器切換模式。

接線圖

在麵包板上接起來

改裝籐球燈時畫的三種接法,從最簡單的一顆按鈕,到多一顆旋鈕。

  • 三段模式:按鈕切換,用板子上內建的 LED

  • 三段模式:按鈕切換,外接 LED

  • 三段模式加旋鈕:轉旋鈕調亮度和速度

做完之後會知道

一盞小夜燈裡的學問

  • PWM 調光。用開關的時間比例控制亮度。
  • 視覺暫留。開關夠快,眼睛只看到平均的亮度。
  • 中斷。按鈕不必一直被檢查,按下的瞬間程式就知道。
  • 微控制器。8 隻腳的晶片,也能用 Arduino 寫程式。
  • 產品思維。從能動,到好看、好用、電線藏起來。

相簿

製作過程

  • 永生花放在棉花上

  • 棉花把電路和電線藏起來

  • 木頭底座

  • v1.0:玻璃瓶裡的銅線燈