0% encontró este documento útil (0 votos)
2 vistas6 páginas

Arduino

El documento es una guía completa sobre la programación en Arduino, abarcando desde la estructura básica de un sketch hasta la comunicación serial y el uso de sensores. Incluye conceptos clave como variables, tipos de datos, constantes, estructuras de control y funciones esenciales, junto con ejemplos de código. También se presentan consejos prácticos para optimizar el uso de Arduino en proyectos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
2 vistas6 páginas

Arduino

El documento es una guía completa sobre la programación en Arduino, abarcando desde la estructura básica de un sketch hasta la comunicación serial y el uso de sensores. Incluye conceptos clave como variables, tipos de datos, constantes, estructuras de control y funciones esenciales, junto con ejemplos de código. También se presentan consejos prácticos para optimizar el uso de Arduino en proyectos.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1.

Estructura Básica del Sketch

Para qué
Concepto Cómo funciona Casos de uso Sintaxis Ejemplo de código
sirve

Configurar
Se ejecuta una sola Configurar LED,
pines, iniciar void void setup() {<br> pinMode(13, OUTPUT);
setup() vez al encender o sensor,
Serial, setup() { } <br> [Link](9600);<br>}
resetear la placa Bluetooth, LCD
librerías

Código
Se ejecuta Leer sensores, void loop() {<br> digitalWrite(13, HIGH);
principal que void loop()
loop() infinitamente controlar LEDs, <br> delay(500);<br> digitalWrite(13,
se repite { }
después del setup enviar datos LOW);<br> delay(500);<br>}
siempre

//
comentario
El compilador los Explicar Documentar
Comentarios o /* // Este es un comentario de una línea
ignora código proyectos
comentario
*/

2. Variables y Tipos de Datos (lo más importante)

Tipo Cómo funciona Para qué sirve Casos de uso Sintaxis Ejemplo

Botón presionado, boolean estado = if (estado) digitalWrite(13,


boolean Guarda true o false Estados sí/no
LED encendido true; HIGH);

Mostrar letras en char letra =


char Un solo carácter Letras o símbolos [Link](letra);
LCD 'A';

Número entero (- Contar pulsaciones, int contador =


int Contadores, pines contador++;
32.768 a 32.767) pines digitales 0;

unsigned Solo positivo (0 a Números que Contadores de unsigned int


tiempo = millis()/1000;
int 65.535) nunca bajan de 0 tiempo tiempo = 0;

Números muy millis(), cálculos Tiempo en


long long tiempo = 0; tiempo = millis();
grandes grandes milisegundos

unsigned Solo positivo muy millis(), contadores unsigned long


Tiempo sin signo if (millis() - tiempo > 1000)
long grande largos tiempo = 0;

Números con Temperatura, Sensores (DHT11, float temp =


float temp = analogRead(A0) * 0.488;
decimales (7 dígitos) distancia, voltaje ultrasonido) 25.5;

Mostrar
Mensajes, String mensaje =
String Cadena de texto "Temperatura: [Link](mensaje);
nombres "Hola";
25.5°C"

Lista de valores del Múltiples pines o 8 LEDs, múltiples int pines[5] = for(int i=0; i<5; i++)
array
mismo tipo valores sensores {2,3,4,5,6}; pinMode(pines[i], OUTPUT);

3. Constantes y Modificadores

Concepto Cómo funciona Para qué sirve Casos de uso Sintaxis Ejemplo

Valor nunca cambia LED, botón, const int LED =


const Pines y valores fijos pinMode(LED, OUTPUT);
(ahorra memoria) velocidad 13;

Pines
Reemplaza texto antes Ahorro de memoria
#define (recomendado #define LED 13 digitalWrite(LED, HIGH);
de compilar (estilo antiguo)
const)

Puede cambiar en Contador en volatile int attachInterrupt(0,


volatile Interrupciones
cualquier momento attachInterrupt contador = 0; contar, FALLING);
4. Operadores

Tipo Operadores Para qué sirve Ejemplo de código

Cálculos
Aritméticos + - * / % int suma = 5 + 3;
matemáticos

