123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- #include "hal/ws2812.h"
- #include "ets_sys.h"
- #include "osapi.h"
- #include "gpio.h"
- #include "math.h"
- #define LEDUPDATEDELAY 60
- LOCAL uint8_t pulseBuffer[100] = { 127, 135, 143, 151, 159, 166, 174, 181, 188,
- 195, 202, 208, 214, 220, 225, 230, 235, 239,
- 242, 246, 248, 250, 252, 253, 254, 255, 254,
- 253, 252, 250, 248, 246, 242, 239, 235, 230,
- 225, 220, 214, 208, 202, 195, 188, 181, 174,
- 166, 159, 151, 143, 135, 127, 119, 111, 103,
- 95, 88, 80, 73, 66, 59, 52, 46, 40, 34, 29,
- 24, 19, 15, 12, 8, 6, 4, 2, 1, 0, 0, 0, 1, 2,
- 4, 6, 8, 12, 15, 19, 24, 29, 34, 40, 46, 52,
- 59, 66, 73, 80, 88, 95, 103, 111, 119};
- LOCAL uint8_t ledState;
- LOCAL os_timer_t statLEDTimer;
- static void send_ws_0(void)
- {
- uint8_t time;
- #if WS2811_COMPATIBLE
- time = 7; while(time--) WRITE_PERI_REG( PERIPHS_GPIO_BASEADDR + GPIO_ID_PIN(WSGPIO), 1 );
- time = 28; while(time--) WRITE_PERI_REG( PERIPHS_GPIO_BASEADDR + GPIO_ID_PIN(WSGPIO), 0 );
- #else
-
-
-
- time = 6; while(time--) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, BIT(WSGPIO));
- time = 10; while(time--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, BIT(WSGPIO));
- #endif
- }
- static void send_ws_1(void)
- {
- uint8_t time;
- #if WS2811_COMPATIBLE
- time = 15; while(time--) WRITE_PERI_REG( PERIPHS_GPIO_BASEADDR + GPIO_ID_PIN(WSGPIO), 1 );
- time = 16; while(time--) WRITE_PERI_REG( PERIPHS_GPIO_BASEADDR + GPIO_ID_PIN(WSGPIO), 0 );
- #else
-
-
- time = 10; while(time--) GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, BIT(WSGPIO));
- time = 6; while(time--) GPIO_REG_WRITE(GPIO_OUT_W1TC_ADDRESS, BIT(WSGPIO));
-
- #endif
- }
|