Table of Content
* Hardware: The Circuit
** Choose GPIO ports and their board pins
** LED part
** Switch button part
* The Software
** Main loop
** ISR (Interrupt Service Routine)
*** ESP timer
Update: I wrote this article, following this other one that teach the usage of a potentiometer and an OLED screen..
After ArchLinux upgrade from python 3.9 to 3.10, tools need to be reinstalled by:
cd ~/esp/esp-idf git pull git submodule update --init --recursive ./install.sh esp32c3
If you never used ESP-IDF, you can read the previous introduction article to ESP-IDF on RISC-V based ESP32-C3, how to install it and start environment for compiling and flashing code. I also wrote article about using ESP32-C3 with Apache NuttX POSIX OS, but it will be useless here.
This article is about, on ESP32 (more specifically a less than 3.5€ ESP32-C3 based NodeMCU board, but it should work about the same way on other ESP based boards) :
* How to blink an external LED using GPIO, including how to know LED needed voltage (V), amperage (A), and compute needed resistor, by using several possible means.
* Explanations about resistors values colours bands and computation of parallel mounted resistors. I also give link to free and open source software I wrote to help to compute needed resistors (depending on LED type, and desired intensity).
* How to connect an external switch to GPIO, and which resistor is needed. How to receive and manage it’s state a good way. By debouncing physical human pressure on switch, and use software interruption (that’s more easy that it could sounds).
* How to blink included RGB LED and stop/start it by using switch, an asynchronous way.