Based on hello world project, also see blink example[1].
Use led_strip to blink led
Add depndencies
Add gpio driver:
# fatal error: driver/gpio.h: No such file or directory
idf_component_register(SRCS "hello_world_main.c"
PRIV_REQUIRES spi_flash
REQUIRES driver
INCLUDE_DIRS "")
Add lib:
idf.py add-dependency espressif/led_strip
idf.py update-dependencies
Kconfig.projbuild:
menu "Example Configuration"
orsource "$IDF_PATH/examples/common_components/env_caps/$IDF_TARGET/Kconfig.env_caps"
choice BLINK_LED
prompt "Blink LED type"
default BLINK_LED_GPIO
help
Select the LED type. A normal level controlled LED or an addressable LED strip.
The default selection is based on the Espressif DevKit boards.
You can change the default selection according to your board.
config BLINK_LED_GPIO
bool "GPIO"
config BLINK_LED_STRIP
bool "LED strip"
endchoice
choice BLINK_LED_STRIP_BACKEND
depends on BLINK_LED_STRIP
prompt "LED strip backend peripheral"
default BLINK_LED_STRIP_BACKEND_RMT if SOC_RMT_SUPPORTED
default BLINK_LED_STRIP_BACKEND_SPI
help
Select the backend peripheral to drive the LED strip.
config BLINK_LED_STRIP_BACKEND_RMT
depends on SOC_RMT_SUPPORTED
bool "RMT"
config BLINK_LED_STRIP_BACKEND_SPI
bool "SPI"
endchoice
config BLINK_GPIO
int "Blink GPIO number"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 8
help
GPIO number (IOxx) to blink on and off the LED.
Some GPIOs are used for other purposes (flash connections, etc.) and cannot be used to blink.
config BLINK_PERIOD
int "Blink period in ms"
range 10 3600000
default 1000
help
Define the blinking period in milliseconds.
endmenu
Configure it:
idf.py menuconfig
Select gpio and pin 8.
Run:
idf.py -p /dev/cu.usbmodem14201 -b 115200 flash
RGB led
This could also be used to blink the onboard RGB led.
- Choose led_strip
- Set pin to 48 (this is the pin on my board)
- Prefer RMT over SPI, accroding to document, RMT is more economical [2]