forked from electro/esp-irblaster
				
			
						commit
						8199f10bda
					
				@ -0,0 +1,3 @@ | 
				
			||||
.idea/ | 
				
			||||
build | 
				
			||||
cmake-build-* | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			||||
# The following lines of boilerplate have to be in your project's | 
				
			||||
# CMakeLists in this exact order for cmake to work correctly | 
				
			||||
cmake_minimum_required(VERSION 3.5) | 
				
			||||
 | 
				
			||||
include($ENV{IDF_PATH}/tools/cmake/project.cmake) | 
				
			||||
project(hello-world) | 
				
			||||
@ -0,0 +1,8 @@ | 
				
			||||
#
 | 
				
			||||
# This is a project Makefile. It is assumed the directory this Makefile resides in is a
 | 
				
			||||
# project subdirectory.
 | 
				
			||||
#
 | 
				
			||||
 | 
				
			||||
PROJECT_NAME := hello-world
 | 
				
			||||
 | 
				
			||||
include $(IDF_PATH)/make/project.mk | 
				
			||||
@ -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)); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
					Loading…
					
					
				
		Reference in new issue