forked from electro/esp-irblaster
Initial
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
idf_component_register(SRCS "hello_world_main.c"
|
||||
INCLUDE_DIRS "")
|
||||
@@ -0,0 +1,4 @@
|
||||
#
|
||||
# "main" pseudo-component makefile.
|
||||
#
|
||||
# (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.)
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user