Найти в Дзене

example move blink 1LED for 2led (GRB) not ARDUIN yes espressif. ok

Цель: сделать стенд изучения работы светодиодов GRB в среде espressif. ПРИМ: если управлять светодиодами возможно , то и шаговым двигателем затем сможем. НИЖЕ о шаговом двигателе схема. Нужно шаг задать, то сигналы отослать. Если ходу дать , это цикл шагов подать. А спотык вдруг намудрить? Диаграмму в цвете сотворить? Все шаги нам свет пометить. Ошибиться нам не светит. Ниже схема как подключены GRB led гаджеты из набора 37шт. in sensor arduino. Вполне рабочая схема. За основу берём пример из espressif (esp-idf)🤔blink! Выполним карту операций - это рисунок ниже)) После трёх пунктов создадим проект Карта операций ниже Если выполнение есть , то нормально. Выполним следующую карту операций - ниже. 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 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32C2
default BLINK_LED_STRI

Цель: сделать стенд изучения работы светодиодов GRB в среде espressif.

ПРИМ: если управлять светодиодами возможно , то и шаговым двигателем затем сможем. НИЖЕ о шаговом двигателе схема.

таблица  сигналов на шаговый двигатель.
таблица сигналов на шаговый двигатель.

Нужно шаг задать, то сигналы отослать. Если ходу дать , это цикл шагов подать.

А спотык вдруг намудрить? Диаграмму в цвете сотворить?

Все шаги нам свет пометить. Ошибиться нам не светит.

Ниже схема как подключены GRB led гаджеты из набора 37шт. in sensor arduino.

схема есть.
схема есть.

Вполне рабочая схема. За основу берём пример из espressif (esp-idf)🤔blink!

Выполним карту операций - это рисунок ниже))

запуск
запуск

После трёх пунктов создадим проект Карта операций ниже

выполним.
выполним.

Если выполнение есть , то нормально. Выполним следующую карту операций - ниже.

три операции
три операции
  • Необходимый код для настроек ниже . можете его изучить или нет. посмотрите на всякий случай.
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 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32C2
default BLINK_LED_STRIP
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 2
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.
config BLINK_GPIO_A
int "Blink GPIO number A"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 23
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_GPIO_B
int "Blink GPIO number B"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 22
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_GPIO_C
int "Blink GPIO number C"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 21
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_GPIO_D
int "Blink GPIO number D"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 20
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_GPIO_E
int "Blink GPIO number E"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 19
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_GPIO_J
int "Blink GPIO number J"
range ENV_GPIO_RANGE_MIN ENV_GPIO_OUT_RANGE_MAX
default 18
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.
endmenu
  • согласно карте операции ниже выполним действие написанное . код вставить надо , который выше😙
стрелка кажет правильное решение
стрелка кажет правильное решение

Сохраните и закройте после операций выше файл.

  • Код для mail.c ниже [ он практически похожий с оригиналом, но не очень]
