Skip to content

Commit

Permalink
Add Arduino as Component examples (#8878)
Browse files Browse the repository at this point in the history
* Example for IDF component registry

* Added readme

* updated readme

* remove idf dependency

* add empty lines on file end

* idf_component.yml version change

* Updated readme for local development

---------

Co-authored-by: Rodrigo Garcia <rodrigo.garcia@espressif.com>
  • Loading branch information
P-R-O-C-H-Y and SuGlider authored Nov 29, 2023
1 parent b303cb4 commit 00a9579
Show file tree
Hide file tree
Showing 7 changed files with 103 additions and 0 deletions.
2 changes: 2 additions & 0 deletions idf_component.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,6 @@ dependencies:
version: "^1.4.2"
rules:
- if: "target in [esp32s3]"
examples:
- path: ../idf_component_examples/

8 changes: 8 additions & 0 deletions idf_component_examples/Hello_world/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# For more information about build system see
# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html
# The following five 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.16)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(main)
63 changes: 63 additions & 0 deletions idf_component_examples/Hello_world/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
| Supported Targets | ESP32 | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-S2 | ESP32-S3 |
| ----------------- | ----- | -------- | -------- | -------- | -------- | -------- | -------- |

# _Hello world example_

This is the simplest buildable example made to be used as a template for new projects running Arduino-esp32 as an ESP-IDF component.
See [Arduino-esp32](https://components.espressif.com/components/espressif/arduino-esp32) in ESP Registry.

## How to use example

To create a ESP-IDF project from this example with the latest relase of Arduino-esp32, you can simply run command: `idf.py create-project-from-example "espressif/arduino-esp32:hello_world"`.
ESP-IDF will download all dependencies needed from the component registry and setup the project for you.

If you want to use cloned Arduino-esp32 repository, you can build this example directly.
Go to the example folder `arduino-esp32/idf_component_examples/Hello_world`.
First you need to comment line 6 `pre_release: true` in examples `/main/idf_component.yml`.
Then just run command: `idf.py build`.

## Example folder contents

The project **Hello_world** contains one source file in C++ language [main.cpp](main/main.cpp). The file is located in folder [main](main).

ESP-IDF projects are built using CMake. The project build configuration is contained in `CMakeLists.txt`
files that provide set of directives and instructions describing the project's source files and targets
(executable, library, or both).

Below is short explanation of remaining files in the project folder.

```
├── CMakeLists.txt
├── main
│   ├── CMakeLists.txt
│ ├── idf_component.yml
│   └── main.cpp
└── README.md This is the file you are currently reading
```

## How to add Arduino libraries

In the project create folder `components/` and clone the library there.
In the library folder create new CMakeLists.txt file, add lines shown below to the file and edit the SRCS to match the library source files.

```
idf_component_register(SRCS "user_library.cpp" "another_source.c"
INCLUDE_DIRS "."
REQUIRES arduino-esp32
)
```

Below is structure of the project folder with the Arduino libraries.

```
├── CMakeLists.txt
├── components
│   ├── user_library
│   │   ├── CMakeLists.txt This needs to be added
│   │   ├── ...
├── main
│   ├── CMakeLists.txt
│ ├── idf_component.yml
│   └── main.cpp
└── README.md This is the file you are currently reading
```
2 changes: 2 additions & 0 deletions idf_component_examples/Hello_world/main/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
idf_component_register(SRCS "main.cpp"
INCLUDE_DIRS ".")
6 changes: 6 additions & 0 deletions idf_component_examples/Hello_world/main/idf_component.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## IDF Component Manager Manifest File
dependencies:
espressif/arduino-esp32:
version: '*'
override_path: '../../../'
pre_release: true
10 changes: 10 additions & 0 deletions idf_component_examples/Hello_world/main/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include "Arduino.h"

void setup(){
Serial.begin(115200);
}

void loop(){
Serial.println("Hello world!");
delay(1000);
}
12 changes: 12 additions & 0 deletions idf_component_examples/Hello_world/sdkconfig.defaults
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#
# Arduino ESP32
#
CONFIG_AUTOSTART_ARDUINO=y
# end of Arduino ESP32

#
# FREERTOS
#
CONFIG_FREERTOS_HZ=1000
# end of FREERTOS
# end of Component config

0 comments on commit 00a9579

Please sign in to comment.