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.
WS281X.h
00001 /* WS281X.h (for LPC82X/STM32F0x/STM32F446/STM32F746xx) 00002 * mbed Microcontroller Library 00003 * Copyright (c) 2016 muetch, t.kuroki 00004 * Allrights reserved. 00005 * 00006 * Rev 0.97 2016-09-07 00007 * Rev 0.98 2016-09-08 00008 */ 00009 00010 #pragma once 00011 00012 #ifndef WS281X_H 00013 #define WS281X_H 00014 00015 //#include "mbed.h" 00016 #include "PixelBuffer.h" 00017 00018 //---------------------------------------------------------------------------- 00019 /** 00020 * WS281X 00021 */ 00022 class WS281X : public RGBPixels 00023 { 00024 public: 00025 /** 00026 Order of r, g and b bytes 00027 */ 00028 enum RGBOrder 00029 { 00030 RGB = 0, RBG, GRB, GBR, BRG, BGR 00031 }; 00032 00033 /** 00034 * Initializes the addressable led bus 00035 * 00036 * @param txPin - The output pin on wich the addressable leds are connected 00037 * @param pinMode - The output pin mode PullUp, PullDown, PullNone, OpenDrain 00038 * @param maxPixels - Number of the addressable leds 00039 * @param RGBOrder - The order in wich the r, g and b bytes are expected 00040 */ 00041 WS281X(PinName txPin, PinMode pinMode = PullNone, int maxPixels = MAX_PIXELS, RGBOrder rgbOrder = WS281X::RGB); 00042 WS281X(PinName txPin, PinMode pinMode = PullNone, RGBColor *buffer = 0, int maxPixels = 0, RGBOrder rgbOrder = WS281X::RGB); 00043 00044 RGBOrder rgbOrder() { return _rgb_order; } 00045 RGBOrder rgbOrder(RGBOrder order); 00046 00047 void show(); 00048 void show(const RGBColor color); 00049 00050 RGBColor operator[](int index) const 00051 { 00052 if (_pixels && (uint16_t)index < _num_pixels) 00053 return _pixels[index]; 00054 return _dummy_pixel; 00055 } 00056 00057 RGBColor& operator[](int index) 00058 { 00059 if (_pixels && (uint16_t)index < _num_pixels) 00060 return _pixels[index]; 00061 return _dummy_pixel; 00062 } 00063 00064 operator RGBColor*() const { return _pixels; } 00065 00066 protected: 00067 00068 private: 00069 PinName _txPin; 00070 gpio_t _gpio; 00071 RGBOrder _rgb_order; 00072 int _1st, _2nd, _3rd; 00073 00074 #if defined(TARGET_NXP) 00075 typedef uint32_t regsize_t; 00076 #elif defined(TARGET_STM32F0) || defined(TARGET_STM32F1) 00077 typedef uint32_t regsize_t; 00078 #elif defined(TARGET_STM) 00079 typedef uint16_t regsize_t; 00080 #else 00081 #error "not supported CPU!!" 00082 #endif 00083 #if defined(TARGET_STM) 00084 void pin_mode_ex(PinName pin, PinMode mode); 00085 #endif 00086 void pin_init(PinName txPin, PinMode pinMode); 00087 void writeByte(__IO regsize_t *reg_set, __IO regsize_t *reg_clr, regsize_t *mask, uint8_t value); 00088 }; 00089 00090 //---------------------------------------------------------------------------- 00091 #endif // end of WS281X_H
Generated on Thu Jul 14 2022 04:31:44 by
1.7.2