Robot sensor Pololu: lógica inversa y ciclo while
Clase 38 de 38 • Curso Fundamentos de Desarrollo de Hardware con Arduino
Contenido del curso
Introducción al hardware libre
- 3

Arduino: Desarrolla Prototipos Interactivos con Microcontroladores
11:46 min - 4

Desarrollo de Prototipos de Hardware: Diseño y Fabricación
09:18 min - 5

Diseño Mecánico de Hardware con SolidWorks y Herramientas Paramétricas
05:03 min - 6

Desarrollo de Interfaces y Prototipos con QT en Sistemas Embebidos
04:07 min - 7

Limitaciones de Arduino en productos finales
04:27 min - 8
Selección de Arduino para Envío de Datos a Servidor
00:14 min - 9
Fundamentos de Desarrollo de Hardware con Arduino
01:27 min - 10
Proyectos con Arduino: Componentes y Materiales Necesarios
01:13 min
Sensores, Actuadores y Procesadores
Introducción a la electrónica
Manos a la obra
- 19

Conociendo los Puertos y Alimentación del Arduino Uno
09:40 min - 20

Funcionamiento de la Protoboard para Prototipado Electrónico
04:36 min - 21

Programación Básica en Arduino: Primeros Pasos con LED y Código
07:53 min - 22

Declarar variables para pines de Arduino
05:53 min - 23

Creación y Uso de Librerías en Arduino
03:09 min - 24

Uso del Potenciómetro para Control de LED con Arduino
10:06 min - 25

Comunicación Serial en Arduino: Uso del Monitor Serial
10:32 min - 26

Cómo PWM simula voltaje analógico
05:51 min - 27

Cómo Arduino simplifica el PWM
14:18 min - 28

Uso de Botones con Resistencia Pull-Up en Arduino
13:01 min - 29

Monitor temperatura con Arduino y LM35
10:59 min - 30

Cálculo del Multiplicador para Convertir Lecturas de Sensor a Celsius
05:05 min - 31

LCD 16x2 con Arduino sin conexión PC
17:28 min - 32

Programación de Semáforos con Arduino y Sensores
02:09 min
Automatización de procesos
- 33

Motores con Arduino y puente H L293D
23:17 min - 34

Cómo funciona un servomotor con Arduino
11:06 min - 35

Potenciómetro controla servomotor en Arduino
04:35 min - 36

Proyecto: Construcción y Programación de un Robot de Evasión de Obstáculos
08:53 min - 37

Programación de Funciones de Control de Movimiento en Arduino
08:09 min - 38

Robot sensor Pololu: lógica inversa y ciclo while
Viendo ahora
Un robot confiable empieza por una base sólida: sensores bien cableados, lógica clara y pruebas sistemáticas. Aquí verás cómo activar tu robot con un botón usando lógica inversa, leer un sensor digital Pololu basado en Sharp y estructurar un ciclo while para el flujo de decisiones. Todo en Arduino, paso a paso y sin rodeos.
¿Qué sensores y lógica usa el robot final?
El robot detecta obstáculos con un sensor de presencia Pololu digital: envía 0 cuando detecta un objeto y 1 cuando no. Pololu añade el circuito a sensores ópticos Sharp, ahorrándote resistencias y capacitores que el propio datasheet de Sharp prescribe. La acción base: si detecta un obstáculo, gira a la izquierda; si no, sigue avanzando.
¿Cómo funciona el sensor Pololu digital y los Sharp ópticos?
- Sensor digital: 0 si hay objeto, 1 si no hay objeto.
- Pololu integra el circuito que Sharp recomienda en su datasheet.
- Sin ese circuito: tendrías que añadir resistencias y capacitores específicos.
- Nota práctica: los datasheets suelen estar en inglés.
¿Qué es lógica inversa con input pull up?
- Se usa INPUT_PULLUP en el botón: por defecto el pin está en HIGH.
- Botón sin presionar: lectura HIGH, equivale a “no activar”.
- Botón presionado: lectura LOW, equivale a “activar”.
- Esto se llama lógica inversa: 0 como estado “verdadero” y 1 como “falso”.
¿Cómo decide el robot su movimiento con while?
- Un ciclo while gobierna el comportamiento activo del robot.
- Entras al while cuando el botón se presiona y el estado pasa a LOW.
- Sales del while al volver a presionar el botón, cambiando el estado a HIGH.
- Dentro del while: leer sensor y decidir entre avanzar o girar a la izquierda.
¿Cómo se programa el botón de inicio con Arduino?
La clave es una variable de estado y el uso correcto de HIGH/LOW con INPUT_PULLUP. Además, se añade un delay de 300 ms para evitar el debouncing (rebote), que puede registrar múltiples lecturas con una sola pulsación.
¿Qué variables y estados controlan el flujo?
- botonEstado: gestiona si el robot está activo (LOW) o inactivo (HIGH).
- botonValor: guarda la lectura inmediata del botón.
- Inicializa botonEstado en HIGH para que al encender no se mueva por accidente.
¿Cómo leer el botón y evitar el rebote?
- Lee con digitalRead y, si está en LOW, cambia el estado y aplica delay(300).
- Ese retardo evita múltiples activaciones por rebote mecánico.
- Si no está presionado, mantén botonEstado en HIGH.
¿Cómo estructurar el ciclo while de activación?
// Pines
const int botonUno = 7; // botón en pin 7
const int sensorObstaculo = 2; // sensor Pololu digital en pin 2
// Estado
int botonEstado = HIGH; // inactivo al iniciar
int botonValor = HIGH;
void setup() {
pinMode(botonUno, INPUT_PULLUP);
pinMode(sensorObstaculo, INPUT);
// setup de motores/driver omitido; usa tu "librería de movimientos".
}
void loop() {
// Lectura inicial del botón para entrar/salir del modo activo
botonValor = digitalRead(botonUno);
if (botonValor == LOW) {
botonEstado = LOW; // activar
delay(300); // anti-rebote
} else {
botonEstado = HIGH; // inactivar
}
// Modo activo: ciclo principal
while (botonEstado == LOW) {
int lectura = digitalRead(sensorObstaculo);
if (lectura == LOW) {
// obstáculo detectado
girarIzquierda();
} else {
avanzar();
}
// Opción de salida del modo activo
botonValor = digitalRead(botonUno);
if (botonValor == LOW) {
botonEstado = HIGH; // salir
delay(300); // anti-rebote
}
}
}
// Implementa avanzar() y girarIzquierda() en tu "librería de movimientos".
¿Cómo probar, depurar y ampliar el prototipo?
Un buen debugging empieza por lo físico: conexiones, pines y alimentación. Luego, verifica la lógica y vuelve a cargar el sketch.
¿Qué checklist eléctrico evita fallos?
- Revisa polaridad de la batería: rojo a positivo, negro a negativo.
- Asegura conectores y cables: no deben estar flojos.
- Verifica mapeo de pines: botón en 7, sensor en 2. Error común: conectar el botón en 12 cuando el código usa 7.
¿Cómo verificar el software y el cableado?
- Compila y vuelve a hacer upload tras cualquier cambio.
- Confirma INPUT_PULLUP en el botón.
- Inicializa botonEstado en HIGH para evitar arranques accidentales.
- Si algo “no debería fallar”, revisa el circuito antes de culpar al código.
¿Qué mejoras propone el desafío final?
- Añade dos sensores de presencia extra: izquierda y derecha.
- Programa evasión: obstáculo a la izquierda, gira a la derecha; a la derecha, gira a la izquierda; al frente, gira a la izquierda o haz reversa.
- Integra un sensor ultrasónico para conciencia del entorno.
- Usa tu driver L293 para mover motores sin problema.
- Documenta con un diagrama de flujo y practica para llegar listo al curso de Robótica con Arduino.
¿Con qué sensores y comportamientos ampliarías este robot? Comparte tus ideas, tu diagrama de flujo y dudas en los comentarios.