Comparación == != > < >= <= Comparar valores if (temperatura > 30)

Lógicos `&& !`

Asignación = += -= *= /= Asignar y modificar contador += 1;

Control de bits
Bitwise `& ^ ~ << >>`
(avanzado)

5. Estructuras de Control

Estructura Cómo funciona Casos de uso Sintaxis Ejemplo

Ejecuta código según if (condición) { } else { if (digitalRead(2) == HIGH) {


if / else Botones, sensores
condición } digitalWrite(13, HIGH); }

Múltiples casos según switch(variable) { case


switch Menús, estados switch(estado) { case 0: ... }
valor 1: ... break; }

Repite un número exacto Barridos de LEDs, for(inicio; condición; for(int i=0; i<10; i++) {
for
de veces bucles incremento) digitalWrite(pines[i], HIGH); }

Repite mientras
while Esperar botón while(condición) { } while(digitalRead(2) == LOW);
condición sea verdadera

Menús que deben do { leerSensor(); }


do-while Ejecuta al menos una vez do { } while(condición);
mostrarse una vez while(temperatura < 30);

6. Funciones Arduino (I/O y Tiempo)

Función Para qué sirve Casos de uso Sintaxis Ejemplo completo

Configura pin como pinMode(pin,


pinMode Todos los proyectos pinMode(13, OUTPUT);
entrada o salida INPUT/OUTPUT)

Enciende o apaga pin digitalWrite(pin,


digitalWrite LEDs, relés, motores digitalWrite(13, HIGH);
digital HIGH/LOW)

int valor =
digitalRead Lee estado de pin digital Botones, sensores if(digitalRead(2) == HIGH)
digitalRead(pin);

Control de brillo, analogWrite(pin, 0-


analogWrite PWM (0-255) analogWrite(9, 128); // 50% brillo
velocidad motor 255)

Sensores int valor = float voltaje = analogRead(A0) *


analogRead Lee valor 0-1023 (0-5V) (potenciómetro, LDR,
analogRead(A0); (5.0/1023.0);
temp)

delay(1000); // 1
delay Pausa en milisegundos Parpadeos simples delay(500);
segundo

Tiempo transcurrido desde Timing sin bloquear unsigned long tiempo if (millis() - tiempoAnterior >=
millis
encendido (ms) (mejor que delay) = millis(); 1000)

int porcentaje =
Sensor 0-1023 → 0- map(valor, 0, 1023,
map Convierte un rango a otro map(analogRead(A0), 0, 1023, 0,
100% 0, 100)
100);
7. Comunicación Serial

Función Para qué sirve Casos de uso Sintaxis Ejemplo

Inicia comunicación
[Link] Monitor Serial [Link](velocidad); [Link](9600);
con PC

Envía texto sin salto


[Link] Depuración [Link]("Texto"); [Link]("Temp: ");
de línea

Envía texto + salto de


[Link] Mostrar datos [Link](valor); [Link](temperatura);
línea

¿Hay datos Recibir desde PC o while([Link]()) { char c =


[Link] if([Link]())
esperando? Bluetooth [Link](); }

8. Funciones Personalizadas e Interrupciones

Concepto Cómo funciona Casos de uso Sintaxis Ejemplo

void parpadear() {
Encender LEDs,
Funciones Código digitalWrite(13,HIGH);
calcular tipo nombre() { }
propias reutilizable delay(200);
distancia
digitalWrite(13,LOW); }

Ejecuta función Botones sin


attachInterrupt(digitalPinToInterrupt(pin), attachInterrupt(0, contar,
attachInterrupt al detectar debounce,
funcion, modo); RISING);
cambio encoders

Consejos finales para usar todo esto:

Usa siempre const int para pines.


Usa unsigned long con millis() para evitar bloqueos.
Evita delay() en proyectos avanzados.
Todos los pines digitales se pueden usar como INPUT/OUTPUT.

,,

,, ,

, ,,

GUÍA COMPLETA IMPRIMIBLE


