#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/spi_master.h"
#include "driver/adc.h"
#include "esp_adc_cal.h"
#include "driver/gpio.h"
#include "math.h"
#include "string.h"
#define SPI_MOSI 23
#define SPI_CS 5
#define SPI_SCLK 18
#define NLSF595 4
spi_device_handle_t handle;
void ADC_init()
{
adc1_config_width(ADC_WIDTH_BIT_10);
adc1_config_channel_atten(ADC1_CHANNEL_3, ADC_ATTEN_DB_11);
}
void SPI_init()
{
spi_bus_config_t bus_cfg =
{
.mosi_io_num = SPI_MOSI,
.miso_io_num = -1,
.sclk_io_num = SPI_SCLK,
.quadwp_io_num = -1,
.quadhd_io_num = -1,
.max_transfer_sz = 1,
};
spi_device_interface_config_t dev_cfg =
{
.mode = 0,
.clock_speed_hz = SPI_CLK_SRC_DEFAULT,
.spics_io_num = SPI_CS,
.queue_size = 1,
};
spi_bus_initialize(SPI2_HOST, &bus_cfg, SPI_DMA_CH_AUTO);
spi_bus_add_device(SPI2_HOST, &dev_cfg, &handle);
}
void write_NLSF595(uint8_t data)
{
spi_transaction_t t;
memset(&t, 0, sizeof(t));
t.length = 8;
t.tx_buffer = &data;
spi_device_polling_transmit(handle, &t);
gpio_set_level(NLSF595, 1);
gpio_set_level(NLSF595, 0);
}
void set_rgb()
{
uint8_t color=0b11111111;
color = 0b11011111;//xxx1 xx1x = red and green
write_NLSF595(color);
}
void app_main()
{
ADC_init();
SPI_init();
gpio_set_direction(NLSF595, GPIO_MODE_OUTPUT);
while(1)
{
set_rgb();
vTaskDelay(pdMS_TO_TICKS(1000));
}
}