# LightDance LED進階篇 ## 燈珠簡介 ![image](https://hackmd.io/_uploads/BJNTEscO0.png) | 編號 | 符號 | 功能描述 | |------|------|-------------------| | 1 | VDD | LED 電源供應 | | 2 | DOUT | 控制數據信號輸出 | | 3 | VSS | 接地 | | 4 | DIN | 控制數據信號輸入 | 一般來說在焊接的時候不會直接拿燈珠來焊,會在後面加上一些外圍電路 整合變成 ![image](https://hackmd.io/_uploads/ryyBro9_0.png) ## 訊號 而最重要的就是,訊號的部分,電腦是怎麼控制的? {%youtube PPVi3bI7_Z4 %} {%youtube 6iK7KoPF4Ew %} [中文版影片(Bilibili)](https://www.bilibili.com/video/BV1QM4y1g7Uk/?spm_id_from=333.337.search-card.all.click) 首先我們知道,RGB分別可以用8個二進位的數字來控制亮度 也就是可以控制0~255 如果不知道二進位的話可以參考[這個](https://chanchandev.com/note/Binary/binary-intro/3766688417/) 分別控制三個燈光我們就可以得到$256^3$種顏色 所以一顆燈的顏色就是24bit的資料 ![image](https://hackmd.io/_uploads/SJEuDi9O0.png) :::info 而他要怎麼傳輸數據呢? 答案是透過訊號線上的電壓變化 ::: 我們觀察一個周期內的電壓波型(大約1.3us) |代表的意義|0|1|RET| |:--:|:--:|:--:|:--: |波型|![image](https://hackmd.io/_uploads/BJ2Wdo5OR.png)|![image](https://hackmd.io/_uploads/S1OM_squR.png)|![image](https://hackmd.io/_uploads/SJmXui9u0.png)| 所以我們可以看一些範例: |波型|代表的數據(G,R,B)| |:--:|:--:| ![image](https://hackmd.io/_uploads/HybUFo9dR.png)|0,170,0 |![image](https://hackmd.io/_uploads/H1oJ9j5uC.png)|170,0,0 ![image](https://hackmd.io/_uploads/rJ1b9scd0.png)|0,0,170 讀到波型數據後,會將這些數據讀入鎖存器 同時前段的24bit代表該燈顏色的數據會被刪除,將剩下的數據傳往下一顆 直到RET訊號後,顯示各燈相應的顏色。 ## DATAsheet 如果想閱讀更多的話可以參考[Datasheet](https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf) 裡面有詳細的技術規格 --- ### 參考文章 https://frank1025.pixnet.net/blog/post/348256387 ws2812 datasheet https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf