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?
// Pinesconstint botonUno =7;// botón en pin 7constint sensorObstaculo =2;// sensor Pololu digital en pin 2// Estadoint botonEstado = HIGH;// inactivo al iniciarint botonValor = HIGH;voidsetup(){pinMode(botonUno, INPUT_PULLUP);pinMode(sensorObstaculo, INPUT);// setup de motores/driver omitido; usa tu "librería de movimientos".}voidloop(){// Lectura inicial del botón para entrar/salir del modo activo botonValor =digitalRead(botonUno);if(botonValor == LOW){ botonEstado = LOW;// activardelay(300);// anti-rebote}else{ botonEstado = HIGH;// inactivar}// Modo activo: ciclo principalwhile(botonEstado == LOW){int lectura =digitalRead(sensorObstaculo);if(lectura == LOW){// obstáculo detectadogirarIzquierda();}else{avanzar();}// Opción de salida del modo activo botonValor =digitalRead(botonUno);if(botonValor == LOW){ botonEstado = HIGH;// salirdelay(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.
Según tu error fue que conectaste el pin del botón al pin 12 de arduino y debería ser el 7 según tu código. Porque vuelves a grabar el programa al arduino, si solo fue mover el cablecillo del 12 al 7??, no tiene nada que ver el codigo que ya habia sido cargado a arduino. No es necesario
Lo mismo pienso yo
Para un proyecto como el del Robot evasor, creo muy importante que expliques cada conexión y el armado a detalle.
Sobre el rebote: es importante tenerlo en cuenta para evitar falsos positivos en la lectura del pulsador. Y asi evitar un comportamiento erratico. otra manera de solucionarlo es poner un condensador como se muestra en la foto.
Excelente, justo eso estuvimos viendo en unas clases en la universidad.
Gracias por el curso. Es básico pero ayuda a entender el funcionamiento de Arduino.
Super me encanta. Ya he trabajo con Arduino pero igual gracias, nunca se deja de aprender.
Les comparto un software que desarrolle
Con el cual pueden comunicarse con el Arduino por el puerto Serial o Bluetooth de su ordenador
En el link viene el manual de usuario y la librería con ejemplos de como utilizarla
Hola, esta increible tu aporte!!
Muy util, gracias. Quisiera saber como hiciste el software que nos da esa forma de comunicarnos.
Feliz dia!
Un grandioso curso, ya habia trabajado con arduino pero aun asi aprendi muchas cosas en este curso, estoy ansioso por iniciar el siguiente.
geniaaal! no olvides presentar tu examen y dejar tus 5 estrellas!
Hola, tengo algunos problemas, decidí usar el sensor ultrasónico sin embargo no puedo hacer que funcione adecuadamente el código con dicho sensor, podrías guiarme en cuanto a el HC-SR04??
Claro que sí, pasame tus conexiones
perdonen. hay algun curso que continue este??? me interesa mucho seguirlo
Faltan el diagrama de conexiones ¿Cuando estará disponible?
Recuerda que cada row está compuesta por 12 columnas, al asignar la clase col-8 y col-4 respectivamente, toman ese espacio en columnas y suman doce.
En donde carambas está la clase con el sensor de proximidad y los diagramas de los circuitos? Ya que no se ve nada claro con esa cámara. La verdad tienen que mejorar mucho la calidad de sus cursos.
¡Hola!
Recuerda que puedes escribir tus comentarios y sugerencias al team@platzi.com o utilizar la bandera para reportar un problema que está a un costado. Seguro que suben el diagrama pronto.
Saludos
El sensor HC-SR04 es analógico?
Es digital. Saludos
Deberían de revisar las respuestas a las preguntas que hacen en el examen. He visto errores que confunden.
¡Hola!
¿Recuerdas qué preguntas fueron? Recuerda que siempre puedes escribir tus comentarios y sugerencias al team@platzi.com.
Como no hay los esquemáticos del proyecto es bueno utilizar el simulador Tinkercat porque tiene la mayoría de componentes y además puedes ponerle el código. Así te guías mejor para cuando lo implementas
excelente curso gracias platzi
Entre al curso de robótica con arduino pero no sale cómo hacer el robot que barre el piso. En que curso es porfa??
Este curso estuvo bien, genial celis, estoy pendiente para hacer el siguiente. 😃