Useful Links
Computer Science
Software Engineering
ESP32 and ESP8266 Development
1. Introduction to ESP32 and ESP8266
2. Getting Started with Hardware
3. Development Environments and Toolchains
4. Fundamental Programming Concepts
5. Networking and Connectivity
6. Interfacing with Peripherals and Sensors
7. Data Storage and Management
8. Power Management
9. Advanced Topics
Fundamental Programming Concepts
The "Blink" Sketch: Your First Program
Understanding setup() and loop() Functions
Writing the Blink Code
Compiling and Uploading Code
Troubleshooting Upload Issues
Port Selection Problems
Driver Issues
Board Reset Requirements
General Purpose Input/Output (GPIO)
Configuring Pin Modes
INPUT Mode
OUTPUT Mode
INPUT_PULLUP Mode
INPUT_PULLDOWN Mode (ESP32)
Digital I/O
Using digitalWrite()
Using digitalRead()
Debouncing Digital Inputs
Hardware Debouncing
Software Debouncing
Analog I/O
Analog to Digital Converter (ADC)
Using analogRead()
ADC Resolution
ADC Attenuation (ESP32)
Channel Selection
Reference Voltage
Digital to Analog Converter (DAC) (ESP32 only)
Using dacWrite()
DAC Output Range
DAC Resolution
Pulse Width Modulation (PWM)
PWM Principles
Duty Cycle
Frequency
Simulating Analog Output
Controlling LED Brightness
Driving Motors with PWM
PWM Frequency and Resolution
LEDC (LED Control) on ESP32
Channel Configuration
Timer Setup
Interrupts
Hardware Interrupts
Interrupt Capable Pins
Edge and Level Triggering
RISING Edge
FALLING Edge
CHANGE Detection
Attaching an Interrupt to a GPIO Pin
attachInterrupt() Function
Interrupt Service Routine (ISR) Structure
Detaching Interrupts
Interrupt Service Routines (ISRs)
Writing Safe ISRs
Limitations and Best Practices
Volatile Variables
ISR Performance Considerations
Timers
Hardware Timers
Timer Initialization
Timer Callbacks
Timer Precision
Software Timers
Timer Libraries
Delayed and Periodic Execution
Non-blocking Delays
Generating Periodic Events
Blinking LEDs with Timers
Scheduling Tasks
Watchdog Timers
Serial Communication (UART)
Initializing Serial Communication
Serial.begin() Function
Baud Rate Selection
Printing to the Serial Monitor
Serial.print() and Serial.println()
Formatted Output
Reading from Serial Input
Serial.available()
Serial.read()
String Input Handling
Communicating Between Devices
Connecting Multiple Microcontrollers
Serial Protocols and Baud Rates
Hardware vs Software Serial
Previous
3. Development Environments and Toolchains
Go to top
Next
5. Networking and Connectivity