Fundamentos de Programación en Arduino + Componentes
(Versión 2026 - Todo lo esencial para principiantes y avanzados)

Sección 1: Estructura Básica del Sketch

Para qué
Concepto Cómo funciona Casos de uso Sintaxis Ejemplo de código
sirve

Se ejecuta 1 sola Configurar Pines, Serial, void setup() { pinMode(13, OUTPUT);


setup() void setup() { }
vez al encender todo librerías [Link](9600); }

Se repite Código Leer sensores, void loop() { digitalWrite(13,


loop() void loop() { }
infinitamente principal controlar salidas HIGH); delay(500); ... }

Ignorados por el Explicar tu Documentar // comentario o


Comentarios // Este LED parpadea
compilador código proyectos /* bloque */

Sección 2: Variables y Tipos de Datos

Tipo Tamaño Rango Para qué sirve Casos de uso Sintaxis Ejemplo

Botones, LED boolean estado =


boolean 1 byte true / false Estados sí/no if(estado)
encendido true;
Tipo Tamaño Rango Para qué sirve
Números enteros Casos de uso
Contadores, Sintaxis Ejemplo
int 2 bytes -32.768 a 32.767 int contador = 0; contador++;
más usados pines

unsigned Contadores unsigned int


2 bytes 0 a 65.535 Solo positivos -
int de tiempo tiempo = 0;

long /
±2 mil millones / 0 millis(), números Tiempo sin unsigned long if(millis()-tiempo >
unsigned 4 bytes
a 4 mil millones grandes bloquear tiempo = millis(); 1000)
long

Números con Temperatura, Sensores temp =


float 4 bytes float temp = 25.5;
decimales distancia, voltaje analógicos analogRead(A0)*0.488;

Mensajes en LCD, String mensaje =


String variable Texto completo [Link](mensaje);
pantalla/Serial Bluetooth "Hola";

Lista del mismo Múltiples pines o 8 LEDs, varios int pines[5] =


array variable for(int i=0;i<5;i++)
tipo valores sensores {2,3,4,5,6};

Sección 3: Constantes y Modificadores

Modificador Para qué sirve Cuándo usarlo Sintaxis

const Valor nunca cambia (ahorra RAM) Pines, velocidades fijas const int LED = 13;

Reemplazo de texto (estilo Pines (menos recomendado que


#define #define LED 13
antiguo) const)

volatile Puede cambiar en interrupciones attachInterrupt volatile int contador = 0;

Sección 4: Estructuras de Control + Operadores (resumen rápido)

if / else, switch, for, while, do-while → ya viste en la tabla anterior.


Operadores: + - * / % == != > < && || ! += -=

Sección 5: Funciones Arduino Esenciales (I/O y Tiempo)

Función Para qué sirve Sintaxis Ejemplo práctico

Configura
pinMode pinMode(pin, INPUT/OUTPUT) pinMode(13, OUTPUT);
entrada/salida

digitalWrite Enciende/apaga digitalWrite(pin, HIGH/LOW) digitalWrite(13, HIGH);

digitalRead Lee botón/sensor int val = digitalRead(pin); if(digitalRead(2)==HIGH)

analogWrite PWM (0-255) analogWrite(pin, 128); Brillo LED / velocidad motor

analogRead Lee 0-1023 int val = analogRead(A0); Sensores

millis() Tiempo sin bloquear unsigned long t = millis(); MEJOR QUE delay()

delay() Pausa (bloquea todo) delay(1000); Solo pruebas rápidas

map() Convierte rangos map(valor, 0, 1023, 0, 100); Porcentaje

Sección 6: Comunicación Serial

[Link](9600);
[Link]("Texto"); / [Link](valor);
if([Link]())

Sección 7: Sensores Comunes (NUEVA TABLA)


Qué mide /
Pines Librería Cómo Casos de Consejos
Sensor Tipo Arduino recomendada Código ejemplo básico uso importantes
funciona

Presión Botones, Usa


Pulsador Digital Pin + GND Ninguna if(digitalRead(2)==HIGH)
(HIGH/LOW) menús INPUT_PULLUP

