FastLED 3.10.9
Loading...
Searching...
No Matches
pin.h
Go to the documentation of this file.
1#pragma once
2
31
32#include "fl/stl/stdint.h"
33#include "fl/stl/noexcept.h"
34
35namespace fl {
36
37// ============================================================================
38// Pin Configuration Enums
39// ============================================================================
40
48
50enum class PinValue {
51 Low = 0,
52 High = 1
53};
54
67
68// ============================================================================
69// Function declarations (implementations in platform-specific .hpp files)
70// ============================================================================
71
72// These five names are spelled with parentheses, e.g. `void (pinMode)(...)`.
73// A function-like macro expands wherever its name is followed by `(`, even
74// after `fl::` or in a declaration, and parentheses are the only way to opt
75// out. Arduino-ESP32 boards with BOARD_HAS_PIN_REMAP (Arduino Nano ESP32)
76// define exactly these names as macros in io_pin_remap.h, remapping Arduino
77// D-numbers to GPIO numbers. FastLED's pin numbers are always raw GPIO
78// numbers, so that remap must never reach them. Every declaration, definition
79// and FastLED-side call site uses the same spelling (see #4914).
80
84void (pinMode)(int pin, PinMode mode) FL_NO_EXCEPT;
85
89void (digitalWrite)(int pin, PinValue val) FL_NO_EXCEPT;
90
95
99u16 (analogRead)(int pin) FL_NO_EXCEPT;
100
104void (analogWrite)(int pin, u16 val) FL_NO_EXCEPT;
105
109void setPwm16(int pin, u16 val) FL_NO_EXCEPT;
110
114inline void analogWrite16(int pin, u16 val) FL_NO_EXCEPT {
115 setPwm16(pin, val);
116}
117
123
124// ============================================================================
125// PWM Frequency Control
126// ============================================================================
127
133int setPwmFrequency(int pin, u32 frequency_hz) FL_NO_EXCEPT;
134
138u32 getPwmFrequency(int pin) FL_NO_EXCEPT;
139
143int pwmEnd(int pin) FL_NO_EXCEPT;
144
145} // namespace fl
u8 u8 fract8 blur_amount FL_NO_EXCEPT
Definition blur.h:186
u32 getPwmFrequency(int pin) FL_NO_EXCEPT
Query the configured PWM frequency for a pin.
Definition pin.cpp.hpp:374
PinValue
Digital pin value.
Definition pin.h:50
@ Low
Logic low (0V / GND)
Definition pin.h:51
@ High
Logic high (3.3V / 5V, platform-dependent)
Definition pin.h:52
u16 analogRead(int pin) FL_NO_EXCEPT
Read analog value from pin.
void setAdcRange(AdcRange range) FL_NO_EXCEPT
Set ADC voltage range.
Definition pin.cpp.hpp:62
AdcRange
ADC voltage range configuration.
Definition pin.h:58
@ Range0_2V2
0-2.2V range (6dB on ESP32)
Definition pin.h:62
@ Range0_1V5
0-1.5V range (2.5dB on ESP32)
Definition pin.h:61
@ Default
Platform default (5V on AVR Uno, 3.3V on ESP32 w/ 11dB, etc.)
Definition pin.h:59
@ Range0_5V
0-5V range (DEFAULT on 5V AVR boards)
Definition pin.h:64
@ Range0_3V3
0-3.3V range (11dB on ESP32, VDDANA on 3.3V SAMD)
Definition pin.h:63
@ External
External reference voltage on AREF pin (AVR/SAMD only)
Definition pin.h:65
@ Range0_1V1
0-1.1V range (INTERNAL on AVR, 0dB on ESP32)
Definition pin.h:60
void analogWrite(int pin, u16 val) FL_NO_EXCEPT
Write analog value to pin (PWM)
Definition pin.cpp.hpp:247
void analogWrite16(int pin, u16 val) FL_NO_EXCEPT
Alias for setPwm16 - Set PWM duty cycle with 16-bit resolution.
Definition pin.h:114
int pwmEnd(int pin) FL_NO_EXCEPT
Release PWM channel and stop output on a pin.
Definition pin.cpp.hpp:384
int setPwmFrequency(int pin, u32 frequency_hz) FL_NO_EXCEPT
Set PWM frequency for a pin.
Definition pin.cpp.hpp:294
void digitalWrite(int pin, PinValue val) FL_NO_EXCEPT
Write digital value to pin.
Definition pin.cpp.hpp:51
PinValue digitalRead(int pin) FL_NO_EXCEPT
Read digital value from pin.
Definition pin.cpp.hpp:55
void setPwm16(int pin, u16 val) FL_NO_EXCEPT
Set PWM duty cycle with 16-bit resolution.
Definition pin.cpp.hpp:269
PinMode
Pin mode configuration.
Definition pin.h:42
@ Output
Digital output (push-pull)
Definition pin.h:44
@ Input
Digital input (high impedance)
Definition pin.h:43
@ InputPullup
Digital input with internal pull-up resistor.
Definition pin.h:45
@ InputPulldown
Digital input with internal pull-down resistor.
Definition pin.h:46
void pinMode(int pin, PinMode mode) FL_NO_EXCEPT
Set pin mode (input, output, pull-up, pull-down)
Definition pin.cpp.hpp:398
Base definition for an LED controller.
#define FL_NO_EXCEPT