Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ws2812B.hpp@1:2d0f84d78ca2, 2016-09-24 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Sat Sep 24 06:24:10 2016 +0000
- Revision:
- 1:2d0f84d78ca2
- Parent:
- 0:160ed7a225a4
- Child:
- 2:2d4f2cc38f87
2
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| MikamiUitOpen | 0:160ed7a225a4 | 1 | //---------------------------------------------------- |
| MikamiUitOpen | 0:160ed7a225a4 | 2 | // SPI を使って WS2812B を点灯するためのクラス(ヘッダ) |
| MikamiUitOpen | 0:160ed7a225a4 | 3 | // サポートしているボード |
| MikamiUitOpen | 0:160ed7a225a4 | 4 | // Nucleo-F401RE, Nucleo-F446RE |
| MikamiUitOpen | 0:160ed7a225a4 | 5 | // 2016/09/24, Copyright (c) 2016 MIKAMI, Naoki |
| MikamiUitOpen | 0:160ed7a225a4 | 6 | //---------------------------------------------------- |
| MikamiUitOpen | 0:160ed7a225a4 | 7 | |
| MikamiUitOpen | 0:160ed7a225a4 | 8 | #include "mbed.h" |
| MikamiUitOpen | 0:160ed7a225a4 | 9 | |
| MikamiUitOpen | 0:160ed7a225a4 | 10 | #if !defined(STM32F401xE) && !defined(STM32F446xx) |
| MikamiUitOpen | 0:160ed7a225a4 | 11 | #error Select STM32F401 or STM32F446. |
| MikamiUitOpen | 0:160ed7a225a4 | 12 | #endif |
| MikamiUitOpen | 0:160ed7a225a4 | 13 | |
| MikamiUitOpen | 0:160ed7a225a4 | 14 | #ifndef STM32F4xx_WS2812B_HPP |
| MikamiUitOpen | 0:160ed7a225a4 | 15 | #define STM32F4xx_WS2812B_HPP |
| MikamiUitOpen | 0:160ed7a225a4 | 16 | |
| MikamiUitOpen | 0:160ed7a225a4 | 17 | namespace Mikami |
| MikamiUitOpen | 0:160ed7a225a4 | 18 | { |
| MikamiUitOpen | 0:160ed7a225a4 | 19 | class WS2812B |
| MikamiUitOpen | 0:160ed7a225a4 | 20 | { |
| MikamiUitOpen | 0:160ed7a225a4 | 21 | public: |
| MikamiUitOpen | 0:160ed7a225a4 | 22 | // コンストラクタ |
| MikamiUitOpen | 0:160ed7a225a4 | 23 | // inv = true: インバータを介して WS2812B に接続する場合 |
| MikamiUitOpen | 0:160ed7a225a4 | 24 | // = false: 直接 WS2812B に接続する場合 |
| MikamiUitOpen | 0:160ed7a225a4 | 25 | WS2812B(PinName pin, bool inv = false); |
| MikamiUitOpen | 0:160ed7a225a4 | 26 | |
| MikamiUitOpen | 0:160ed7a225a4 | 27 | void Write(uint32_t x); // 一つの LED へ書き込む |
| MikamiUitOpen | 0:160ed7a225a4 | 28 | void Reset(); // 一連の書き込みの最後に実行する |
| MikamiUitOpen | 0:160ed7a225a4 | 29 | void Clear(int k); // k 個の LED を消灯 |
| MikamiUitOpen | 0:160ed7a225a4 | 30 | |
| MikamiUitOpen | 0:160ed7a225a4 | 31 | private: |
| MikamiUitOpen | 0:160ed7a225a4 | 32 | SPI_TypeDef *mySpi_; |
| MikamiUitOpen | 0:160ed7a225a4 | 33 | |
| MikamiUitOpen | 0:160ed7a225a4 | 34 | void (WS2812B::*fp)(uint8_t); |
| MikamiUitOpen | 0:160ed7a225a4 | 35 | void SendByte(uint8_t x) { (this->*fp)(x); } |
| MikamiUitOpen | 0:160ed7a225a4 | 36 | void Send3Bytes(uint8_t x0, uint8_t x1, uint8_t x2); |
| MikamiUitOpen | 0:160ed7a225a4 | 37 | void T0HL() { Send3Bytes(0xFE, 0x00, 0x00); } // 0 を送る |
| MikamiUitOpen | 0:160ed7a225a4 | 38 | void T1HL() { Send3Bytes(0xFF, 0xFF, 0x00); } // 1 を送る |
| MikamiUitOpen | 0:160ed7a225a4 | 39 | void Dummy() { SendByte(0x00); } |
| MikamiUitOpen | 0:160ed7a225a4 | 40 | void SendByteNrm(uint8_t x); // データをそのまま送る |
| MikamiUitOpen | 0:160ed7a225a4 | 41 | void SendByteInv(uint8_t x); // データを反転して送る |
| MikamiUitOpen | 0:160ed7a225a4 | 42 | }; |
| MikamiUitOpen | 0:160ed7a225a4 | 43 | } |
| MikamiUitOpen | 0:160ed7a225a4 | 44 | #endif // STM32F4xx_WS2812B_HPP |