LDR A0 + 5V + Cantidad de int luz = Luces Calibra


Analógico Ninguna
(Fotoresistor) resistencia luz analogRead(A0); automáticas valores

Control
A0 + 5V + Posición int val = Centro al pin
Potenciómetro Analógico Ninguna velocidad /
GND giratoria analogRead(A0); analógico
brillo

duration = pulseIn(echo, Evitar Alimentación


HC-SR04 Trig + NewPing Distancia en
Digital HIGH); dist = obstáculos, externa si es
Ultrasonido Echo + 5V (opcional) cm
duration*0.034/2; tanques posible

Espera
DHT11 / Digital 1- DHT sensor Temperatura [Link](); Estación del
Pin + 5V mínimo 2
DHT22 wire library + Humedad [Link](); clima
segundos

Alarmas, Ajusta
PIR OUT + 5V Movimiento
Digital Ninguna if(digitalRead(3)==HIGH) luces tiempo y
(Movimiento) + GND infrarrojo
automáticas sensibilidad

SDA(A4), Usa I2C


MPU6050 Aceleración [Link](&ax, Robots,
MPU6050 I2C SCL(A5) + Scanner
library + Giroscopio &ay, &az); inclinación
3.3V primero

Sección 8: Pantallas LCD (NUEVA TABLA)

Tipo Casos de Consejos


Pines necesarios Librería Inicialización Código ejemplo básico
LCD uso importantes

16x2 LiquidCrystal Resistencia


16 pines (RS, EN, [Link]("Hola"); Mensajes
sin LiquidCrystal lcd(12,11,5,4,3,2); 10k en VO
D4-D7…) [Link](0,1); simples
I2C [Link](16,2); (contraste)

Proyectos
16x2 Solo 4 pines Dirección 0x27
[Link](); [Link]("Temperatura: con
con (SDA, SCL, VCC, LiquidCrystal_I2C o 0x3F (usa I2C
[Link](); "); pocos
I2C GND) scanner)
pines

Sección 9: Motores (NUEVA TABLA)

Driver Pines de Control Código ejemplo Consejos


Tipo de Motor Librería Casos de uso
recomendado control básico básico importantes

1 pin Alimenta por


Servo Ninguno Ángulo 0- Brazos, puertas,
PWM + Servo.h [Link](90); separado si
(SG90/MG996) (directo) 180° cámaras
5V/GND >1 servo

analogWrite(EN, Nunca
2 pines
L298N o Velocidad y 200); Carritos, alimentes
Motor DC dirección Ninguna
TB6612 sentido digitalWrite(IN1, ventiladores desde
+ PWM
HIGH); Arduino

Usa
Pasos
Motor Paso a AccelStepper
ULN2003 o Stepper.h o precisos CNC,
Paso 28BYJ- 4 pines [Link](2048); para
A4988 AccelStepper (2048 por posicionamiento
48 movimientos
vuelta)
suaves

Sección Extra: INFORMACIÓN IMPORTANTE PARA TENER EN CUENTA (¡Lee esto siempre!)
1. Usa siempre const int para pines → ahorra memoria y evita errores.
2. Nunca uses delay() en proyectos serios → usa millis() (evita que todo se “congele”).
3. Alimenta motores y sensores potentes desde fuente externa (no desde el Arduino 5V).
4. GND común : todos los componentes deben compartir el mismo GND.
5. Resistencias pull-up: para botones usa pinMode(pin, INPUT_PULLUP);
6. Librerías: ve a Sketch → Include Library → Manage Libraries… (busca por nombre).
7. I2C: pines A4 (SDA) y A5 (SCL) en Arduino UNO/Nano.
8. Nivel de voltaje: sensores 3.3V necesitan conversor de nivel lógico.
9. Depuración: usa mucho [Link]() para ver valores en tiempo real.
10. Memoria : si te dice “Sketch uses too much memory” → cambia int por byte o usa const.
11. Protección : pon diodo flyback en motores y relés.
12. Prueba primero con el Monitor Serial antes de conectar componentes caros.

También podría gustarte