mirror of
				https://github.com/alexandrebobkov/ESP-Nodes.git
				synced 2025-11-04 06:41:04 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Blink Example
 | 
						|
 | 
						|
   This example code is in the Public Domain (or CC0 licensed, at your option.)
 | 
						|
 | 
						|
   Unless required by applicable law or agreed to in writing, this
 | 
						|
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 | 
						|
   CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
*/
 | 
						|
#include <stdio.h>
 | 
						|
#include "freertos/FreeRTOS.h"
 | 
						|
#include "freertos/task.h"
 | 
						|
#include "driver/gpio.h"
 | 
						|
#include "esp_log.h"
 | 
						|
#include "led_strip.h"
 | 
						|
#include "sdkconfig.h"
 | 
						|
 | 
						|
static const char *TAG = "example";
 | 
						|
 | 
						|
/* Use project configuration menu (idf.py menuconfig) to choose the GPIO to blink,
 | 
						|
   or you can edit the following line and set a number here.
 | 
						|
*/
 | 
						|
#define BLINK_GPIO CONFIG_BLINK_GPIO
 | 
						|
 | 
						|
static uint8_t s_led_state = 0;
 | 
						|
 | 
						|
#ifdef CONFIG_BLINK_LED_RMT
 | 
						|
 | 
						|
static led_strip_handle_t led_strip;
 | 
						|
 | 
						|
static void blink_led(void)
 | 
						|
{
 | 
						|
    /* If the addressable LED is enabled */
 | 
						|
    if (s_led_state) {
 | 
						|
        /* Set the LED pixel using RGB from 0 (0%) to 255 (100%) for each color */
 | 
						|
        led_strip_set_pixel(led_strip, 0, 16, 16, 16);
 | 
						|
        /* Refresh the strip to send data */
 | 
						|
        led_strip_refresh(led_strip);
 | 
						|
    } else {
 | 
						|
        /* Set all LED off to clear all pixels */
 | 
						|
        led_strip_clear(led_strip);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
static void configure_led(void)
 | 
						|
{
 | 
						|
    ESP_LOGI(TAG, "Example configured to blink addressable LED!");
 | 
						|
    /* LED strip initialization with the GPIO and pixels number*/
 | 
						|
    led_strip_config_t strip_config = {
 | 
						|
        .strip_gpio_num = BLINK_GPIO,
 | 
						|
        .max_leds = 1, // at least one LED on board
 | 
						|
    };
 | 
						|
    led_strip_rmt_config_t rmt_config = {
 | 
						|
        .resolution_hz = 10 * 1000 * 1000, // 10MHz
 | 
						|
    };
 | 
						|
    ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip));
 | 
						|
    /* Set all LED off to clear all pixels */
 | 
						|
    led_strip_clear(led_strip);
 | 
						|
}
 | 
						|
 | 
						|
#elif CONFIG_BLINK_LED_GPIO
 | 
						|
 | 
						|
static void blink_led(void)
 | 
						|
{
 | 
						|
    /* Set the GPIO level according to the state (LOW or HIGH)*/
 | 
						|
    gpio_set_level(BLINK_GPIO, s_led_state);
 | 
						|
}
 | 
						|
 | 
						|
static void configure_led(void)
 | 
						|
{
 | 
						|
    ESP_LOGI(TAG, "Example configured to blink GPIO LED!");
 | 
						|
    gpio_reset_pin(BLINK_GPIO);
 | 
						|
    /* Set the GPIO as a push/pull output */
 | 
						|
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
void app_main(void)
 | 
						|
{
 | 
						|
 | 
						|
    /* Configure the peripheral according to the LED type */
 | 
						|
    configure_led();
 | 
						|
 | 
						|
    while (1) {
 | 
						|
        ESP_LOGI(TAG, "Turning the LED %s!", s_led_state == true ? "ON" : "OFF");
 | 
						|
        blink_led();
 | 
						|
        /* Toggle the LED state */
 | 
						|
        s_led_state = !s_led_state;
 | 
						|
        vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
 | 
						|
    }
 | 
						|
}
 |