Aprende a estructurar tus programas en Arduino y crea tu primer Hello World: un LED que parpadea en el pin 2. Verás cómo usar setup, loop, pinMode, digitalWrite y delay en el IDE de Arduino, cómo compilar el sketch, cargarlo a la placa y resolver un error típico de configuración de placa y puerto.
¿Cuál es la estructura de un programa en Arduino?
Arduino está basado en el frameworkWiring con C y C++. El código se organiza en dos bloques clave: void setup() y void loop().
En setup: se configura el hardware y se ejecuta una sola vez.
En loop: se repite de forma indefinida y contiene la lógica principal.
Analogía con C: en setup irían variables globales y definiciones; loop funciona como el main con un ciclo infinito por defecto.
Idea central: el microcontrolador no asume nada. Debes indicar si cada pin será entrada (INPUT) o salida (OUTPUT).
¿Cómo configurar un pin y hacer parpadear un LED?
Usaremos el pin digital 2 como salida. La secuencia: encender con HIGH, esperar con delay, apagar con LOW y esperar de nuevo.
Primero verifica, luego sube el programa. Conecta el cable USB a tu computadora y a Arduino. La longitud del cable no afecta el proceso.
Botón con palomita: verificar compila y revisa sintaxis.
Flecha a la derecha: subir carga el código a la placa.
Si aparece: "timeout communication with programmer", faltó configurar placa y puerto en Tools.
Pasos de configuración en el IDE:
Ve a: Tools > Board: elige tu placa, por ejemplo: Arduino Genuino Uno.
Ve a: Tools > Port: selecciona el puerto detectado, por ejemplo: COM6.
Pulsa Upload de nuevo: debe terminar rápido si ya compilaste antes.
Cuando el sketch se carga correctamente, el LED comienza a parpadear según los retardos que definas. Si deseas que parpadee más rápido, ajusta delay y vuelve a subir el código.
¿Tienes preguntas o algo no funcionó como esperabas? Déjalo en el sistema de discusiones y con gusto te ayudo.
Programación Básica en Arduino: Primeros Pasos con LED y Código
delay(): este pausa el sketch por un tiempo determinado que es pasado como parametro, este se escribe en milisegundos. si se requiere menores tiempos existe el delayMicroseconds().
delayMicroseconds(): se utiliza para tiempos mas pequeños en concreto de microsegundos.
pinMode():se utiliza para configurar los pines digitales ya sea como entrada o salida de datos 5v 0 0v.
digitalWrite():se utiliza parenviar una señal de alto (5v) o bajo (0v) por un pin previamente configurado como pin de salida
recuerda que los puertos del arduino no tienen suficiente corriente para quemar un led, pero está bien que sigas el protocolo y coloques la resistencia correspondiente =)
revisando el foro de arduino, solo en el pin 13 no es necesario poner resistencia, de ahi en fura lso demas pines deberian usar resistencia el valor varia si es para entradas o salidas.
Hola hice una pequeña comparación entre los lenguajes que podemos programar
la placa de ARDUINO UNO y cuanto espacio ocupan en la memoria FLASH, donde el ganador es el
👑lenguaje ASM donde tan solo ocupa el 0.2%, aunque el programa es muy extenso pero ...
siempre se gana y se pierde algo (se gano velocidad y menor uso de la FLASH pero se escribe más código)
No es transpilar es Compilar, ya que ''se transforma el lenguaje C y un nivel más bajo ASM''. Y como dices se ocupa más los lenguajes de alto nivel debido a que la mayoría de los compiladores tiene optimizaciones muy buenas.
En "Herramientas" en el apartado donde dice "Puerto" debes seleccionar el puerto USB al que está conectado el Arduino, generalmente lo detecta y en la lista te sale ya sea COM1, COM2 etc. y lo seleccionas.
La pata más larga se conecta al puerto dos y la pata pequeña al puerto de GND.
El cable no importa, solo es para poder conectar el led. Con que conectes la pata pequeña a GND y la otra al puerto dos, es suficiente.
El problema lo solucionas seleccionando la placa correcta en la opción del menú Herramientas -> Placa, una vez seleccionada la placa, seleccionas el procesador, en la siguiente opción y por último, el puerto al cual conectaste y detecto la computadora el arduino.
Hubiera sido genial, que este curso se haya enfocado utilizando Node.js. ¿Es posible que lo actualicen o agreguen uno nuevo utilizando JavaScript para desarrollar en Hardware?
Hola profesor @jjduran se ve diferente por que es chino y no original haha, se ve diferente por el Microcontrolador que tiene la tarjeta el del curso es la clasica tarjeta Arduino Uno Rev3 con ATmega328P , el de usted es la version Arduino Uno Rev3 SMD de la tarjeta https://bit.ly/3hVv2Zv sigue siendo el Microcontrolador ATmega328P solo que en su version SMD (Surface Mount Device) y no el DIL o DIP (Dual In Line Package). Y si para todos los propositos es la misma.
Hola Ricardo, quería preguntarte cómo puedo detener un código de Arduino sin tener que hacerlo abruptamente desconectando el Arduino UNO o los componentes electrónicos. Para casos como: Estoy tomando datos de temperatura y quiero detener la toma de datos o en el caso del video, que deje de encenderse el LED. Gracias de antemano y quedo atento a tu respuesta
Hola, soy otro Ricardo pero te puedo responder igual jeje.
Mis recomendaciones pueden ser terminar tu código bucle loop() con un:
while(true){}
Y utilizar el switch de reset implementado en la placa de Arduino así tienes un control de las ejecuciones de código que serán una la vez.
Generalmente este tipo de placas de desarrollo no cuentan con un switch de on/off
Se me ocurrio escribir S.O.S. en codigo morse
SOS en morse es ... --- ...
voidsetup(){// put your setup code here, to run once:pinMode(2,OUTPUT);}voidloop(){// put your main code here, to run repeatedly:digitalWrite(2,HIGH);delay(200);digitalWrite(2,LOW);delay(200);digitalWrite(2,HIGH);delay(200);digitalWrite(2,LOW);delay(200);digitalWrite(2,HIGH);delay(200);digitalWrite(2,LOW);delay(700);//digitalWrite(2,HIGH);delay(400);digitalWrite(2,LOW);delay(400);digitalWrite(2,HIGH);delay(400);digitalWrite(2,LOW);delay(400);digitalWrite(2,HIGH);delay(400);digitalWrite(2,LOW);delay(700);//digitalWrite(2,HIGH);delay(200);digitalWrite(2,LOW);delay(200);digitalWrite(2,HIGH);delay(200);digitalWrite(2,LOW);delay(200);digitalWrite(2,HIGH);delay(200);digitalWrite(2,LOW);delay(1000);}