El Arduino Nano es una versión más pequeña del Arduino Uno. Tiene casi los mismos pines, pero en un formato más compacto, ideal para proyectos portátiles o donde hay poco espacio.
Diferencias entre Arduino UNO y Arduino Nano
Arduino UNO
Tamaño grande (68.6 mm)
14 pines digitales
6 pines analógicos
Puerto USB tipo B
Voltaje de operación: 5V
Compatible con shields
Ideal para proyectos de escritorio
Arduino Nano
Tamaño muy pequeño (45 mm)
14 pines digitales
8 pines analógicos
Puerto Mini USB
Voltaje de operación: 5V
No compatible con shields (usa módulos)
Ideal para proyectos portátiles
Pines del Arduino Nano
Actividad 1: Control de colores con LED RGB y PWM
Comprende cómo funciona un LED RGB y cómo controlar sus colores con botones usando señales PWM.
LED RGB (de cátodo común o ánodo común)
3 resistencias de 220Ω
3 botones
Arduino Nano
Protoboard
Jumpers
Código de programación:
Conexiones:
const byte redPin = 6;
const byte greenPin = 5;
const byte bluePin = 3;
const byte redButton = 8;
const byte greenButton = 9;
const byte blueButton = 10;
const int resetButtonPin = 7;
const int levels[] = {0, 85, 170, 255};
int redLevel = 0;
int greenLevel = 0;
int blueLevel = 0;
bool redLastState = HIGH;
bool greenLastState = HIGH;
bool blueLastState = HIGH;
void setup() {
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
pinMode(redButton, INPUT_PULLUP);
pinMode(greenButton, INPUT_PULLUP);
pinMode(blueButton, INPUT_PULLUP);
pinMode(resetButtonPin, INPUT_PULLUP);
}
void loop() {
if (digitalRead(resetButtonPin) == LOW) {
redLevel = 0;
greenLevel = 0;
blueLevel = 0;
analogWrite(redPin, 0);
analogWrite(greenPin, 0);
analogWrite(bluePin, 0);
delay(300);
}
handleButton(redButton, redLastState, redLevel, redPin);
handleButton(greenButton, greenLastState, greenLevel, greenPin);
handleButton(blueButton, blueLastState, blueLevel, bluePin);
}
void handleButton(byte buttonPin, bool &lastState, int &levelIndex, byte ledPin) {
bool currentState = digitalRead(buttonPin);
if (lastState == HIGH && currentState == LOW) {
levelIndex = (levelIndex + 1) % 4;
analogWrite(ledPin, levels[levelIndex]);
delay(200);
}
lastState = currentState;
}
int val = 0;
Variable para guardar temporalmente el valor leído del potenciómetro.
pinMode(enbPin, OUTPUT);
Configura el pin de velocidad como salida para enviar señal PWM.
pinMode(in3, OUTPUT);
Configura el pin de dirección como salida.
pinMode(in4, OUTPUT);
Configura el segundo pin de dirección como salida.
val = analogRead(potPin);
Lee el valor del potenciómetro (de 0 a 1023) y lo guarda en val.
val = map(val, 0, 1023, 0, 255);
Convierte el valor leído a un rango de 0 a 255 para usarlo como PWM.
digitalWrite(in3, HIGH);
Establece la dirección del motor.
digitalWrite(in4, LOW);
Define la dirección opuesta como apagada.
analogWrite(enbPin, val);
Envía señal PWM para controlar la velocidad del motor.
Video con explicación:
El MAX7219 es un chip controlador de matrices LED, que permite manejar fácilmente matrices de 8x8 LEDs, 7 segmentos o incluso más de una matriz con solo 3 pines digitales de Arduino.
Una matriz LED 8x8 es un conjunto de 64 LEDs organizados en 8 filas y 8 columnas. Pero no están conectados individualmente, sino que comparten conexiones en forma de cuadrícula.
Cuando quieres prender un LED específico, por ejemplo el de la fila 2, columna 3, lo que realmente haces es activar esa fila y esa columna al mismo tiempo.
Como los LEDs están organizados así, se pueden controlar como una tabla de coordenadas, como si fuera un mapa de x (columnas) e y (filas).
El MAX7219 se encarga de activar automáticamente cada fila y columna tan rápido que parece que todos los LEDs están encendidos al mismo tiempo, aunque en realidad se van encendiendo uno por uno muy rápido (esto se llama multiplexado).
Pines de conexión
Para facilitar el uso, se recomienda usar la librería LedControl.h, que permite:
Encender/apagar LEDs individuales
Mostrar caracteres, animaciones, o gráficos
Controlar múltiples matrices
#include <LedControl.h>
LedControl matrix(12, 10, 11, 1); // (DIN, CLK, CS, cantidad de matrices)
void setup() {
matrix.shutdown(0, false); // Activar matriz
matrix.setIntensity(0, 8); // Brillo (0-15)
matrix.clearDisplay(0); // Limpiar matriz
}
void loop() {
matrix.setLed(0, 2, 3, true); // Enciende LED en fila 2, columna 3
delay(500);
matrix.setLed(0, 2, 3, false); // Lo apaga
delay(500);
}
Actividad 2: Jueguito Snake en matriz 8x8
Programa una versión sencilla del juego Snake usando una matriz de LEDs 8x8 controlada por el MAX7219.
Arduino Nano
Módulo MAX7219 con matriz 8x8
5 botones (arriba, abajo, izquierda, derecha, reset)
Potenciómetro (opcional para controlar la velocidad)
Protoboard
Jumpers
Código de programación:
Conexiones:
#include <Stepper.h>
const int pasosPorVuelta = 2048;
Stepper motor(pasosPorVuelta, 8, 9, 10, 11);
void setup() {
motor.setSpeed(10);
}
void loop() {
motor.step(pasosPorVuelta);
delay(1000);
motor.step(-pasosPorVuelta);
delay(1000);
}
#include <Stepper.h>
Carga la librería que permite controlar motores paso a paso fácilmente.
const int pasosPorVuelta = 2048;
Define cuántos pasos necesita el motor para dar una vuelta completa (según el modelo).
Stepper motor(pasosPorVuelta, 8, 9, 10, 11);
Crea un objeto motor conectado a los pines 8, 9, 10 y 11 del Arduino, que van a IN1–IN4 del ULN2003.
motor.step(pasosPorVuelta);
Hace que el motor gire una vuelta completa en una dirección.
motor.step(-pasosPorVuelta);
Hace que el motor gire una vuelta en sentido contrario.
Video con explicación
Quiz de repaso
Presentación Clase 9: Control de Servomotores
Código y conexiones
1. ¿Qué pasa si quemo plástico con el cautín?
Al quemar plástico, liberas humos tóxicos que te hacen daño. ¡Evítalo! Si se pega plástico a la punta, limpia con una esponja húmeda o lana metálica.
2. ¿Qué hago si me quemo con el cautín?
Si eres menor de edad, avisa a un adulto.
Enfría la zona con agua corriente por 10 minutos.
Cubre con una gasa estéril.
Consulta al médico si es grave (ampollas grandes o mucho dolor).
3. ¿Por qué mi cautín cambia de color en la punta?
Oxidación: Límpialo con frecuencia y mantén la punta estañada.
Temperatura alta: No sobrecalientes. Ajusta entre 350-400 °C.
Residuos: Usa estaño de calidad con flux y limpia tras cada uso.
4. ¿Cómo saber si mi cautín es de buena calidad?
Un buen cautín:
Mantiene la temperatura estable.
Permite ajustar la temperatura (idealmente entre 200-450 °C).
Tiene puntas reemplazables y de buena conducción térmica.
7. ¿Cómo ajusto la temperatura de mi cautín?
350-400 °C: Ideal para soldaduras estándar.
300-350 °C: Para componentes sensibles.
Si tu cautín no tiene ajuste, considera uno que lo permita.
8. ¿Qué hacer si mi cautín no calienta bien?
Limpia la punta, puede estar oxidada.
Revisa el cable y las conexiones.
Si sigue fallando, reemplaza el elemento calefactor o el cautín.