Phương Pháp Charlieplexing Và LoLShield VU Meter
Maybe your like
I. GIỚI THIỆU
Charlieplexing đã được đề xuất vào đầu năm 1995 bởi Charlie Allen tại Maxim Integrated. Tuy nhiên, phương pháp này đã được biết đến và sử dụng trong những năm 1980 và được mô tả chi tiết vào năm 1979 trong một bằng sáng chế của Christopher W. Malinowski, Heinz Rinderle, và Martin Siegle thuộc Bộ Nghiên cứu và Phát triển, AEG-Telefunken, Heilbronn, Đức với tên gọi là "Hệ thống tín hiệu ba trạng thái".Nguồn tham khảo: https://en.wikipedia.org/wiki/Charlieplexing
Theo Charliplexing, ta có mối liên hệ giữa số lượng PINs vi điều khiển và số lượng LEDs cần điều khiển như sau:
| Pins | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 20 | 40 | n |
| LEDs | 0 | 2 | 6 | 12 | 20 | 30 | 42 | 56 | 72 | 90 | 110 | 132 | 380 | 1560 | n2 − n |
Xét trường hợp dùng 3 PINs để điều khiển 6 LEDs:

| LED # | PIN X1 | PIN X2 | PIN X3 |
| LED 1 | H | L | Z |
| LED 2 | L | H | Z |
| LED 3 | Z | H | L |
| LED 4 | Z | L | H |
| LED 5 | H | Z | L |
| LED 6 | L | Z | H |
Chúng ta chú ý về ba trạng thái của chân Arduino là: "high" (5V), "low" (0V) và "input". Chế độ "input" đặt chân Arduino ở trạng thái tổng trở cao (high-impedance state). Xem thêm tại link: https://www.arduino.cc/en/Tutorial/DigitalPins
II. CHUẨN BỊ
List vật tư chuẩn bị theo bảng bên dưới:
| No. | Tên vật tư | Số lượng | Đơn vị | Notes |
| 1 | Board Arduino Uno | 1 | pcs |
|
| 2 | Led 3mm | 126 | pcs | Mua 150 pcs để spare |
| 3 | Jump đơn đực 2.54mm 1x40P | 2 | pcs | Loại dài 19mm |
| 4 | Bản đồng 2 mặt, kích thước bằng board arduino uno | 1 | pcs |
|
| 5 | Bản in mặt Top và Bottom cho LoLShield | 1 | pcs |
|
| 6 | Jack 3.5mm và đoạn dây | 1 | pcs | Để làm jack cắm vào laptop/ desktop/ điện thoại/ máy tính bảng… |
| 7 | Pin 9V | 1 | pcs |
|
| 8 | Đế Pin 9V có sẵn giắc DC | 1 | pcs |
|
| 9 | Các món khác: Dung dịch ăn mòn đồng, cồn, khoan … | 1 | set |
|
III. PHẦN CỨNG
Tham khảo từ Jimmie P Rodgers: https://github.com/jprodgers/LoLshield, bao gồm bản vẽ Eagle, thư viện LoLShield và các chương trình test.
3.1. SƠ ĐỒ NGUYÊN LÝ

3.2. MẠCH IN
Khi làm mạch in 2 mặt, các bạn có thể tham khảo trên internet, có rất nhiều link hướng dẫn chi tiết.
- Mạch in Top, Bottom theo hình bên dưới

- Hình thực tế board LoLShield

Lưu ý
Khi hàn đèn LED, chúng ta nên làm theo từng hàng (từ hàng 1 đến hàng 9, mỗi hàng có 14 led) theo thứ tự lớp Bottom trước và lớp Top sau. Nếu ta hàn nhiều hàng (hay cột) cùng một lúc thì rất khó để kiểm tra LED hỏng hay chạm chập…. Sau khi hàn xong từng hàng, chúng ta add thư viện của LoLShield & dùng chương trình sau để test từng hàng LED:
#include "Charliplexing.h" int ad=50; // Delay có thể thay đổi void setup() { LedSign::Init(); // Khởi động LoLShield } void loop() { for (int x=0; x<14; x++) { for (int y=0; y<9; y++) { LedSign::Set(x,y,1); // Bật LED tại vị trí x,y delay(ad); } } delay(1000); for (int x=0; x<14; x++) { for (int y=0; y<9; y++) { LedSign::Set(x,y,0); // Tắt LED tại vị trí x,y delay(ad); } } delay(1000); }Ví dụ:
- Để test 14 LED hàng 1, ở vòng lặp: for (int y=0; y<9; y++), ta thay thế bằng for (int y=0; y<1; y++). LED nào không sáng theo thứ tự hoặc tắt theo thứ tự, chúng ta phải kiểm tra và fix nó trước khi hàn 14 LED ở hàng mới.
- Để test 28 LED hàng 1 & hàng 2, ta thay thế bằng for (int y=0; y<2; y++)
- ….Cứ thế cho đến hết 9 hàng: (int y=0; y<9; y++)
- Xem tại Video bên dưới: LoLShield - First Test.
IV. CHƯƠNG TRÌNH
Mình sẽ dùng LoLShield để làm VU Meter bằng biến đổi FFT. VU meter này kết nối trực tiếp đến laptop/desktop, mobile phone, tablet hay các thiết bị chơi nhạc khác qua jack 3.5mm.
4.1. TÌM HIỂU FFT
a. Tham khảo FFT
Các bạn có thể tham khảo FFT tại các trang:
- https://en.wikipedia.org/wiki/Fast_Fourier_transform
- https://vi.wikipedia.org/wiki/Bi%E1%BA%BFn_%C4%91%E1%BB%95i_Fourier_nhanh
b. FFT dùng Microsoft Excel
Cách cài đặt và phân tích FFT, ở đây mình dùng bản Microsoft Excel 2010:
- Cách cài đặt Analysis Toolpak: https://technet.microsoft.com/en-us/library/ff969363.aspx
- Các hàm phân tích trong Analysis Toolpak trong đó có hàm Fourier Analysis: https://support.office.com/en-us/article/Use-the-Analysis-ToolPak-to-perform-complex-data-analysis-6c67ccf0-f4a9-487c-8dec-bdb5a2cefab6
c. Mô phỏng FFT bằng Microsoft Excel 2010
- Dạng sóng ở miền thời gian.
- VD: Chúng ta muốn phân tích một tín hiệu bao gồm 3 thành phần như sau:
| Amplitude 1: | 20 | Phase angle 1: | 0 | rad | Frequency 1: | 50 | Hz |
| Amplitude 2: | 10 | Phase angle 2: | 0.8 | rad | Frequency 2: | 1000 | Hz |
| Amplitude 3: | 5 | Phase angle 3: | 0.5 | rad | Frequency 3: | 2000 | Hz |
Ở miền thời gian, tín hiệu này có dạng:

- Ở miền tần số, ta cài đặt các thông số sau
| FFT settings | |||
| Number of data points: | 256 points | Sampling frequency: | 10000 |
| Total time analysed: | 0.0255 sec | Sampling interval: | 1.00E-04 |
| Folding frequency: | 39.1 Hz | Frequency ratio sampling/signal: | 200.0 |
Các lưu ý:
- Tần số lấy mẫu (Sampling frequency): 10,000. Tại sao lại chọn là 10,000 ? Vì hàm analogRead() cần 100us cho một lần lấy mẫu, hay trong 1s Arduino Uno có thể đọc 10,000 lần.???. Xem link: http://arduino.vn/reference/analogread.
- Sampling frequency =1/Sampling_interval (1/100 us).
- Frequency ratio sampling/signal = 200, có nghĩa với tín hiệu 50Hz, nó sẽ lấy mẫu được 200 lần trong một chu kỳ, với 1,000Hz sẽ là 10 lần và 2,000Hz sẽ là 5 lần.
Xem Chart bên dưới:

Dùng Analysis Toolpak trong Excel 2010, ta sẽ được bảng tính như sau:
| No. | Time | FFT Input Range | FFT Freq. | FFT Output Range | Amplitude | Phase |
| 1 | 0.0000 | 31.35 | 0.00 | 619.475828315019 | 4.84 | 0.00 |
| 2 | 0.0001 | 20.49 | 39.06 | 1598.98315332511+1516.29252775508i | 17.22 | 0.76 |
| 3 | 0.0002 | 10.33 | 78.13 | -439.874022236096-818.044769750756i | 7.26 | -2.06 |
| 4 | 0.0003 | 8.79 | 117.19 | -145.415581635527-392.234183252506i | 3.27 | -1.93 |
| 5 | 0.0004 | 13.63 | 156.25 | -77.8754788500501-266.705188002199i | 2.17 | -1.85 |
| 6 | 0.0005 | 17.17 | 195.31 | -50.7822571796726-203.567938289581i | 1.64 | -1.82 |
| 7 | 0.0006 | 17.30 | 234.38 | -37.2355546767885-164.670093633188i | 1.32 | -1.79 |
| 8 | 0.0007 | 19.23 | 273.44 | -29.6571525892296-137.926195800295i | 1.10 | -1.78 |
| 9 | 0.0008 | 26.21 | 312.50 | -25.1864370957745-118.200184394654i | 0.94 | -1.78 |
| 10 | 0.0009 | 32.69 | 351.56 | -22.5443346931058-102.904148256072i | 0.82 | -1.79 |
| 11 | 0.0010 | 30.38 | 390.63 | -21.0953465856794-90.577438905779i | 0.73 | -1.80 |
| 12 | 0.0011 | 19.31 | 429.69 | -20.5049845748721-80.3239103354286i | 0.65 | -1.82 |
| 13 | 0.0012 | 8.97 | 468.75 | -20.5971564663538-71.5554201041117i | 0.58 | -1.85 |
| 14 | 0.0013 | 7.24 | 507.81 | -21.2900370848161-63.8617677256797i | 0.53 | -1.89 |
| 15 | 0.0014 | 11.88 | 546.88 | -22.5673160966261-56.9383689895829i | 0.48 | -1.95 |
| 16 | 0.0015 | 15.24 | 585.94 | -24.4683864019778-50.5418503873616i | 0.44 | -2.02 |
| 17 | 0.0016 | 15.18 | 625.00 | -27.0919512080334-44.4587913776866i | 0.41 | -2.12 |
| 18 | 0.0017 | 16.93 | 664.06 | -30.6137602478108-38.4785895952303i | 0.38 | -2.24 |
| 19 | 0.0018 | 23.72 | 703.13 | -35.3256814457696-32.3623392867533i | 0.37 | -2.40 |
| 20 | 0.0019 | 30.03 | 742.19 | -41.7152006976928-25.7958132568574i | 0.38 | -2.59 |
| 21 | 0.0020 | 27.54 | 781.25 | -50.6335837866319-18.3013906551793i | 0.42 | -2.79 |
| 22 | 0.0021 | 16.30 | 820.31 | -63.6860150184326-9.04256120577504i | 0.50 | -3.00 |
| 23 | 0.0022 | 5.78 | 859.38 | -84.2741183231633+3.69098086930932i | 0.66 | 3.10 |
| 24 | 0.0023 | 3.89 | 898.44 | -121.046249201556+24.1803636871356i | 0.96 | 2.94 |
| 25 | 0.0024 | 8.36 | 937.50 | -204.28851337902+67.3314078183086i | 1.68 | 2.82 |
| 26 | 0.0025 | 11.56 | 976.56 | -566.229885491844+247.253769877234i | 4.83 | 2.73 |
| 27 | 0.0026 | 11.35 | 1015.63 | 883.233600869029-462.832295879653i | 7.79 | -0.48 |
| 28 | 0.0027 | 12.94 | 1054.69 | 262.490627071792-156.000704279148i | 2.39 | -0.54 |
| 29 | 0.0028 | 19.58 | 1093.75 | 159.287310464259-103.510969200505i | 1.48 | -0.58 |
| 30 | 0.0029 | 25.75 | 1132.81 | 116.96592714811-81.0080782258315i | 1.11 | -0.61 |
| 31 | 0.0030 | 23.11 | 1171.88 | 94.0146098579738-68.085663839843i | 0.91 | -0.63 |
| 32 | 0.0031 | 11.74 | 1210.94 | 79.6730456812527-59.445285218439i | 0.78 | -0.64 |
| 33 | 0.0032 | 1.09 | 1250.00 | 69.9079267346952-53.0935910940687i | 0.69 | -0.65 |
| 34 | 0.0033 | -0.94 | 1289.06 | 62.8678581984469-48.1090894463954i | 0.62 | -0.65 |
| 35 | 0.0034 | 3.42 | 1328.13 | 57.5848620863155-44.0038211834773i | 0.57 | -0.65 |
| 36 | 0.0035 | 6.50 | 1367.19 | 53.5048284965842-40.4921888489716i | 0.52 | -0.65 |
| 37 | 0.0036 | 6.17 | 1406.25 | 50.2890118570707-37.3928085669831i | 0.49 | -0.64 |
| 38 | 0.0037 | 7.65 | 1445.31 | 47.7202039315541-34.581575537561i | 0.46 | -0.63 |
| 39 | 0.0038 | 14.20 | 1484.38 | 45.6545859643112-31.9668365861595i | 0.44 | -0.61 |
| 40 | 0.0039 | 20.26 | 1523.44 | 43.9955428048605-29.4748173432364i | 0.41 | -0.59 |
| 41 | 0.0040 | 17.54 | 1562.50 | 42.6789951731854-27.0398309503376i | 0.39 | -0.56 |
| 42 | 0.0041 | 6.08 | 1601.56 | 41.6654023668098-24.5962776552477i | 0.38 | -0.53 |
| 43 | 0.0042 | -4.65 | 1640.63 | 40.9362695377141-22.0702340449947i | 0.36 | -0.49 |
| 44 | 0.0043 | -6.75 | 1679.69 | 40.4946162681858-19.3681196851971i | 0.35 | -0.45 |
| 45 | 0.0044 | -2.47 | 1718.75 | 40.3704329438848-16.3582065335937i | 0.34 | -0.38 |
| 46 | 0.0045 | 0.55 | 1757.81 | 40.6348289135887-12.8359382799869i | 0.33 | -0.31 |
| 47 | 0.0046 | 0.16 | 1796.88 | 41.4331762844692-8.45057401246389i | 0.33 | -0.20 |
| 48 | 0.0047 | 1.59 | 1835.94 | 43.0678262015699-2.52815965765652i | 0.34 | -0.06 |
| 49 | 0.0048 | 8.09 | 1875.00 | 46.2379242277021+6.43641018035746i | 0.36 | 0.14 |
| 50 | 0.0049 | 14.12 | 1914.06 | 52.9353116564024+22.6715705019629i | 0.45 | 0.40 |
| 51 | 0.0050 | 11.35 | 1953.13 | 71.8226041144327+64.4807779951925i | 0.75 | 0.73 |
| 52 | 0.0051 | -0.13 | 1992.19 | 284.965229052573+516.138927392285i | 4.61 | 1.07 |
| 53 | 0.0052 | -10.88 | 2031.25 | -35.9289476708623-159.433235268308i | 1.28 | -1.79 |
| 54 | 0.0053 | -13.00 | 2070.31 | -0.736121344850798-83.5757027087092i | 0.65 | -1.58 |
| 55 | 0.0054 | -8.72 | 2109.38 | 9.05625310628853-61.4243488006924i | 0.49 | -1.42 |
| 56 | 0.0055 | -5.71 | 2148.44 | 13.5229111745346-50.6010052067137i | 0.41 | -1.31 |
| 57 | 0.0056 | -6.09 | 2187.50 | 16.0072998657929-44.0408780039973i | 0.37 | -1.22 |
| 58 | 0.0057 | -4.65 | 2226.56 | 17.5454159914645-39.5501811311435i | 0.34 | -1.15 |
| 59 | 0.0058 | 1.86 | 2265.63 | 18.5626783750208-36.2246531318575i | 0.32 | -1.10 |
| 60 | 0.0059 | 7.91 | 2304.69 | 19.2654793681068-33.6230411862422i | 0.30 | -1.05 |
| 61 | 0.0060 | 5.17 | 2343.75 | 19.7657451820846-31.5041045424481i | 0.29 | -1.01 |
| 62 | 0.0061 | -6.28 | 2382.81 | 20.1292173502535-29.7246258536078i | 0.28 | -0.98 |
| 63 | 0.0062 | -16.99 | 2421.88 | 20.3968983890455-28.1940751350954i | 0.27 | -0.94 |
| 64 | 0.0063 | -19.06 | 2460.94 | 20.5955834011746-26.8523200857297i | 0.26 | -0.92 |
| 65 | 0.0064 | -14.73 | 2500.00 | 20.7434478503684-25.6577802012562i | 0.26 | -0.89 |
| 66 | 0.0065 | -11.66 | 2539.06 | 20.853200431399-24.5807277842889i | 0.25 | -0.87 |
| 67 | 0.0066 | -11.98 | 2578.13 | 20.9339535645344-23.599302022831i | 0.25 | -0.85 |
| 68 | 0.0067 | -10.47 | 2617.19 | 20.9923803235776-22.6970345393925i | 0.24 | -0.82 |
| 69 | 0.0068 | -3.88 | 2656.25 | 21.0334556260832-21.8612569363393i | 0.24 | -0.80 |
| 70 | 0.0069 | 2.25 | 2695.31 | 21.0609455697309-21.0820437232397i | 0.23 | -0.79 |
| 71 | 0.0070 | -0.40 | 2734.38 | 21.0777389938245-20.3514914693578i | 0.23 | -0.77 |
| 72 | 0.0071 | -11.76 | 2773.44 | 21.0860772821105-19.6632154627175i | 0.23 | -0.75 |
| 73 | 0.0072 | -22.38 | 2812.50 | 21.0877168392448-19.0119907954129i | 0.22 | -0.73 |
| 74 | 0.0073 | -24.34 | 2851.56 | 21.0840460072579-18.3934915956444i | 0.22 | -0.72 |
| 75 | 0.0074 | -19.91 | 2890.63 | 21.076170527591-17.8040983513914i | 0.22 | -0.70 |
| 76 | 0.0075 | -16.72 | 2929.69 | 21.0649768944517-17.2407533621091i | 0.21 | -0.69 |
| 77 | 0.0076 | -16.92 | 2968.75 | 21.0511799159835-16.7008507858674i | 0.21 | -0.67 |
| 78 | 0.0077 | -15.29 | 3007.81 | 21.0353588296915-16.1821519384394i | 0.21 | -0.66 |
| 79 | 0.0078 | -8.58 | 3046.88 | 21.0179850119571-15.6827192841362i | 0.20 | -0.64 |
| 80 | 0.0079 | -2.31 | 3085.94 | 20.999443439354-15.2008644414239i | 0.20 | -0.63 |
| 81 | 0.0080 | -4.83 | 3125.00 | 20.9800494542817-14.7351068216768i | 0.20 | -0.61 |
| 82 | 0.0081 | -16.05 | 3164.06 | 20.9600619658281-14.2841404240942i | 0.20 | -0.60 |
| 83 | 0.0082 | -26.51 | 3203.13 | 20.9396939191801-13.8468069506703i | 0.20 | -0.58 |
| 84 | 0.0083 | -28.33 | 3242.19 | 20.9191206541269-13.422073864799i | 0.19 | -0.57 |
| 85 | 0.0084 | -23.74 | 3281.25 | 20.8984866192235-13.009016351101i | 0.19 | -0.56 |
| 86 | 0.0085 | -20.40 | 3320.31 | 20.8779107956622-12.6068023792698i | 0.19 | -0.54 |
| 87 | 0.0086 | -20.44 | 3359.38 | 20.8574911017337-12.2146802567395i | 0.19 | -0.53 |
| 88 | 0.0087 | -18.64 | 3398.44 | 20.8373079867847-11.8319681914133i | 0.19 | -0.52 |
| 89 | 0.0088 | -11.76 | 3437.50 | 20.8174273769394-11.4580454889068i | 0.19 | -0.50 |
| 90 | 0.0089 | -5.33 | 3476.56 | 20.7979030995321-11.09234508743i | 0.18 | -0.49 |
| 91 | 0.0090 | -7.67 | 3515.63 | 20.7787788861587-10.7343471940529i | 0.18 | -0.48 |
| 92 | 0.0091 | -18.71 | 3554.69 | 20.7600900334419-10.3835738330037i | 0.18 | -0.46 |
| 93 | 0.0092 | -29.00 | 3593.75 | 20.7418647845801-10.0395841533318i | 0.18 | -0.45 |
| 94 | 0.0093 | -30.63 | 3632.81 | 20.724125482062-9.70197037204962i | 0.18 | -0.44 |
| 95 | 0.0094 | -25.86 | 3671.88 | 20.7068895321952-9.37035425170194i | 0.18 | -0.42 |
| 96 | 0.0095 | -22.33 | 3710.94 | 20.6901702142336-9.04438402944776i | 0.18 | -0.41 |
| 97 | 0.0096 | -22.19 | 3750.00 | 20.6739773607688-8.72373172926759i | 0.18 | -0.40 |
| 98 | 0.0097 | -20.20 | 3789.06 | 20.6583179311014-8.40809080066119i | 0.17 | -0.39 |
| 99 | 0.0098 | -13.13 | 3828.13 | 20.6431964953971-8.09717403665584i | 0.17 | -0.37 |
| 100 | 0.0099 | -6.50 | 3867.19 | 20.6286156442602-7.79071173162878i | 0.17 | -0.36 |
| 101 | 0.0100 | -8.65 | 3906.25 | 20.6145763357444-7.48845004583527i | 0.17 | -0.35 |
| 102 | 0.0101 | -19.49 | 3945.31 | 20.6010781898128-7.19014954866825i | 0.17 | -0.34 |
| 103 | 0.0102 | -29.59 | 3984.38 | 20.5881197385268-6.89558391693896i | 0.17 | -0.32 |
| 104 | 0.0103 | -31.03 | 4023.44 | 20.5756986388483-6.604538768076i | 0.17 | -0.31 |
| 105 | 0.0104 | -26.06 | 4062.50 | 20.5638118538324-6.31681061101773i | 0.17 | -0.30 |
| 106 | 0.0105 | -22.33 | 4101.56 | 20.5524558070159-6.03220590008864i | 0.17 | -0.29 |
| 107 | 0.0106 | -21.99 | 4140.63 | 20.5416265140686-5.75054017921453i | 0.17 | -0.27 |
| 108 | 0.0107 | -19.81 | 4179.69 | 20.5313196951019-5.47163730552003i | 0.17 | -0.26 |
| 109 | 0.0108 | -12.54 | 4218.75 | 20.5215308705111-5.19532874288241i | 0.17 | -0.25 |
| 110 | 0.0109 | -5.72 | 4257.81 | 20.5122554427855-4.92145291723308i | 0.16 | -0.24 |
| 111 | 0.0110 | -7.67 | 4296.88 | 20.5034887663492-4.64985462642499i | 0.16 | -0.22 |
| 112 | 0.0111 | -18.32 | 4335.94 | 20.4952262071523-4.38038449842649i | 0.16 | -0.21 |
| 113 | 0.0112 | -28.22 | 4375.00 | 20.4874631935251-4.11289849235653i | 0.16 | -0.20 |
| 114 | 0.0113 | -29.47 | 4414.06 | 20.4801952595451-3.84725743750393i | 0.16 | -0.19 |
| 115 | 0.0114 | -24.31 | 4453.13 | 20.4734180819933-3.58332660609679i | 0.16 | -0.17 |
| 116 | 0.0115 | -20.40 | 4492.19 | 20.4671275118172-3.32097531597973i | 0.16 | -0.16 |
| 117 | 0.0116 | -19.87 | 4531.25 | 20.4613196008844-3.06007655990175i | 0.16 | -0.15 |
| 118 | 0.0117 | -17.50 | 4570.31 | 20.4559906246999-2.80050665832138i | 0.16 | -0.14 |
| 119 | 0.0118 | -10.05 | 4609.38 | 20.4511371016556-2.54214493310447i | 0.16 | -0.12 |
| 120 | 0.0119 | -3.05 | 4648.44 | 20.4467558093013-2.2848733996053i | 0.16 | -0.11 |
| 121 | 0.0120 | -4.83 | 4687.50 | 20.4428437980438-2.02857647498059i | 0.16 | -0.10 |
| 122 | 0.0121 | -15.31 | 4726.56 | 20.4393984026523-1.77314070068982i | 0.16 | -0.09 |
| 123 | 0.0122 | -25.04 | 4765.63 | 20.4364172518359-1.51845447735195i | 0.16 | -0.07 |
| 124 | 0.0123 | -26.12 | 4804.69 | 20.4338982761752-1.26440781026909i | 0.16 | -0.06 |
| 125 | 0.0124 | -20.80 | 4843.75 | 20.4318397146036-1.01089206400692i | 0.16 | -0.05 |
| 126 | 0.0125 | -16.72 | 4882.81 | 20.4302401196134-0.757799724613363i | 0.16 | -0.04 |
| 127 | 0.0126 | -16.03 | 4921.88 | 20.4290983613404-0.50502416802766i | 0.16 | -0.02 |
| 128 | 0.0127 | -13.52 | 4960.94 | 20.428413630628-0.252459433393483i | 0.16 | -0.01 |
| 129 | 0.0128 | -5.91 | 5000.00 | 20.4281854411381 | 0.16 | 0.00 |
| 130 | 0.0129 | 1.23 | 5039.06 | 20.428413630627+0.252459433394961i | 0.16 | 0.01 |
| 131 | 0.0130 | -0.40 | 5078.13 | 20.429098361341+0.505024168027035i | 0.16 | 0.02 |
| 132 | 0.0131 | -10.75 | 5117.19 | 20.4302401196137+0.757799724613164i | 0.16 | 0.04 |
| 133 | 0.0132 | -20.34 | 5156.25 | 20.4318397146038+1.01089206400681i | 0.16 | 0.05 |
| 134 | 0.0133 | -21.30 | 5195.31 | 20.4338982761752+1.26440781026899i | 0.16 | 0.06 |
| 135 | 0.0134 | -15.85 | 5234.38 | 20.4364172518358+1.51845447735192i | 0.16 | 0.07 |
| 136 | 0.0135 | -11.66 | 5273.44 | 20.4393984026526+1.77314070068967i | 0.16 | 0.09 |
| 137 | 0.0136 | -10.86 | 5312.50 | 20.442843798044+2.02857647498039i | 0.16 | 0.10 |
| 138 | 0.0137 | -8.23 | 5351.56 | 20.4467558093013+2.28487339960512i | 0.16 | 0.11 |
| 139 | 0.0138 | -0.53 | 5390.63 | 20.4511371016558+2.54214493310437i | 0.16 | 0.12 |
| 140 | 0.0139 | 6.71 | 5429.69 | 20.4559906247+2.80050665832128i | 0.16 | 0.14 |
| 141 | 0.0140 | 5.17 | 5468.75 | 20.4613196008844+3.06007655990155i | 0.16 | 0.15 |
| 142 | 0.0141 | -5.08 | 5507.81 | 20.4671275118174+3.32097531598001i | 0.16 | 0.16 |
| 143 | 0.0142 | -14.60 | 5546.88 | 20.4734180819933+3.58332660609672i | 0.16 | 0.17 |
| 144 | 0.0143 | -15.48 | 5585.94 | 20.4801952595455+3.84725743750395i | 0.16 | 0.19 |
| 145 | 0.0144 | -9.96 | 5625.00 | 20.4874631935252+4.11289849235648i | 0.16 | 0.20 |
| 146 | 0.0145 | -5.71 | 5664.06 | 20.4952262071522+4.38038449842644i | 0.16 | 0.21 |
| 147 | 0.0146 | -4.85 | 5703.13 | 20.5034887663493+4.6498546264249i | 0.16 | 0.22 |
| 148 | 0.0147 | -2.17 | 5742.19 | 20.5122554427855+4.92145291723316i | 0.16 | 0.24 |
| 149 | 0.0148 | 5.58 | 5781.25 | 20.5215308705111+5.19532874288225i | 0.17 | 0.25 |
| 150 | 0.0149 | 12.86 | 5820.31 | 20.5313196951018+5.47163730551993i | 0.17 | 0.26 |
| 151 | 0.0150 | 11.35 | 5859.38 | 20.5416265140685+5.75054017921436i | 0.17 | 0.27 |
| 152 | 0.0151 | 1.12 | 5898.44 | 20.552455807016+6.03220590008851i | 0.17 | 0.29 |
| 153 | 0.0152 | -8.37 | 5937.50 | 20.5638118538324+6.31681061101748i | 0.17 | 0.30 |
| 154 | 0.0153 | -9.23 | 5976.56 | 20.575698638848+6.60453876807559i | 0.17 | 0.31 |
| 155 | 0.0154 | -3.71 | 6015.63 | 20.5881197385272+6.89558391693944i | 0.17 | 0.32 |
| 156 | 0.0155 | 0.55 | 6054.69 | 20.601078189813+7.19014954866834i | 0.17 | 0.34 |
| 157 | 0.0156 | 1.40 | 6093.75 | 20.6145763357445+7.48845004583521i | 0.17 | 0.35 |
| 158 | 0.0157 | 4.07 | 6132.81 | 20.6286156442603+7.79071173162884i | 0.17 | 0.36 |
| 159 | 0.0158 | 11.81 | 6171.88 | 20.643196495397+8.09717403665569i | 0.17 | 0.37 |
| 160 | 0.0159 | 19.07 | 6210.94 | 20.6583179311016+8.40809080066177i | 0.17 | 0.39 |
| 161 | 0.0160 | 17.54 | 6250.00 | 20.6739773607688+8.72373172926761i | 0.18 | 0.40 |
| 162 | 0.0161 | 7.27 | 6289.06 | 20.6901702142333+9.04438402944803i | 0.18 | 0.41 |
| 163 | 0.0162 | -2.27 | 6328.13 | 20.7068895321954+9.37035425170195i | 0.18 | 0.42 |
| 164 | 0.0163 | -3.17 | 6367.19 | 20.724125482062+9.70197037204963i | 0.18 | 0.44 |
| 165 | 0.0164 | 2.30 | 6406.25 | 20.7418647845802+10.0395841533317i | 0.18 | 0.45 |
| 166 | 0.0165 | 6.50 | 6445.31 | 20.7600900334418+10.3835738330038i | 0.18 | 0.46 |
| 167 | 0.0166 | 7.29 | 6484.38 | 20.7787788861582+10.734347194053i | 0.18 | 0.48 |
| 168 | 0.0167 | 9.89 | 6523.44 | 20.7979030995326+11.0923450874299i | 0.18 | 0.49 |
| 169 | 0.0168 | 17.55 | 6562.50 | 20.8174273769396+11.4580454889067i | 0.19 | 0.50 |
| 170 | 0.0169 | 24.73 | 6601.56 | 20.8373079867847+11.8319681914131i | 0.19 | 0.52 |
| 171 | 0.0170 | 23.11 | 6640.63 | 20.8574911017338+12.2146802567394i | 0.19 | 0.53 |
| 172 | 0.0171 | 12.75 | 6679.69 | 20.8779107956623+12.6068023792698i | 0.19 | 0.54 |
| 173 | 0.0172 | 3.12 | 6718.75 | 20.8984866192235+13.0090163511008i | 0.19 | 0.56 |
| 174 | 0.0173 | 2.11 | 6757.81 | 20.9191206541269+13.4220738647992i | 0.19 | 0.57 |
| 175 | 0.0174 | 7.47 | 6796.88 | 20.9396939191801+13.8468069506703i | 0.20 | 0.58 |
| 176 | 0.0175 | 11.56 | 6835.94 | 20.9600619658284+14.2841404240943i | 0.20 | 0.60 |
| 177 | 0.0176 | 12.24 | 6875.00 | 20.9800494542817+14.7351068216768i | 0.20 | 0.61 |
| 178 | 0.0177 | 14.71 | 6914.06 | 20.9994434393538+15.2008644414238i | 0.20 | 0.63 |
| 179 | 0.0178 | 22.24 | 6953.13 | 21.0179850119572+15.6827192841362i | 0.20 | 0.64 |
| 180 | 0.0179 | 29.29 | 6992.19 | 21.0353588296913+16.1821519384396i | 0.21 | 0.66 |
| 181 | 0.0180 | 27.54 | 7031.25 | 21.0511799159837+16.7008507858673i | 0.21 | 0.67 |
| 182 | 0.0181 | 17.04 | 7070.31 | 21.0649768944517+17.240753362109i | 0.21 | 0.69 |
| 183 | 0.0182 | 7.26 | 7109.38 | 21.076170527591+17.8040983513913i | 0.22 | 0.70 |
| 184 | 0.0183 | 6.10 | 7148.44 | 21.084046007258+18.3934915956444i | 0.22 | 0.72 |
| 185 | 0.0184 | 11.31 | 7187.50 | 21.0877168392449+19.0119907954127i | 0.22 | 0.73 |
| 186 | 0.0185 | 15.24 | 7226.56 | 21.0860772821105+19.6632154627172i | 0.23 | 0.75 |
| 187 | 0.0186 | 15.75 | 7265.63 | 21.0777389938246+20.3514914693578i | 0.23 | 0.77 |
| 188 | 0.0187 | 18.07 | 7304.69 | 21.060945569731+21.0820437232396i | 0.23 | 0.79 |
| 189 | 0.0188 | 25.43 | 7343.75 | 21.0334556260832+21.8612569363391i | 0.24 | 0.80 |
| 190 | 0.0189 | 32.31 | 7382.81 | 20.9923803235774+22.6970345393925i | 0.24 | 0.82 |
| 191 | 0.0190 | 30.38 | 7421.88 | 20.9339535645343+23.5993020228303i | 0.25 | 0.85 |
| 192 | 0.0191 | 19.70 | 7460.94 | 20.8532004313992+24.5807277842904i | 0.25 | 0.87 |
| 193 | 0.0192 | 9.74 | 7500.00 | 20.7434478503684+25.6577802012562i | 0.26 | 0.89 |
| 194 | 0.0193 | 8.40 | 7539.06 | 20.5955834011732+26.8523200857296i | 0.26 | 0.92 |
| 195 | 0.0194 | 13.43 | 7578.13 | 20.3968983890461+28.1940751350956i | 0.27 | 0.94 |
| 196 | 0.0195 | 17.17 | 7617.19 | 20.1292173502538+29.724625853608i | 0.28 | 0.98 |
| 197 | 0.0196 | 17.50 | 7656.25 | 19.7657451820848+31.5041045424481i | 0.29 | 1.01 |
| 198 | 0.0197 | 19.62 | 7695.31 | 19.2654793681068+33.6230411862425i | 0.30 | 1.05 |
| 199 | 0.0198 | 26.80 | 7734.38 | 18.5626783750205+36.2246531318575i | 0.32 | 1.10 |
| 200 | 0.0199 | 33.48 | 7773.44 | 17.5454159914652+39.5501811311437i | 0.34 | 1.15 |
| 201 | 0.0200 | 31.35 | 7812.50 | 16.0072998657933+44.0408780039973i | 0.37 | 1.22 |
| 202 | 0.0201 | 20.49 | 7851.56 | 13.5229111745347+50.601005206714i | 0.41 | 1.31 |
| 203 | 0.0202 | 10.33 | 7890.63 | 9.05625310628891+61.4243488006926i | 0.49 | 1.42 |
| 204 | 0.0203 | 8.79 | 7929.69 | -0.736121344850414+83.5757027087097i | 0.65 | 1.58 |
| 205 | 0.0204 | 13.63 | 7968.75 | -35.9289476708616+159.433235268308i | 1.28 | 1.79 |
| 206 | 0.0205 | 17.17 | 8007.81 | 284.96522905257-516.138927392287i | 4.61 | -1.07 |
| 207 | 0.0206 | 17.30 | 8046.88 | 71.8226041144322-64.4807779951928i | 0.75 | -0.73 |
| 208 | 0.0207 | 19.23 | 8085.94 | 52.9353116564025-22.6715705019629i | 0.45 | -0.40 |
| 209 | 0.0208 | 26.21 | 8125.00 | 46.2379242277021-6.43641018035755i | 0.36 | -0.14 |
| 210 | 0.0209 | 32.69 | 8164.06 | 43.0678262015698+2.52815965765605i | 0.34 | 0.06 |
| 211 | 0.0210 | 30.38 | 8203.13 | 41.4331762844693+8.45057401246377i | 0.33 | 0.20 |
| 212 | 0.0211 | 19.31 | 8242.19 | 40.6348289135887+12.8359382799868i | 0.33 | 0.31 |
| 213 | 0.0212 | 8.97 | 8281.25 | 40.370432943885+16.3582065335937i | 0.34 | 0.38 |
| 214 | 0.0213 | 7.24 | 8320.31 | 40.4946162681859+19.3681196851966i | 0.35 | 0.45 |
| 215 | 0.0214 | 11.88 | 8359.38 | 40.936269537714+22.0702340449944i | 0.36 | 0.49 |
| 216 | 0.0215 | 15.24 | 8398.44 | 41.6654023668101+24.5962776552476i | 0.38 | 0.53 |
| 217 | 0.0216 | 15.18 | 8437.50 | 42.6789951731857+27.0398309503374i | 0.39 | 0.56 |
| 218 | 0.0217 | 16.93 | 8476.56 | 43.9955428048607+29.4748173432357i | 0.41 | 0.59 |
| 219 | 0.0218 | 23.72 | 8515.63 | 45.6545859643112+31.9668365861599i | 0.44 | 0.61 |
| 220 | 0.0219 | 30.03 | 8554.69 | 47.7202039315543+34.581575537561i | 0.46 | 0.63 |
| 221 | 0.0220 | 27.54 | 8593.75 | 50.2890118570708+37.3928085669829i | 0.49 | 0.64 |
| 222 | 0.0221 | 16.30 | 8632.81 | 53.5048284965845+40.492188848971i | 0.52 | 0.65 |
| 223 | 0.0222 | 5.78 | 8671.88 | 57.5848620863155+44.0038211834765i | 0.57 | 0.65 |
| 224 | 0.0223 | 3.89 | 8710.94 | 62.8678581984468+48.1090894463964i | 0.62 | 0.65 |
| 225 | 0.0224 | 8.36 | 8750.00 | 69.9079267346953+53.0935910940687i | 0.69 | 0.65 |
| 226 | 0.0225 | 11.56 | 8789.06 | 79.6730456812519+59.4452852184381i | 0.78 | 0.64 |
| 227 | 0.0226 | 11.35 | 8828.13 | 94.0146098579743+68.0856638398429i | 0.91 | 0.63 |
| 228 | 0.0227 | 12.94 | 8867.19 | 116.965927148111+81.0080782258314i | 1.11 | 0.61 |
| 229 | 0.0228 | 19.58 | 8906.25 | 159.28731046426+103.510969200504i | 1.48 | 0.58 |
| 230 | 0.0229 | 25.75 | 8945.31 | 262.490627071793+156.000704279147i | 2.39 | 0.54 |
| 231 | 0.0230 | 23.11 | 8984.38 | 883.233600869031+462.832295879648i | 7.79 | 0.48 |
| 232 | 0.0231 | 11.74 | 9023.44 | -566.229885491845-247.253769877231i | 4.83 | -2.73 |
| 233 | 0.0232 | 1.09 | 9062.50 | -204.28851337902-67.3314078183078i | 1.68 | -2.82 |
| 234 | 0.0233 | -0.94 | 9101.56 | -121.046249201556-24.1803636871349i | 0.96 | -2.94 |
| 235 | 0.0234 | 3.42 | 9140.63 | -84.2741183231626-3.69098086930834i | 0.66 | -3.10 |
| 236 | 0.0235 | 6.50 | 9179.69 | -63.6860150184329+9.0425612057756i | 0.50 | 3.00 |
| 237 | 0.0236 | 6.17 | 9218.75 | -50.6335837866317+18.3013906551798i | 0.42 | 2.79 |
| 238 | 0.0237 | 7.65 | 9257.81 | -41.7152006976924+25.7958132568574i | 0.38 | 2.59 |
| 239 | 0.0238 | 14.20 | 9296.88 | -35.3256814457688+32.3623392867536i | 0.37 | 2.40 |
| 240 | 0.0239 | 20.26 | 9335.94 | -30.6137602478112+38.4785895952313i | 0.38 | 2.24 |
| 241 | 0.0240 | 17.54 | 9375.00 | -27.0919512080333+44.4587913776868i | 0.41 | 2.12 |
| 242 | 0.0241 | 6.08 | 9414.06 | -24.4683864019782+50.5418503873613i | 0.44 | 2.02 |
| 243 | 0.0242 | -4.65 | 9453.13 | -22.5673160966255+56.9383689895836i | 0.48 | 1.95 |
| 244 | 0.0243 | -6.75 | 9492.19 | -21.2900370848165+63.8617677256801i | 0.53 | 1.89 |
| 245 | 0.0244 | -2.47 | 9531.25 | -20.5971564663532+71.555420104112i | 0.58 | 1.85 |
| 246 | 0.0245 | 0.55 | 9570.31 | -20.5049845748717+80.3239103354287i | 0.65 | 1.82 |
| 247 | 0.0246 | 0.16 | 9609.38 | -21.0953465856784+90.5774389057793i | 0.73 | 1.80 |
| 248 | 0.0247 | 1.59 | 9648.44 | -22.5443346931062+102.904148256073i | 0.82 | 1.79 |
| 249 | 0.0248 | 8.09 | 9687.50 | -25.186437095774+118.200184394654i | 0.94 | 1.78 |
| 250 | 0.0249 | 14.12 | 9726.56 | -29.6571525892295+137.926195800295i | 1.10 | 1.78 |
| 251 | 0.0250 | 11.35 | 9765.63 | -37.2355546767876+164.670093633189i | 1.32 | 1.79 |
| 252 | 0.0251 | -0.13 | 9804.69 | -50.7822571796725+203.567938289583i | 1.64 | 1.82 |
| 253 | 0.0252 | -10.88 | 9843.75 | -77.8754788500489+266.7051880022i | 2.17 | 1.85 |
| 254 | 0.0253 | -13.00 | 9882.81 | -145.415581635527+392.234183252507i | 3.27 | 1.93 |
| 255 | 0.0254 | -8.72 | 9921.88 | -439.874022236092+818.04476975076i | 7.26 | 2.06 |
| 256 | 0.0255 | -5.71 | 9960.94 | 1598.9831533251-1516.29252775508i | 17.22 | -0.76 |
Cuối cùng, chúng ta có được biến đổi FFT cho tín hiệu trên bằng cách vẽ Amplitude theo trục y và FFT Freq. theo trục x. Lưu ý ở cột FFT Output Range, dạng số a+b*i là số phức.