#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";
#define max_count 15
#define BLINK_GPIO CONFIG_BLINK_GPIO
#define BLINK_GPIO_A CONFIG_BLINK_GPIO_A
#define BLINK_GPIO_B CONFIG_BLINK_GPIO_B
#define BLINK_GPIO_C CONFIG_BLINK_GPIO_C
#define BLINK_GPIO_D CONFIG_BLINK_GPIO_D
//#define BLINK_GPIO_D CONFID_BLINK_GPIO_D
#define BLINK_GPIO_E CONFIG_BLINK_GPIO_E
#define BLINK_GPIO_J CONFIG_BLINK_GPIO_J
static uint8_t s_led_state = 0; static uint8_t s_led_count = 0;
#ifdef CONFIG_BLINK_LED_STRIP
static led_strip_handle_t led_strip;
static void blink_led(void)
{ if (s_led_state) { led_strip_set_pixel(led_strip, 0, 16, 16, 16);
led_strip_refresh(led_strip); } else { led_strip_clear(led_strip);}
}//////////////////////////////////////////////
static void configure_led(void)
{ ESP_LOGI(TAG, "Example configured to blink addressable LED!");
led_strip_config_t strip_config = {
.strip_gpio_num = BLINK_GPIO,
.max_leds = 1, // at least one LED on board
};
led_strip_config_t strip_config_A = {
.strip_gpio_num = BLINK_GPIO_A, .max_leds = 1, };
led_strip_config_t strip_config_B = {
.strip_gpio_num = BLINK_GPIO_B, .max_leds = 1, };
led_strip_config_t strip_config_C = {
.strip_gpio_num = BLINK_GPIO_C, .max_leds = 1, };
led_strip_config_t strip_config_D = {
.strip_gpio_num = BLINK_GPIO_D, .max_leds = 1, };
led_strip_config_t strip_config_E = {
.strip_gpio_num = BLINK_GPIO_E, .max_leds = 1, };
led_strip_config_t strip_config_J = {
.strip_gpio_num = BLINK_GPIO_J, .max_leds = 1, };
#if CONFIG_BLINK_LED_STRIP_BACKEND_RMT
led_strip_rmt_config_t rmt_config = {
.resolution_hz = 10 * 1000 * 1000, // 10MHz
.flags.with_dma = false,
};
ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_strip));
#elif CONFIG_BLINK_LED_STRIP_BACKEND_SPI
led_strip_spi_config_t spi_config = {
.spi_bus = SPI2_HOST,
.flags.with_dma = true,
};
ESP_ERROR_CHECK(led_strip_new_spi_device(&strip_config, &spi_config, &led_strip));
#else
#error "unsupported LED strip backend"
#endif
/////////////////* 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);
gpio_set_level(BLINK_GPIO_A, 0);
gpio_set_level(BLINK_GPIO_B, 0); gpio_set_level(BLINK_GPIO_C, 0);
gpio_set_level(BLINK_GPIO_D, 0); gpio_set_level(BLINK_GPIO_E, 0); gpio_set_level(BLINK_GPIO_J, 0);
if (s_led_count==0) { gpio_set_level(BLINK_GPIO_E, 1);return;}
if (s_led_count==1) { gpio_set_level(BLINK_GPIO_J, 1);return;}
if (s_led_count==2) { gpio_set_level(BLINK_GPIO_D, 1);return;}
if (s_led_count==11)
{ gpio_set_level(BLINK_GPIO_D, 1); gpio_set_level(BLINK_GPIO_E, 1);return;}
if (s_led_count==12)
{ gpio_set_level(BLINK_GPIO_D, 1); gpio_set_level(BLINK_GPIO_J, 1);return;}
if (s_led_count==13)
{ gpio_set_level(BLINK_GPIO_J, 1); gpio_set_level(BLINK_GPIO_E, 1);return;}
if (s_led_count==14) { gpio_set_level(BLINK_GPIO_E, 1);
gpio_set_level(BLINK_GPIO_J, 1); gpio_set_level(BLINK_GPIO_D, 1);return;}
if (s_led_count==3) { gpio_set_level(BLINK_GPIO_A,1);return;}
if (s_led_count==4) { gpio_set_level(BLINK_GPIO_B, 1);return;}
if (s_led_count==5) { gpio_set_level(BLINK_GPIO_C, 1);return;}
if (s_led_count==6) { gpio_set_level(BLINK_GPIO_A, 1);return;}
if (s_led_count==7)
{ gpio_set_level(BLINK_GPIO_A, 1); gpio_set_level(BLINK_GPIO_B, 1);return;}
if (s_led_count==8)
{ gpio_set_level(BLINK_GPIO_A, 1); gpio_set_level(BLINK_GPIO_C, 1);return;}
if (s_led_count==9)
{ gpio_set_level(BLINK_GPIO_B, 1); gpio_set_level(BLINK_GPIO_C, 1);return;}
if (s_led_count==10)
{ gpio_set_level(BLINK_GPIO_A, 1); gpio_set_level(BLINK_GPIO_B, 1);
gpio_set_level(BLINK_GPIO_C, 1);return;}
}///////////////////////////////////////////////////////
static void configure_led(void)
{ ESP_LOGI(TAG, "Example configured to blink GPIO LED!");
gpio_reset_pin(BLINK_GPIO); gpio_reset_pin(BLINK_GPIO_A); gpio_reset_pin(BLINK_GPIO_C); gpio_reset_pin(BLINK_GPIO_D); gpio_reset_pin(BLINK_GPIO_B); gpio_reset_pin(BLINK_GPIO_E); gpio_reset_pin(BLINK_GPIO_J);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
gpio_set_direction(BLINK_GPIO_A, GPIO_MODE_OUTPUT);
gpio_set_direction(BLINK_GPIO_B, GPIO_MODE_OUTPUT);
gpio_set_direction(BLINK_GPIO_C, GPIO_MODE_OUTPUT);
gpio_set_direction(BLINK_GPIO_D, GPIO_MODE_OUTPUT);
gpio_set_direction(BLINK_GPIO_E, GPIO_MODE_OUTPUT);
gpio_set_direction(BLINK_GPIO_J, GPIO_MODE_OUTPUT);
}//////////////////////////////////
#else
#error "unsupported LED type"
#endif
void app_main(void)
{ configure_led();
while (1) {
ESP_LOGI(TAG, "Turning the LED %s! %d", s_led_state == true ? "ON" : "OFF",s_led_count);
blink_led(); s_led_state = !s_led_state; s_led_count++;
if (s_led_count>max_count) s_led_count=0;
vTaskDelay(CONFIG_BLINK_PERIOD / portTICK_PERIOD_MS);
}
}

Удалим код в mail.c и вставим выше код. Выполним операцию 1 карты операций ниже

ошибок не?
ошибок не?

после успешной компиляции откроем и отладим sdkconfig . как указано ниже в карте операций.

порядок  пунктов настройки выходов.
порядок пунктов настройки выходов.

Выполнили карту операций. проверим связь.

Выполним всё , что ниже и должно всё замигать и зацвести.

четыре пункта есть
четыре пункта есть

Запустим геркулес - эта такая утилита. на просторах можете поискать и скачать. можете другую использовать подобную.

карта открытия монитора просмотра событий.
карта открытия монитора просмотра событий.

Наблюдаем включение и выключение светодиода на плате. и включение и выключение светодиодов GRB согласно условиям.

Спонсор ООО АК ПРАВОВОЕ СОТРУДНИЧЕСТВО

ЕСЛИ ИНТЕРСНО, ТО

ССЫЛКА НА сапр тп

ССЫЛКА НА GITHUB