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@4:874beb47b375, 2016-11-21 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Nov 21 09:28:49 2016 +0000
- Revision:
- 4:874beb47b375
- Parent:
- 3:e09aafc9cabe
5
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 3:e09aafc9cabe | 1 | //-------------------------------------------------------- |
MikamiUitOpen | 0:160ed7a225a4 | 2 | // SPI を使って WS2812B を点灯するためのクラス(ヘッダ) |
MikamiUitOpen | 3:e09aafc9cabe | 3 | // サポートするボード: Nucleo-F401RE, Nucleo-F446RE |
MikamiUitOpen | 3:e09aafc9cabe | 4 | // |
MikamiUitOpen | 4:874beb47b375 | 5 | // 2016/11/21, Copyright (c) 2016 MIKAMI, Naoki |
MikamiUitOpen | 3:e09aafc9cabe | 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 | 3:e09aafc9cabe | 11 | #error Select Nucleo-F401RE or Nucleo-F446RE. |
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 | 4:874beb47b375 | 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 | 2:2d4f2cc38f87 | 27 | virtual ~WS2812B() {} |
MikamiUitOpen | 2:2d4f2cc38f87 | 28 | |
MikamiUitOpen | 3:e09aafc9cabe | 29 | void Write(uint32_t x); // 一つの LED へ書き込む |
MikamiUitOpen | 3:e09aafc9cabe | 30 | void Write(uint32_t x, int k); // k 個の LED へ書き込む |
MikamiUitOpen | 2:2d4f2cc38f87 | 31 | void Reset() { wait_us(50); } |
MikamiUitOpen | 3:e09aafc9cabe | 32 | void Clear(int k); // k 個の LED を消灯 |
MikamiUitOpen | 0:160ed7a225a4 | 33 | |
MikamiUitOpen | 0:160ed7a225a4 | 34 | private: |
MikamiUitOpen | 4:874beb47b375 | 35 | SPI spi_; |
MikamiUitOpen | 0:160ed7a225a4 | 36 | SPI_TypeDef *mySpi_; |
MikamiUitOpen | 0:160ed7a225a4 | 37 | |
MikamiUitOpen | 0:160ed7a225a4 | 38 | void (WS2812B::*fp)(uint8_t); |
MikamiUitOpen | 0:160ed7a225a4 | 39 | void SendByte(uint8_t x) { (this->*fp)(x); } |
MikamiUitOpen | 0:160ed7a225a4 | 40 | void Send3Bytes(uint8_t x0, uint8_t x1, uint8_t x2); |
MikamiUitOpen | 0:160ed7a225a4 | 41 | void T0HL() { Send3Bytes(0xFE, 0x00, 0x00); } // 0 を送る |
MikamiUitOpen | 0:160ed7a225a4 | 42 | void T1HL() { Send3Bytes(0xFF, 0xFF, 0x00); } // 1 を送る |
MikamiUitOpen | 2:2d4f2cc38f87 | 43 | void SendByteNorm(uint8_t x); // データをそのまま送る |
MikamiUitOpen | 0:160ed7a225a4 | 44 | void SendByteInv(uint8_t x); // データを反転して送る |
MikamiUitOpen | 2:2d4f2cc38f87 | 45 | |
MikamiUitOpen | 2:2d4f2cc38f87 | 46 | // コピー・コンストラクタと代入演算子は使用禁止 |
MikamiUitOpen | 2:2d4f2cc38f87 | 47 | WS2812B(const WS2812B&); |
MikamiUitOpen | 2:2d4f2cc38f87 | 48 | WS2812B& operator=(const WS2812B&); |
MikamiUitOpen | 0:160ed7a225a4 | 49 | }; |
MikamiUitOpen | 0:160ed7a225a4 | 50 | } |
MikamiUitOpen | 0:160ed7a225a4 | 51 | #endif // STM32F4xx_WS2812B_HPP |