This commit is contained in:
2021-12-10 00:54:25 +01:00
commit 8199f10bda
8 changed files with 1454 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
idf_component_register(SRCS "hello_world_main.c"
INCLUDE_DIRS "")
+4
View File
@@ -0,0 +1,4 @@
#
# "main" pseudo-component makefile.
#
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
+90
View File
@@ -0,0 +1,90 @@
/* Hello World 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 "sdkconfig.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/ledc.h"
void app_main(void)
{
printf("Hello world!\n");
/*
* Prepare and set configuration of timers
* that will be used by LED Controller
*/
ledc_timer_config_t ledc_timer = {
.duty_resolution = LEDC_TIMER_8_BIT, // resolution of PWM duty
.freq_hz = 38500, // frequency of PWM signal
.speed_mode = LEDC_HIGH_SPEED_MODE, // timer mode
.timer_num = LEDC_TIMER_0, // timer index
.clk_cfg = LEDC_AUTO_CLK, // Auto select the source clock
};
// Set configuration of timer0 for high speed channels
ledc_timer_config(&ledc_timer);
ledc_channel_config_t chan = {
.channel = LEDC_CHANNEL_0,
.duty = 127,
.gpio_num = 17,
.speed_mode = LEDC_HIGH_SPEED_MODE,
.hpoint = 0,
.timer_sel = LEDC_TIMER_0
};
ledc_channel_config(&chan);
#define PWM_ON() do { \
ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 127); \
ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0); \
} while(0)
#define PWM_OFF() do { \
ledc_stop(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 0); \
} while(0)
while (1) {
//const uint8_t bytes[4] = {0b10000000, 0b01111111, 0b00010000, 0b11101111}; // and one 1 at the end
const uint8_t bytes[4] = {0b10000000 , 0b01111111 , 0b00000000 , 0b11111111}; // and one 1 at the end
// Preamble
PWM_ON();
ets_delay_us(9000);
PWM_OFF();
ets_delay_us(4500);
for (int i = 0; i < 4; i++) {
uint8_t byte = bytes[i];
for (int j = 0; j < 8; j++) {
bool bit = 0 != (byte & 0x80);
byte <<= 1;
if (bit==0) {
PWM_ON();
ets_delay_us(588);
PWM_OFF();
ets_delay_us(540);
} else {
PWM_ON();
ets_delay_us(590);
PWM_OFF();
ets_delay_us(1672);
}
}
}
PWM_ON();
ets_delay_us(600);
PWM_OFF();
ets_delay_us(1700);
vTaskDelay(pdMS_TO_TICKS(1000));
}
}