ESP32 and ESP8266 Development

  1. Fundamental Programming Concepts
    1. General Purpose Input/Output (GPIO)
      1. Configuring Pin Modes
        1. INPUT Mode
          1. OUTPUT Mode
            1. INPUT_PULLUP Mode
              1. INPUT_PULLDOWN Mode (ESP32)
              2. Digital I/O
                1. Using digitalWrite()
                  1. Using digitalRead()
                    1. Debouncing Digital Inputs
                      1. Hardware Debouncing
                        1. Software Debouncing
                      2. Analog I/O
                        1. Analog to Digital Converter (ADC)
                          1. Using analogRead()
                            1. ADC Resolution
                              1. ADC Attenuation (ESP32)
                                1. Channel Selection
                                  1. Reference Voltage
                                  2. Digital to Analog Converter (DAC) (ESP32 only)
                                    1. Using dacWrite()
                                      1. DAC Output Range
                                        1. DAC Resolution
                                    2. Pulse Width Modulation (PWM)
                                      1. PWM Principles
                                        1. Duty Cycle
                                          1. Frequency
                                          2. Simulating Analog Output
                                            1. Controlling LED Brightness
                                              1. Driving Motors with PWM
                                                1. PWM Frequency and Resolution
                                                  1. LEDC (LED Control) on ESP32
                                                    1. Channel Configuration
                                                      1. Timer Setup
                                                    2. Interrupts
                                                      1. Hardware Interrupts
                                                        1. Interrupt Capable Pins
                                                          1. Edge and Level Triggering
                                                            1. RISING Edge
                                                              1. FALLING Edge
                                                                1. CHANGE Detection
                                                              2. Attaching an Interrupt to a GPIO Pin
                                                                1. attachInterrupt() Function
                                                                  1. Interrupt Service Routine (ISR) Structure
                                                                    1. Detaching Interrupts
                                                                    2. Interrupt Service Routines (ISRs)
                                                                      1. Writing Safe ISRs
                                                                        1. Limitations and Best Practices
                                                                          1. Volatile Variables
                                                                            1. ISR Performance Considerations
                                                                          2. Timers
                                                                            1. Hardware Timers
                                                                              1. Timer Initialization
                                                                                1. Timer Callbacks
                                                                                  1. Timer Precision
                                                                                  2. Software Timers
                                                                                    1. Timer Libraries
                                                                                      1. Delayed and Periodic Execution
                                                                                        1. Non-blocking Delays
                                                                                        2. Generating Periodic Events
                                                                                          1. Blinking LEDs with Timers
                                                                                            1. Scheduling Tasks
                                                                                              1. Watchdog Timers
                                                                                            2. Serial Communication (UART)
                                                                                              1. Initializing Serial Communication
                                                                                                1. Serial.begin() Function
                                                                                                  1. Baud Rate Selection
                                                                                                  2. Printing to the Serial Monitor
                                                                                                    1. Serial.print() and Serial.println()
                                                                                                      1. Formatted Output
                                                                                                      2. Reading from Serial Input
                                                                                                        1. Serial.available()
                                                                                                          1. Serial.read()
                                                                                                            1. String Input Handling
                                                                                                            2. Communicating Between Devices
                                                                                                              1. Connecting Multiple Microcontrollers
                                                                                                                1. Serial Protocols and Baud Rates
                                                                                                                  1. Hardware vs Software Serial