Muy buenas a todos y todas!!!
Como memorizar todos los comandos con sus variantes en el IDE de Arduino he creado esta lista con los comandos más habituales, las variables que admite la función y si nos retorna algún tipo de dato.
Cada comando aparece en un bloque con un color que indica el periférico al que pertenece GPIO, ADC, I2C, etc.
Empecemos!!!
- abs()
- analogRead()
- analogReadMilliVolts()
- analogReadResolution()
- constrain()
- dacWrite()
- digitalRead()
- digitalWrite()
- ledcAttach() - Versión Core > 3.0.0
- ledcAttachPin() - Versión Core < 2.x o inferior
- ledcSetup() - Versión Core < 2.x o inferior
- ledcWrite()
- map()
- millis()
- pinMode()
- random()
- randomSeed()
- rmtInit()
- rmtWrite()
- Serial.available()
- Serial.begin()
- Serial.print()
- Serial.println()
- Serial.read()
- SPI.begin()
- SPI.transfer()
- timerAttachInterrupt()
- timerBegin()
- WiFi.begin()
- WiFi.localIP()
- Wire.begin()
- Wire.beginTransmission()
- Wire.endTransmission()
- Wire.requestFrom()
Descripción de los comandos
🔹 abs(int x)
Periférico: Utilidad / Matemáticas
Variables:
intx: Número entero del que se quiere obtener el valor absoluto.
Descripción: Calcula el valor absoluto de un número entero. Por ejemplo, el valor absoluto de -5 es 5.
Devuelve: Valor absoluto de un número entero.
Ejemplo:
x = -42;
Serial.println(abs(x)); // el valor absoluto de -42
Serial Monitor: 42
🔹 int analogRead()
Periférico: ADC
Variables:
uint8_tpin: Número del pin ADC.
Descripción: Lee el valor raw (sin calibrar) del convertidor analógico-digital.
Devuelve: Un valor de 12 bits (0 a 4095).
Ejemplo:
int val = analogRead(analogPin); // Lectura de un pin analógico
🔹 uint32_t analogReadMilliVolts()
Periférico: ADC
Variables: Ninguna
uint8_tpin: Número del pin ADC.
Descripción: Lee el valor del ADC y lo convierte directamente a milivoltios (valor calibrado). Ideal para obtener lecturas en unidades de voltaje sin necesidad de hacer cálculos manuales.
Ejemplo:
uint32_t mv = analogReadMilliVolts(PIN_ADC); // Lee y convierte automáticamente a milivoltios, considerando atenuación y calibración.
🔹 analogReadResolution(uint8_t bits)
Periférico: ADC
Variables:
uint8_tbits: Resolución en bits (1 a 16).
Descripción: Cambia la resolución de analogRead(). El valor por defecto es 12 bits. Si se cambia a 10 bits, devolverá valores de 0 a 1023, igual que un Arduino clásico.
Ejemplo:
analogReadResolution(10); // La lectura del pin ADC con una resolución de 10bits
🔹 constrain()
Periférico: Utilidad / Matemáticas
Variables:
int/floatamt: El valor a restringir [citation:2].int/floatlow: Límite mínimo.int/floathigh: Límite máximo.
Descripción: Restringe un número para que se mantenga dentro de un rango definido.
Devuelve: Si el valor es menor que el límite mínimo, devuelve el mínimo; si es mayor que el máximo, devuelve el limite máximo.
Ejemplo:
int sensVal = 50;
sensVal= constrain(sensVal, 10, 150); // Limita el rango entre 10 y 150
🔹 dacWrite(uint8_t pin, uint8_t value)
Periférico: DAC (Digital To Analog Converter)
Variables:
uint8_tpin: Pin DAC, solo disponibles en algunos ESP32.uint8_tvalue: Valor de 0 a 255 (8 bits).
Descripción: Genera una salida analógica real en pines DAC (si el modelo lo soporta). Nota: No disponible en ESP32-C3.
Ejemplo:
#define DAC_PIN 25 // GPIO25 corresponde al Canal 1 del DAC
void loop() {
dacWrite(DAC_PIN, 128); // Escribe un valor de 128 (1.65V)
}
🔹 digitalWrite(uint8_t pin, uint8_t value)
Periférico: GPIO
Variables:
uint8_tpin: Número del pin GPIO.uint8_tvalue:HIGH(1) oLOW(0).
Descripción: Escribe un valor HIGH o LOW en el pin digital especificado. Si el pin está configurado como salida, establecerá el voltaje correspondiente (3.3V o 0V).
Ejemplo:
digitalWrite(3, HIGH);
// o
digitalWrite(3, LOW);
🔹 digitalRead(uint8_t pin)
Periférico: GPIO
Variables:
uint8_tpin: Número del pin GPIO.
Descripción: Lee el estado de un pin digital.
Devuelve HIGH o LOW.
Ejemplo:
bool estado = digitalRead(3); // Lee el estado del pin 3
🔹 bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);
Periférico: LEDC (PWM)
Variables:
uint8_tpin: Número del pin GPIO.uint32_tfreq: Frecuencia para PWM.uint8_tresolution: Selecciona la resolución del canal LEDC. Rango 1-14 bits (1-20 bits para ESP32).
Descripción: Esta función se utiliza para configurar el pin LEDC con la frecuencia y resolución especificadas. El canal LEDC se seleccionará automáticamente.
Devuelve: true si la configuración es exitosa. Si se produce un error devuelve false y el canal LEDC no se configura.
Ejemplo:
const int ledPin = 16;
const int ledChannel = 0;
void setup(){
ledcAttach(ledPin, freq, resolution);
}
🔹 ledcAttachPin(uint8_t pin, uint8_t channel) deprecated
Periférico: LEDC (PWM)
Variables:
uint8_tpin: Número del pin GPIO.uint8_tchannel: Canal PWM previamente configurado.
Descripción: Asigna un pin GPIO a un canal PWM. El pin empezará a generar la señal PWM con los parámetros configurados en ledcSetup() deprecated.
Ejemplo:
const int ledPin = 16;
const int ledChannel = 0;
void setup(){
ledcAttachPin(ledPin, ledChannel);
}
🔹 ledcSetup(uint8_t channel, uint32_t freq, uint8_t resolution_bits) deprecated
Periférico: LEDC (PWM)
Variables:
uint8_tchannel: Canal PWM (0-7 en ESP32-C3).uint32_tfreq: Frecuencia en Hz.uint8_tresolution_bits: Resolución en bits (1 a 14 en ESP32-C3).
Descripción: Configura un canal PWM con una frecuencia y resolución determinadas. Debe llamarse antes de usar ledcAttachPin() deprecated.
Ejemplo:
const int ledChannel = 0;
const int freq = 5000;
const int res = 8;
void setup() {
ledcSetup(ledChannel, freq, res);
}
🔹 ledcWrite(uint8_t channel, uint32_t duty)
Periférico: LEDC (PWM)
Variables:
uint8_tchannel: Canal PWM.uint32_tduty: Valor del ciclo de trabajo (0 a 2^resolution-1).
Descripción: Escribe un valor de ciclo de trabajo (duty cycle) en el canal PWM especificado, controlando así el ancho del pulso.
Ejemplo:
// Bucle
for (int dutyCycle = 0; dutyCycle <= 255; dutyCycle++) {
ledcWrite(ledPin, dutyCycle);
delay(15);
}
🔹 long map(long value, long fromLow, long fromHigh, long toLow, long toHigh)
Periférico: Utilidad
Variables:
longvalue: El número a re-mapear.longfromLow: Límite inferior del rango de entrada.longfromHigh: Límite superior del rango de entrada.longtoLow: Límite inferior del rango de salida.longtoHigh: Límite superior del rango de salida.
Descripción: Re-mapea un número desde un rango de entrada a un rango de salida. Se usa comúnmente para convertir valores de un ADC (0-4095) a un rango útil, como ángulos para un servo (0-180).
Devuelve: Valor long mapeado con un rango entre en limite inferior de salida y el limiter superior de salida.
Ejemplo:
int valor = map(val, 0, 1023, 0, 255); // Entrada 0-1023 ; Salida 0-255
🔹 millis()
Periférico: Tiempo
Variables: Ninguna.
Descripción: Devuelve el número de milisegundos desde que el programa empezó a ejecutarse. Se almacena como un unsigned long, con un valor máximo de 4,294,967,296, lo que equivale a casi 50 días. Es la función recomendada para temporizaciones no bloqueantes.
Devuelve: El número de milisegundos desde que el programa empezó a ejecutarse.
Ejemplo:
unsigned long myTime;
myTime = millis();
Serial.println(myTime); // Imprime el tiempo desde que empezo el programa
🔹 pinMode(uint8_t pin, uint8_t mode)
Periférico: GPIO
Variables:
uint8_tpin: Número del pin GPIO a configurar.uint8_tmode: Modo de funcionamiento (INPUT,OUTPUT,INPUT_PULLUP, etc.).
Descripción: Configura el modo de un pin digital. Es una de las funciones más básicas del Arduino, idéntica en su uso al Arduino original pero adaptada a los pines del ESP32.
Ejemplo:
pinMode(13, OUTPUT); // Pone el pin 13 como salida
pinMode(8, INPUT); // Pone el pin 8 como entrada
pinMode(9, INPUT_PULLUP); // Pone el pin 9 como entrada con resistencia interna
🔹 random(long max, long min)
Periférico: Utilidad
Variables:
longmax: Límite superior exclusivo.longmin: Límite inferior inclusivo (opcional).
Descripción: Genera un número pseudo-aleatorio dentro de un rango. En el ESP32, usa el generador de números aleatorios por hardware (HW RNG) para mejorar la aleatoriedad.
Ejemplo:
long randNumber;
randNumber = random(300); // Carga un número random entre 0 y 299
o
randNumber = random(100, 220); // Carga un número random entre 100 y 219
🔹 randomSeed(long seed)
Periférico: Utilidad
Variables:
longseed: Número que sirve como semilla para el generador pseudo-aleatorio.
Descripción: Inicializa el generador de números pseudo-aleatorios para que comience en un punto arbitrario de su secuencia. Si se usa una semilla fija, la secuencia de números será siempre la misma.
Devuelve: long con semilla.
Ejemplo:
long randNumber = random(300);
Serial.println(randNumber);
🔹 SPI.begin(int sck, int miso, int mosi, int ss)
Periférico: SPI
Variables:
intsck(opcional): Pin de reloj SPI.intmiso(opcional): Pin MISO (Master In Slave Out).intmosi(opcional): Pin MOSI (Master Out Slave In).intss(opcional): Pin SS (Slave Select).
Descripción: Inicializa el periférico SPI en modo maestro. Si no se especifican pines, usa los valores por defecto.
Ejemplo:
const int SCK_PIN = 18;
const int MISO_PIN = 19;
const int MOSI_PIN = 23;
const int SS_PIN = 5;
void setup() {
// Inicializa SPI con un mapeo de pines personalizado
SPI.begin(SCK_PIN, MISO_PIN, MOSI_PIN, SS_PIN);
}
🔹 SPI.transfer(uint8_t data)
Periférico: SPI
Variables:
uint8_tdata: Byte a enviar.
Descripción: Envía un byte y recibe simultáneamente otro byte (comunicación full-duplex). Es la función principal para comunicarse con periféricos SPI.
Ejemplo:
uint8_t valor = 0;
SPI.transfer(valor);
🔹 Serial.begin(uint32_t baudrate)
Periférico: UART (Serial)
Variables:
uint32_tbaudrate: Velocidad de transmisión en baudios (ej. 115200).
Descripción: Inicializa el puerto serie con la velocidad de baudios especificada. Es la función más usada para depuración y comunicación con el PC.
Ejemplo:
Serial.begin(9600);
// O
Serial.begin(38400);
// O
Serial.begin(115200);
// O
Serial.begin(4800);
🔹 Serial.print(ver descripción)
Periférico: UART (Serial)
Variables:
anydata: Dato a imprimir (string, int, float, etc.).
Descripción: Envía texto o datos al puerto serie, sin añadir un salto de línea al final. Ideal para construir mensajes de depuración.
Un segundo parámetro opcional especifica la base (formato) a utilizar; los valores permitidos son:
BIN (binario o base 2), OCT (octal o base 8), DEC (decimal o base 10), HEX (hexadecimal o base 16).
Para números de coma flotante, este parámetro especifica el número de decimales que se utilizarán.
Ejemplo:
Serial.print(78, BIN); // Imprime "1001110"
Serial.print(78, OCT); // Imprime "116"
Serial.print(78, DEC) // Imprime "78"
Serial.print(78, HEX) // Imprime "4E"
Serial.print(1.23456, 0) // Imprime "1"
Serial.print(1.23456, 2) // Imprime "1.23"
Serial.print(1.23456, 4) // Imprime "1.2346"
🔹 Serial.println(ver descripción)
Periférico: UART (Serial)
Variables:
anydata: Dato a imprimir (string, int, float, etc.).
Descripción: Igual que Serial.print(), pero añade un salto de línea (\r\n) al final. Útil para mensajes en líneas separadas. También le podemos indicar el tipo de dato con:
- DEC - Un decimal ASCII-encoded
- HEX - Un hexadecimal ASCII-encoded
- OCT - Un octal ASCII-encoded
- BIN - Un binario ASCII-encoded
Ejemplo:
Serial.println(analogValue); // Imprime un decimal en ASCII-encoded
Serial.println(analogValue, DEC); // Imprime un decimal en ASCII-encoded
Serial.println(analogValue, HEX); // Imprime un hexadecimal en ASCII-encoded
Serial.println(analogValue, OCT); // Imprime un octal en ASCII-encoded
Serial.println(analogValue, BIN); // Imprime en binario en ASCII-encoded
🔹 Serial.available()
Periférico: UART (Serial)
Variables: Ninguna.
Devuelve: El número de bytes disponibles para leer en el buffer del puerto serie. Útil para comprobar si ha llegado algún dato.
Ejemplo:
// Cuando los bytes disponibles son mayores que 0
if (Serial.available() > 0) {
// Leemos el byte de entrada:
int incomingByte = Serial.read();
}
🔹 int Serial.read()
Periférico: UART (Serial)
Variables: Ninguna.
Descripción: Lee un byte del buffer del puerto serie.
Devuelve: El primer byte de los datos seriales entrantes disponibles o -1 si no hay datos disponibles.
Ejemplo:
int incomingByte = Serial.read();
🔹 timerBegin(uint32_t frequency)
Periférico: Timer
Variables:
uint32_tfrequency: Frecuencia del temporizador en Hz.
Descripción: Configura y pone en marcha un temporizador de hardware con la frecuencia especificada. El temporizador se inicia automáticamente.
Devuelve: La estructura del temporizador si la configuración es correcta. Si se produce un erro devuelve NULL y el temporizador no se configura.
Ejemplo:
int timer = timerBegin(1000000); // Configuramos la frecuencia a 1Mhz
🔹 timerAttachInterrupt(hw_timer_t * timer, void (*fn)(void))
Periférico: Timer
Variables:
hw_timer_t*timer: Función a ejecutar cuando se dispara el temporizador.void (*fn)(void): Función a ejecutar cuando se dispara el temporizador.
Descripción: Asocia una función de interrupción al temporizador. La función se ejecutará cada vez que el temporizador alcance el valor de alarma.
Ejemplo:
hw_timer_t *timer = NULL;
void ARDUINO_ISR_ATTR onTimer() {
// Código
}
void setup(){
timer = timerBegin(1000000); // Configuramos la frecuencia a 1Mhz
// Attach onTimer function to our timer.
timerAttachInterrupt(timer, &onTimer);
}
🔹 bool rmtInit(int pin, rmt_ch_dir_t channel_direction, rmt_reserve_memsize_t memsize, uint32_t frequency_Hz);
Periférico: RMT (Remote Control Transceiver)
Variables:
intpin: Pin GPIO a configurar.rmt_ch_dir_tchannel_direction:truepara transmisor,falsepara receptor. También se puede usar: RMT_RX_MODE o RMT_TX_MODE.rmt_reserve_memsize_tmemsize: Número de bloques de memoria reservado para este canal:- RMT_MEM_NUM_BLOCKS_1
- RMT_MEM_NUM_BLOCKS_2
- RMT_MEM_NUM_BLOCKS_3 - Solo ESP32
- RMT_MEM_NUM_BLOCKS_4 - Solo ESP32
- RMT_MEM_NUM_BLOCKS_5 hasta RMT_MEM_NUM_BLOCKS_5 - Solo ESP32
uint32_tfrequency_Hz: Frecuencia del canal RMT en Hz (frecuencia de tick). Debe estar entre 312,5 kHz y 80 MHz.
La frecuencia determina la resolución de la duración de los pulsos. Por ejemplo:- 10 MHz (tick de 100 ns) - Alta precisión, ideal para LEDs WS2812.
- 1 MHz (tick de 1 µs) - Adecuado para la mayoría de los protocolos IR
- 400 kHz (tick de 2,5 µs) - Adecuado para protocolos más lentos.
Devuelve: Esta función devuelve true si la inicialización es exitosa, false en caso contrario.
Descripción: Inicializa el periférico RMT (Remote Control), útil para generar y recibir señales con temporización precisa como infrarrojos o para controlar NeoPixels.
Ejemplo:
#define RMT_FREQ_HZ 10000000 // 10 MHz (tick de 100 ns)
bool isOk = rmtInit(4, RMT_TX_MODE, RMT_MEM_NUM_BLOCKS_1, RMT_FREQ_HZ));
🔹 bool rmtWrite(int pin, rmt_data_t *data, size_t num_rmt_symbols, uint32_t timeout_ms);
Periférico: RMT (Remote Control Transceiver)
Variables:
intpin: Pin GPIO configurado en moto TX para RMT TX mode.rmt_data_t *data: punter al array de datos a transmitir.size_t *num_rmt_symbols: Longitud del array.uint32_ttimeout_ms: Tiempo de espera en milisegundos. Podemos usar RMT_WAIT_FOR_EVER para una espera indefinida..
Descripción: Transmite datos a través del periférico RMT. Es la función principal para enviar señales codificadas.
Ejemplo:
bool rmtWrite(int pin, rmt_data_t *data, size_t num_rmt_symbols, uint32_t timeout_ms);
🔹 int WiFi.begin(const char* ssid, const char* password)
Periférico: Wi-Fi
Variables:
const char*ssid: Nombre de la red Wi-Fi.const char*password: Contraseña de la red.
Descripción: Conecta el ESP32 a una red Wi-Fi como estación (cliente).
Devuelve: WL_CONNECTED cuando la conexión se ha establecido correctamente.
Ejemplo:
int status = WiFi.begin("YOUR_SSID", "YOUR_PASS"); // Configuración para conectar router
🔹 WiFi.localIP()
Periférico: Wi-Fi
Variables: Ninguna.
Descripción: Muestra la dirección IP local asignada al ESP32 en la red Wi-Fi a la que está conectado.
Devuelve: La dirección IP local asignada al ESP32
Ejemplo:
Serial.println(WiFi.localIP());
o
String localip = WiFi.localIP().toString(); // Cambio a String de la IP
Serial.println(localip); // Imprime el String "localip"
🔹 Wire.begin(int sdaPin, int sclPin, uint32_t frequency)
Periférico: I2C (Wire)
Variables:
intsdaPin(opcional): Pin para SDA.intsclPin(opcional): Pin para SCL.uint32_tfrequency(opcional): Frecuencia del bus I2C (por defecto 100kHz).
Descripción: Inicializa el periférico I2C en modo maestro. Si no se especifican pines, usa los valores por defecto de la placa.
Ejemplo:
Wire.begin(0x3C); // Inicia el periferico con la dirección hex_address
🔹 Wire.beginTransmission(uint16_t address)
Periférico: I2C (Wire)
Variables:
uint16_taddress: Dirección del dispositivo esclavo (7 o 10 bits).
Descripción: Inicia una transmisión al dispositivo esclavo con la dirección especificada. Tras llamarla, se pueden escribir datos con Wire.write().
Ejemplo:
Wire.beginTransmission(0x3C); // Inicia los datos desde el I2C principal al secundario
🔹 int Wire.endTransmission(bool sendStop)
Periférico: I2C (Wire)
Variables:
boolsendStop(opcional): Si estrue(por defecto), envía la señal STOP.
Descripción: Envía los datos del búfer al esclavo.
Devuelve: 0 si todo es correcto, o un código de error si falla.
Ejemplo:
int isOk = Wire.endTransmission(true); // Envía la señal de stop y carga la respuesta en la variable "isOk"
🔹 int Wire.requestFrom(uint16_t address, uint8_t size, bool sedStop)
Periférico: I2C (Wire)
Variables:
uint16_taddress: Dirección del esclavo.uint8_tsize: Número de bytes a solicitar.boolsendStop(opcional): Si envía o no la señal STOP.
Descripción: Solicita datos del dispositivo esclavo.
Devuelve: El número de bytes leídos. Los datos se pueden leer con Wire.read().
Ejemplo:
int nBytes = Wire.requestFrom(address, quantity, stop); // Solicita una cantidad de bytes a una dirección y deja libre el canal I2C
Y hasta aquí llegamos, estas son las funciones más comunes que usamos de manera general en el IDE de Arduino
Si te interesa más información sobre Arduino y su IDE, aquí tienes otros articulos relacionados:
Saludos!!!

No hay comentarios :
Publicar un comentario