d. Thư viện FFT cho Arduino
- Link cho thư viện fix_fft: https://github.com/imagest108/arduino/tree/master/libraries/FixFFT
- Tác giả của thư viện fix_fft: http://forum.arduino.cc/index.php?topic=38153.0
4.2. CHƯƠNG TRÌNH VU METER CHO LOLSHIELD
Tham khảo từ trang: http://andydoro.com/vulol/ của Andy Doro. Các bạn xem Video thực tế bên dưới: LoLShield - FFT VU METER.
/* FFT for LoL Shield by Andy Doro http://andydoro.com/vulol/ based on FFT library and code from the Arduino forums and the Charlieplexing library for the LoL Shield. */ // include libraries #include "Charliplexing.h" #include "fix_fft.h" // where we read the audio voltage #define AUDIOPIN 0 char im[128], data[128]; char data_avgs[14]; int i=0,val; void setup() { LedSign::Init(); // initilizes the LoL Shield } void loop() { for (i=0; i < 128; i++){ val = analogRead(AUDIOPIN); // read voltage data[i] = val; im[i] = 0; }; fix_fft(data,im,7,0); for (i=0; i< 64;i++){ data[i] = sqrt(data[i] * data[i] + im[i] * im[i]); // this gets the absolute value of the values in the array, so we're only dealing with positive numbers }; // average bars together for (i=0; i<14; i++) { data_avgs[i] = data[i*4] + data[i*4 + 1] + data[i*4 + 2] + data[i*4 + 3]; // average together data_avgs[i] = map(data_avgs[i], 0, 20, 0, 9); // remap values for LoL } // set LoLShield for (int x=0; x < 14; x++) { for (int y=0; y < 9; y++) { if (y < data_avgs[13-x]) { // 13-x reverses the bars so low to high frequences are represented from left to right. LedSign::Set(x,y,1); // set the LED on } else { LedSign::Set(x,y,0); // set the LED off } } } }V. PHẦN KẾT
- Về thư viện fix_fft, các bạn có thể kiểm tra độ chính xác thông qua bảng LED ma trận với kích cỡ khoảng WxH = 64x128 kết hợp với các phần mềm Tone/ Frequency Generator, chẳng hạn như: http://onlinetonegenerator.com/
- Mục đích bài viết cũng để chia sẻ các Tool Data Analysis phân tích dữ liệu rất hay của Microsoft Excel. Ngoài Fourier Analysis, còn có công cụ khác như Histogram rất hữu ích trong việc phân tích, báo cáo trong công việc.
- Bài viết khá dài và trình bày có phẩn lủng củng. Mình rất mong nhận được ý kiến đóng góp của các bạn trong Cộng đồng Arduino Việt Nam.
Tag » Arduino Fix_fft.h
-
Fix_fft - Arduino Reference
-
Arduino/fix_fft.h At Master · Imagest108/arduino - GitHub
-
Fix_fft Library - GitHub
-
Fix_fft - Arduino Library List
-
[PDF] Include "fix_fft.h" // Header File For Fast Fourier Transform For Converting
-
What Is FFT And How Can You Implement It On An Arduino?
-
Arduino LED Music Spectrum - Instructables
-
Fix FFT Spectrum Analyser - YouTube
-
FastLED Fft KevZhuArt By Anthony.ollerton - Codebender
-
Using Arduino Fix_fft Or ArduinoFFT Library To Filter Some Specific ...
-
LED Equalizer Project - Aaron B Pederson
-
Audio Spectrum Analyzer Using Arduino Uno - Karkhana