Lo Último en IP@P
- Stellar Data Recovery revoluciona la recuperación de archivos perdidos en discos duros externos
- Goblin Mine: La Estrategia Económica Detrás del Juego de Minería que está Fascinando a Todos
- Estos son los nuevos Cargadores UGREEN: potencia y portabilidad en dos versiones que no te puedes perder
- UGREEN Nexode Pro: El Cargador Ultradelgado que revoluciona la carga de dispositivos móviles
- La computación en la nube está transformando los juegos Online y estas son sus grandes ventajas
Las placas de Arduino son dispositivos electrónicos versátiles muy elegidos por los usuarios. Esto se debe a su bajo coste y a todas las funciones que ofrece. Una de las ventajas más destacada que tiene es la facilidad que brinda su entorno de programación.
Por tal motivo, si quieres realizar cualquier proyecto, el IDE de Arduino no será un inconveniente para ti, por más que tengas pocos conocimientos en informática.
Pero esto no significa que no debas saber todos los secretos que tiene la programación de Arduino. Esta información la encontrarás a continuación, por lo que te invitamos a seguir leyendo.
¿Qué es la programación en Arduino y cuáles son los fundamentos más importantes de esta?
Lo primero que debes saber es que Arduino es una pequeña placa con circuitos digitales integrados que se utilizan para construir una gran variedad de dispositivos. Para ello, es necesario la programación de esta placa por medio de códigos que se realiza dentro de un entorno llamado IDE. En esta aplicación multiplataforma de desarrollo, el IDE, se vuelcan las líneas de códigos de programación para automatizar las tareas que realizará Arduino.
Esto es posible gracias a la lectura que realizan los sensores para trasmitir el desarrollo en los actuadores del proyecto digital. Un claro ejemplo de esto sería la construcción de un semáforo con Arduino. Para ello necesario (explicado de manera general) escribir los códigos, conectar a los pines digitales y análogos los diferentes leds, ingresar corriente eléctrica y esperar que actúe la placa con el entorno.
El IDE es un software sencillo que necesita de algunas herramientas para compilar el programa y eliminar de la memoria del procesador el software que ya no se utiliza. Una de estas herramientas es el sketch, el cual se asigna uno por cada proyecto que se quiera genera (de ahí es que muchas veces se llama al sketch como proyecto). Es importante tener en cuenta que la carpeta que contendrá el sketch debe pertenecer a un directorio que tiene que llevar el mismo nombre del proyecto, de lo contrario no se reconocerá el archivo.
La estructura de un proyecto siempre debe empezar de la misma manera:
void setup() { // en esta parte hay que empezar a escribir el código para que se ejecute } void loop() { // permite que se ejecute el código en forma de bucle }
De esta manera es posible encerrar los bloques de código y hacer que se repitan de forma continuada para mantener las instrucciones y declaraciones del programa. Es importante aclarar que setup() siempre será la función encargada de recoger todos los datos para la configuración y loop() permite que el programa se repita de forma constante para que el proyecto tenga sentido.
Todo lo anterior se puede guardar en una librería para que este conjunto de funciones pueda ser bien definido por el programador y recurrir al mismo sin necesidad de establecer de nuevo cada uno de los pasos de los códigos.
Por otro lado, el IDE permite en la programación introducir comentarios para establecer una declaración de funciones o introducir la librería o el programa. Para ello es necesario establecer algunas reglas que permitan que los comentarios cortos o largos no sean considerados por Arduino. Todo lo que se encuentre entre /*y */ no es tenido en cuenta por el entorno de programación.
Por ejemplo:
/* Internet Paso a Paso Curso de Arduino * Este es un programa básico de un semáforo para comprender los diferentes comandos y argumentos de una placa de Arduino. Encender un led rojo por segundo, luego un led amarillo mientras se apaga el rojo después se apaga para encender el verde y así sucesivamente... Se usará el pin 13, aunque esto dependerá del modelo de la placa de Arduino que tengas y de los elementos que quieras añadir también se incluirá una resistencia, en caso de ser necesario. * más información https://internetpasoapaso.com/cursos-online-gratis/informatica/arduino/ */
También es posible realizar comentarios en una misma línea incluyendo en el principio del mismo //. Esto permite evitar el programa tenga en cuenta estos parámetros, pero ayuda a los desarrolladores a entender el motivo del ingreso de ese código.
Un ejemplo de esto es:
int ledPin = 13; // conectamos el LED al pin 13, pero debes tener en cuenta el modelo de tu placa de Arduino
Las variables son factores que también debes tener en cuenta para ahorrar tiempo en la programación. Es un espacio que se utiliza para almacenar un dato el cual debe contener un nombre un tipo y un valor. Si seguimos el ejemplo del semáforo se ha utilizado como variable int ledPin = 13. En donde int es el tipo de variable, ledPin su nombre y 13 el valor asignado a un pin de la placa. Esto permite cambiar de forma rápida el boceto si es que se modifica de lugar la asignación del pin.
El conjunto de variables que se puede encontrar en una programación es, entre otras:
- Constantes: verdadero, enteras, alta y baja.
- Tipos de datos: array y bool byte.
- Alcance y calificadores: const, alcance y volátil
- Conversión: float, long, word, string y byte.
- Otras: PROGMEM tamaño de, unsigned char y unsigned long.
Por último, quedan las funciones, las cuales son los procedimientos que se deben incluir en el código para que la placa, por medio de sus sensores, realice una acción determinada.
Existe una gran cantidad de funciones las cuales se pueden dividir en:
- Entrada y salida digital
- Entrada y salida analógica
- Matemáticas
- Números al azar
- Bits y Bytes
- Especiales para las placas Zero, Due y MKR
- Trigonometría
- Interrupciones externas
- Caracteres
- Entrar y salir avanzada
- Interrupciones
- Tiempo
- Comunicación
- USB
Un ejemplo del uso de las funciones es:
/* todo lo ingresado entre { } se llama cuerpo de la función *sirve para conocer todo lo que hace la función */ void setup() { pinMode(ledPin, OUTPUT); // con este código se llama a la función pinMode por // medio de dos parámetros ledPin y OUTPUT //pinMode funciona como una función de entrada y salida }
Un tutorial que puedes practicar para encender el led que se encuentra en tu placa es el siguiente:
/* Internet Paso a Paso Led en el pin 2 de la placa de Arduino más información https://internetpasoapaso.com/cursos-online-gratis/informatica/arduino/ */ // el pin digital 2 se le asigna un nombre: int pushButton = 2; // se inicia la rutina de configuración cuando presiona restablecer: void setup() { // se inicia la comunicación en serie a 9600 bits por segundo: begin(9600); // modificar la entrada del pin para que se convierta entrada: pinMode(pushButton, INPUT); } // esto hace que el bucle se repita una y otra vez: void loop() { // para la lectura del pin de entrada de la placa: int buttonState = digitalRead(pushButton); // estado del botón: println(buttonState); delay(1); // para mejorar la estabilidad del proceso se establece un retraso }
Tipos de programación en Arduino ¿Cuáles son todas las que existen hasta ahora?
Existen hasta el momento dos formas de programación que puedes utilizar en Arduino. Una de ellas es la physical computing o desarrollo informático físico que consiste en coordinar las acciones del software y hardware para interactuar con las personas. Se realiza por medio del teclado y del ratón, entre otros elementos. Este método es útil para aquellos proyectos que se realizan de manera sencilla y que no requiere de grandes avances técnicos.
Por lo general, se trata de utilizar los sensores y los microcontroladores de la placa de Arduino conectando en los pibes analógicos dispositivos electromecánicos. De esta manera es posible manejar la iluminación, los servos y los motores. Mientras que el segundo tipo de programación es el denominado en tiempo real o reactive computing. Es una forma de configurar una placa de Arduino para que responda en un tiempo determinado a través de la recepción de datos y del medio ambiente.
Este tipo de programación requiere de mayores conocimientos informáticos debido a que las respuestas del microcontrolador deben ser dadas en milésimas de segundos. A su vez, los códigos tienen que incluir bucles que trabajen de forma correcta para reiniciar todo el proceso evitando errores en la programación y el funcionamiento.
Existen diferentes sistemas operativos que utilizan la programación en tiempo real, distinguiéndose de esta manera del resto de los SO que pueden tardar hasta minutos en responder a las indicaciones del usuario. Un ejemplo de esto es FreeRTOS, el cual es un sistema operativo en tiempo real para microcontroladores que no puedes descargar desde su página web https://www.freertos.org/
.
Requisitos básicos para programar en Arduino ¿Qué debo saber antes de comenzar en este mundillo?
Si quieres convertirte en un experto en la programación de Arduino será necesario que conozcas algunos conceptos básicos que te ayudarán en este mundillo.
Por lo que, echa un vistazo a la siguiente lista que te guiará en esta etapa:
- Lo primero que debes saber es que es una placa de Arduino y cómo está compuesta. Este componente electrónico es una plaqueta que contiene circuitos integrados y diferentes conectores que ayudan a relacionarse con el medio exterior. Existen pines analógicos y digitales, entrada de alimentación, conexión a tierra, regulador de tensión y reloj, entre otros elementos más.
- Una vez que sabes que es una placa de Arduino debes conocer su modelo. Muchas personas creen que todas las Arduino son iguales, lo cual es incorrecto porque existen diferentes versiones que se adaptan mejor a cada necesidad del usuario debido a las funciones y prestaciones que ofrece. Es importante entonces que conozcas qué modelo de placa tienes en tus manos.
- Lo anterior te servirá para que puedas conocer con precisión en dónde se encuentran todas las entradas y salidas de la placa. Esto te permitirá saber mejor el rango de voltaje con el que trabaja, la cantidad de pines digitales y analógicos, el microprocesador y otras funciones más. Cuando conozcas estos detalles sabrás qué tipo de proyectos puedes realizar.
- Cuando ya conoces el hardware, es el turno del software. El entorno de programación de Arduino es el Integrated Development Environment o IDE, por sus siglas en inglés. Es un programa gratuito y de código abierto que puede funcionar tanto en Windows, MacOS y Linux, por lo que se convierte en una herramienta versátil. Es compatible con los lenguajes de programación C y C++.
- A continuación, tendrás que descargar el IDE de forma gratuita. Para ello necesitarás un ordenador con cualquiera de los sistemas operativos que te mencionamos antes y luego ingresar con tu navegador a la página
https://www.arduino.cc/en/software
. Esto te permitirá elegir el SO que tengas instalado y continuar con los pasos de una manera sencilla. - Una vez que tienes instalado el programa tendrás que dirigirte al escritorio y presionar sobre el acceso directo que ha creado el software. Esto hará que se abra un nuevo sketch el cual incluirá los 2 primeros comandos obligatorios de la programación, setup() y loop().
- Conoce la estructura de programación. En este paso deberás entender cuál es la estructura de programación, qué es un proyecto, una función, una variable y un argumento. Esta información la encontrarás en los párrafos previos de este post. Dirígete a los mismos y hallarás todo lo que necesitas.
Manual de programación de Arduino ¿Dónde puedo descargar esta guía para programadores principiantes?
Existen diferentes sitios en los cuales puedes descargar un manual de programación de Arduino para principiantes, pero debes tener en cuenta que algunos no son tan fáciles como dicen, otros contienen códigos rotos y en otros debes gastar demasiado dinero. Por tal motivo te recomendamos que bajes de forma segura y libre de virus una completa guía de desarrollo informático con Arduino.
Vas a poder descargar manual de programación con Arduino desde su enlace aquí. Este es un proyecto que muestra la estructura, las variables y los tipos de datos que puedes utilizar en la programación. Además, encontrarás una guía completa sobre la comunicación entre Arduino y los otros sistemas de programación y cómo realizar un envío a petición y convertir un puerto analógico en digital.
Aprende paso a paso cómo funcionan las diferentes formas de programar Arduino desde cero
Te mostraremos a continuación el paso a paso que debe socializar en las diferentes formas de programar Arduino desde cero:
Programar con Android
Es posible utilizar tu smartphone o tu tablet con sistema operativo Android para programar una placa de Arduino, mira continuación el procedimiento que realizar:
- Lo primero que tendrás que hacer es descargar la aplicación ArduinoDroid - Arduino/ESP8266/ESP32 IDE desde la tienda de Google, Play Store.
- A continuación, conecta un cable OTG o USB al Arduino, esto dependerá del modelo de la placa. Si la versión Arduino es ADK, mucho mejor porque este modelo está preparado para ser compatible con Android.
- Enlaza la placa con tu ordenador por medio de un USB.
- Dirígete a la esquina superior de la pantalla y presiona en los 3 puntos. Esto desplegará el menú de opciones.
- Pulsa en la última herramienta, Agregar modo.
- Esto permitirá que se abra un nuevo menú en el cual deberás ingresar en la barra de búsqueda ADK. Cuando termines presiona en Buscar.
- Una vez encontrada la opción haz clic en la misma y pulsa en Instalar. A este paso también lo podrás hacer descargando el archivo
http://processing.arduino.cc/AdkMode.zip
.
Cuando hayas terminado con los pasos anteriores deberás descargar las bibliotecas de Arduino siguiendo esta guía:
- Baja en
http://processing.arduino.cc/UsbHost.zip
el archivo UsbHost.zip. - Una vez que hayas descomprimido el fichero encontrarás la carpeta USB-ADK. Selecciónala y muévela a Arduino Sketchbook.
- Apaga y vuelve a encender la placa de Arduino.
Ahora instala el SDK para Android:
- Ingresa a
http://developer.android.com/sdk/index.html
y pulsa en el botón DESCARGA ANDROID STUDIO. - Sigue los pasos que te pedirá el asistente de instalación.
- Abre SDK Manager, encontrarás una lista con todas las herramientas disponibles. Elige Android 3.1.
- Acepta los términos de uso y políticas de seguridad de la plataforma.
Habilita tu dispositivo como desarrollador. Para esto deberás seguir este paso a paso:
- Ingresa al menú de tu Android.
- Elige Configuraciones.
- Haz clic en la función Acerca del teléfono.
- Pulsa repetidas veces (en algunos modelos es 6 y en otros el número es 8) en la opción Número de compilación. Esto permitirá que se habilite la opción de desarrollador.
- Vuelve para atrás y presiona en Opciones de desarrollador.
- Activa la función Depuración ADB a través de USB.
Más en Informática
- Caracteres especiales: ¿Qué son, para qué sirven y cómo puedo insertar todos?
- ¿Cómo alimentar a Arduino de forma segura sin dañar la placa de desarrollo? Guía paso a paso
- Licencia GPL ¿Qué es y cuáles son las diferencias entre GPL y LGPL?
- Extensión de archivo .PHP ¿Qué son y cómo abrir este tipo de archivos?
- Algoritmo: ¿Qué es, para qué sirve y cómo funciona en informática?
SÍGUENOS EN 👉 YOUTUBE TV
Instala los controladores en tu teléfono y realiza una prueba de lectura analógica con esta guía:
- Abre Processing y elige el Modo ADK en la esquina izquierda.
- Dirígete al menú y selecciona la herramienta Archivo.
- Busca la función Ejemplos y selecciónala.
- Pulsa en Conceptos básicos y luego elige la herramienta AnalogRead.
- Selecciona Ejecutar en el dispositivo y espera unos minutos.
- Verás un código el cual deberás copiarlo en el IDE de Arduino. Esto te permitirá conectar el Arduino con el dispositivo móvil y que sean compatibles.
- Luego de unos segundos presiona en Cargar.
- Pulsa Atrás para cerrar la app.
- Desconecta el cable USB del ordenador y colócalo en el Arduino.
- Si realizaste todos los pasos de forma correcta encontrarás un cartel en la pantalla de tu teléfono preguntándote si deseas realmente conectar una placa Arduino, por lo que deberás presionar en Ok.
Prueba con estos códigos de ejemplo para ver si lo hiciste bien al proceso:
#include <LiquidCrystal.h> #include <Servo.h> #include <Wire.h> #include <RFID.h> #include <SPI.h> Servo doorservo; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int inputPin = 6; int pirState = LOW; int val = 0; #define SS_PIN 9 #define RST_PIN 8 RFID rfid(SS_PIN,RST_PIN); int serNum[5]; int cards[5] = {128,169,132,122,215}; int checkcard[5]; int loopcounter=0; int chicagofirecheck; int chicagofire; int rfidcounter; int r1 = 22; int r2 = 24; int r3 = 26; int r4 = 28; int c1 = 30; int c2 = 32; int c3 = 34; int c4 = 36; int colm1; int colm2; int colm3; int colm4; int a, b, c, d, e, f; int buzzer=38; int pos=0; // para ubicar la posición del servomotor static int x[4]; static int y[4]; static int i, j, p, s, k; int initial = 0, attempts = 0; int count = 0; int error; void setup() { pinMode(r1, OUTPUT); pinMode(r2, OUTPUT); pinMode(r3, OUTPUT); pinMode(r4, OUTPUT); pinMode(c1, INPUT); pinMode(c2, INPUT); pinMode(c3, INPUT); pinMode(c4, INPUT); pinMode(buzzer, OUTPUT); pinMode(7, OUTPUT); pinMode(13, OUTPUT); digitalWrite(buzzer, LOW); begin(); // pinMode(inputPin, INPUT); // sensor entrada begin(9600); attach(10); // conecta el servomotor al pin 38 begin(); init(); digitalWrite(c1, HIGH); digitalWrite(c2, HIGH); digitalWrite(c3, HIGH); digitalWrite(c4, HIGH); begin(9600); begin(16, 2); clear(); } void loop() { if (initial == 0) newpassword(); if (attempts < 3) enterpassword(); if (attempts >= 3) lockdoor(); if (count == 4) { println("control de claves"); rfidcounter=0; loopcounter=0; clear(); setCursor(0,0); print("control de claves"); delay(1000); clear(); setCursor(0,0); print("Por favor, identifíquese"); setCursor(0,1); print("RFID tag"); while(rfidcounter==0) { if(rfid.isCard()) { if(rfid.readCardSerial()) { checkcard[0]= rfid.serNum[0]; checkcard[1]= rfid.serNum[1]; checkcard[2]= rfid.serNum[2]; checkcard[3]= rfid.serNum[3]; checkcard[4]= rfid.serNum[4]; for(chicagofire=0; chicagofire<5; chicagofire++) { if(checkcard[chicagofire]==cards[chicagofire]) { chicagofirecheck++; } } } } delay(1000); loopcounter++; if(loopcounter==5) { rfidcounter=1; } } if((chicagofirecheck==5)||(chicagofirecheck==10)||(chicagofirecheck==15)||(chicagofirecheck==20)||(chicagofirecheck==25)) { clear(); setCursor(0,0); print("Bienvenido"); digitalWrite(13, HIGH); delay(2000); delay(500); for(pos=90; pos>=0; pos--) { write(pos); delay(50); } clear(); attempts = 0; count = 0; error = 0; initial = 1; delay(5000); println(" La puerta se cerrará en 10 segundos "); setCursor(0,0); print("Se cerrará en 10 seg"); for (s = 10; s >= 0; s--) { clear(); print("Cerrando"); setCursor(11,0); print(s); setCursor(13,0); print("sec"); delay(1000); } for(pos=0; pos<90; pos++) { write(pos); delay(50); } clear(); print("Puerta cerrada"); println("Puerta cerrada"); digitalWrite(13, LOW); delay(1000); chicagofirecheck=0; } else { clear(); setCursor(0,0); print("Sorry RFID"); setCursor(0,1); print("doesn't match"); digitalWrite(7, HIGH); delay(5000); attempts = 0; count = 0; error = 0; initial = 1; chicagofirecheck=0; digitalWrite(7 , LOW); } } if (error > 0) { println(" Clave incorrecta"); clear(); setCursor(0, 0); print("Clave incorrecta"); digitalWrite(7, HIGH); delay(2000); initial = 1; attempts++; error = 0; count = 0; digitalWrite(7, LOW); } } void newpassword() //sirve para crear una nueva clave de acceso { clear(); println(" Ingrese una nueva clave "); setCursor(0,0); print("Ingrese una nueva clave"); while (1) { digitalWrite(r1, LOW); digitalWrite(r2, HIGH); digitalWrite(r3, HIGH); digitalWrite(r4, HIGH); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { x[i] = 1; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm2 == LOW) { x[i] = 2; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm3 == LOW) { x[i] = 3; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm4 == LOW) { x[i] = 10; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } } } } digitalWrite(r1, HIGH); digitalWrite(r2, LOW); digitalWrite(r3, HIGH); digitalWrite(r4, HIGH); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { x[i] = 4; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm2 == LOW) { x[i] = 5; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm3 == LOW) { x[i] = 6; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm4 == LOW) { x[i] = 11; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } } } } digitalWrite(r1, HIGH); digitalWrite(r2, HIGH); digitalWrite(r3, LOW); digitalWrite(r4, HIGH); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { x[i] = 7; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm2 == LOW) { x[i] = 8; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm3 == LOW) { x[i] = 9; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm4 == LOW) { x[i] = 12; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } } } } digitalWrite(r1, HIGH); digitalWrite(r2, HIGH); digitalWrite(r3, HIGH); digitalWrite(r4, LOW); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { x[i] = 15; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm2 == LOW) { x[i] = 0; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm3 == LOW) { x[i] = 14; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } else { if (colm4 == LOW) { x[i] = 13; println(x[i]); setCursor(i,1); print(x[i]); delay(400); i++; } } } } if (i == 4) { break; } } clear(); } void enterpassword() //para controlar la clave { clear(); println("Ingrese la clave"); setCursor(0, 0); print("Ingrese la clave de acceso"); while (1) { val = digitalRead(inputPin); if (val == HIGH) { if (pirState == LOW) { println("Detección de movimiento"); pirState = HIGH; opendoor(); } } if(val==LOW) { if (pirState == HIGH){ println("Movimiento finalizado"); pirState = LOW; closedoor(); } } digitalWrite(r1, LOW); digitalWrite(r2, HIGH); digitalWrite(r3, HIGH); digitalWrite(r4, HIGH); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { y[j] = 1; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm2 == LOW) { y[j] = 2; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm3 == LOW) { y[j] = 3; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm4 == LOW) { y[j] = 10; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } } } } digitalWrite(r1, HIGH); digitalWrite(r2, LOW); digitalWrite(r3, HIGH); digitalWrite(r4, HIGH); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { y[j] = 4; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm2 == LOW) { y[j] = 5; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm3 == LOW) { y[j] = 6; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm4 == LOW) { y[j] = 11; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } } } } digitalWrite(r1, HIGH); digitalWrite(r2, HIGH); digitalWrite(r3, LOW); digitalWrite(r4, HIGH); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { y[j] = 7; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm2 == LOW) { y[j] = 8; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm3 == LOW) { y[j] = 9; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm4 == LOW) { y[j] = 12; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } } } } digitalWrite(r1, HIGH); digitalWrite(r2, HIGH); digitalWrite(r3, HIGH); digitalWrite(r4, LOW); colm1 = digitalRead(c1); colm2 = digitalRead(c2); colm3 = digitalRead(c3); colm4 = digitalRead(c4); if (colm1 == LOW) { y[j] = 15; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm2 == LOW) { y[j] = 0; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm3 == LOW) { y[j] = 14; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } else { if (colm4 == LOW) { y[j] = 13; println(y[j]); setCursor(j,1); print("*"); delay(400); j++; } } } } if (j == 4) break; } clear(); check(); } void check() { clear(); println("Verificando"); setCursor(0, 0); print("Verificando"); delay(1000); for (k = 0; k < 4; k++) { if (x[k] == y[k]) { count++; i = 0; j = 0; } else { error++; i = 0; j = 0; } } } void lockdoor() { println(" La Puerta se cerró"); clear(); setCursor(0, 0); print("puerta cerrada"); digitalWrite(7, HIGH); delay(1000); clear(); int op=1; beginTransmission(9); write(op); endTransmission(); delay(500); for (p = 30; p >= 0; p--) { if(p<10) { digitalWrite(buzzer, HIGH); delay(100); clear(); print("try after"); setCursor(10,0); print(p); setCursor(13,0); print("sec"); delay(1000); } else { digitalWrite(buzzer, HIGH); delay(100); clear(); print("try after"); setCursor(10,0); print(p); setCursor(13,0); print("sec"); delay(1000); } digitalWrite(38, LOW); digitalWrite(7, LOW); delay(100); } attempts = 0; } void opendoor() { digitalWrite(13, HIGH); for(pos=100; pos>=0; pos--) { write(pos); delay(50); } delay(20000); attempts=0; } void closedoor() { for(pos=0; pos<100; pos++) { write(pos); delay(50); } digitalWrite(13, LOW); }
Programar por bloques
Una de las ventajas que tiene Arduino es la posibilidad que ofrece en programar en forma de bloque. Esto quiere decir que se puede utilizar un conjunto de códigos prediseñados e incluirlos en el desarrollo general. De esta manera es posible avanzar, ya que los bloques se encastran formando pasos que ya fueron solucionados por otros usuarios de Arduino. Para realizar esta tarea puedes utilizar diferentes entornos de desarrollo, en este caso utilizaremos UIFlow.
Los pasos que tendrás que hacer son:
- Ingresa con tu navegador de confianza a la web
https://m5stack-store.myshopify.com/pages/download
y después busca el botón de descarga llamado M5Burner. Este lo vas a encontrar en la sección Software. - A continuación, abre el ejecutable que acabas de bajar ingresa a M5Burner.
- Dirígete al panel izquierdo y elige la opción UIFlow (en su última versión).
- Escribe el usuario y contraseña de Internet. Esto permitirá obtener los ajustes necesarios a la red de WiFi con la cual trabajará la placa, logrando que aparezca en la pantalla un código QR con la API. Si no quieres hacerlo por medio de WiFi lo podrás hacer por un puerto USB, con el cual continuamos con el ejemplo.
- Configura el campo COM (con el puerto correspondiente) y Baudrate (elige 750000).
- Después de esto, vas a tener que pulsa en Burn.
- A continuación, encontrarás una pantalla con el desarrollo y la información de todo el entorno.
Mira este ejemplo:
- Abre el entorno de programación. Encontrarás la pantalla dividida en dos, la parte izquierda muestra el menú de funciones, mientras que la otra sección es el desarrollo de la programación.
- En el panel izquierdo dirígete al menú superior y elige Title.
- Escribe un nombre y arrástralo con el ratón hasta el dibujo del dispositivo.
- A continuación, selecciona cuando se abra una ventana escribe en el campo Text lo que necesites.
- Cuando haya terminado con estos pasos ingresa de nuevo al menú y elige Etiqueta. Se desplegará en el sector derecho una serie de opciones, escoge la primera impresión en la misma.
- El paso anterior para que se coloque de forma automática el grupo de códigos perteneciente a esa etiqueta. Modifica el menú en label0 y escribe qué deseas que aparezca. Por ejemplo, IP@P.
- A continuación, pulsa Evento y elige un botón. Arrástralo hasta el sector de programación y define con qué lo vas a relacionar, con IMU, TRC, LED o AXP.
- Por ejemplo, si escoges LED vas a tener que seleccionar qué es lo que quieres que haga el botón. Es decir, si deseas que se apague o encienda el led.
- Cuando hayas terminado con esta parte podrás presionar en guardar. Debe tener en cuenta que para que los bloques trabajen es necesario que lo unas a los comandos, para ello debes unirlo lo más cercano posible hasta que se conviertan del mismo color.
Programar con Python
La ventaja que ofrece el Python es que no es necesario realizar todo el proceso que se ejecuta con los otros lenguajes, en este caso se debe ingresar las instrucciones y el programa las interpreta sin ningún otro paso que hacer. Por tal motivo, es un entorno ideal para aprender a programar Arduino. Las versiones actuales que existen de este lenguaje es Python y Python 3, siendo Esta última la única que recibe soporte.
Se puede iniciar el programa desde una consola de Linux por medio del comando de super usuario sudo apt-get install idle3
. Pero si no dispones de Linux, ya que tu ordenador cuenta con un sistema operativo Windows o MacOS deberás usar Thonny Python IDE. Para ello vas a tener que visitar https://thonny.org/
y elegir el botón con el SO correspondiente.
Una vez que hayas descargado este software deberás conocer estos temas para programar tu Arduino:
- Variables y datos: Es importante que conozcas y las variables pueden disponer de diferentes valores e ir modificándose de acuerdo con el programa que las ejecuta. A diferencia de otros entornos, en Python no es necesario definir las variables antes de usarlas.
- Listas: Se definen estos elementos cuando los datos están encerrados en corchetes, siendo enumerados desde 0 hasta longitud -1. Es importante tener en cuenta si se incluye o no los elementos de los extremos.
- Tuplas: La diferencia que existe con las listas es que las tuplas contienen los datos encerrados entre paréntesis.
- Operadores: Existe una gran cantidad de operadores que permiten realizar diferentes acciones. Los más comunes se encuentran los aritméticos, los de asignación hilos relacionales.
Una vez que tienes definido estos conceptos deberás realizar el siguiente proceso:
- Si quieres escribir Curso de Arduino en Internet Paso a Paso, tendrás que escribir en la terminal el comando print (”Curso de Arduino en Internet Paso a Paso”).
- A continuación, podrás ejecutar el programa ingresando python3 uno.py.
Para practicar realiza el ejemplo de la programación de una estación meteorológica con Arduino.
Una vez que hayas abierto el programa en tu ordenador y conozcas en puerto escribe lo siguiente:
~/Descargas/UIFlowIDE$ screen /dev/ttyUSB1 115200
Reinicia el dispositivo manteniendo pulsado 6 segundos para pagar y 2 segundos para arrancar, luego ingresa lo siguiente:
I (9) boot: ESP-IDF v3.3-beta1-270-g6ffef3bc1 2nd stage bootloader I (9) boot: compile time 09:26:17 I (9) boot: Enabling RNG early entropy source... I (14) boot: SPI Speed : 80MHz I (18) boot: SPI Mode : DIO I (22) boot: SPI Flash Size : 4MB I (26) boot: Partition Table: I (29) boot: ## Label Usage Type ST Offset Length I (37) boot: 0 nvs WiFi data 01 02 00009000 00006000 I (44) boot: 1 phy_init RF data 01 0 >>> I (9) boot: ESP-IDF v3.3-beta1-270-g6ffef3bc1 2nd stage bootloader I (9) boot: compile time 09:26:17 I (9) boot: Enabling RNG early entropy source... I (14) boot: SPI Speed : 80MHz I (18) boot: SPI Mode : DIO I (22) boot: SPI Flash Size : 4MB I (26) boot: Partition Table: I (29) boot: ## Label Usage Type ST Offset Length I (37) boot: 0 nvs WiFi data 01 02 00009000 00006000 I (44) boot: 1 phy_init RF data 01 01 0000f000 00001000 I (52) boot: 2 factory factory app 00 00 00010000 001e0000 I (59) boot: 3 internalfs Unknown data 01 81 001f0000 00210000 I (52) boot: 2 factory factory app 00 00 00010000 001e0000 I (59) boot: 3 internalfs Unknown data 01 81 001f0000 00210000 I (67) boot: End of partition table I (71) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0xdad24 (896292) map I (337) esp_image: segment 1: paddr=0x000ead4c vaddr=0x3ffb0000 size=0x02e9c ( 11932) load I (341) esp_image: segment 2: paddr=0x000edbf0 vaddr=0x40080000 size=0x00400 ( 1024) load I (344) esp_image: segment 3: paddr=0x000edff8 vaddr=0x40080400 size=0x02018 ( 8216) load I (355) esp_image: segment 4: paddr=0x000f0018 vaddr=0x400d0018 size=0xd3a10 (866832) map I (611) esp_image: segment 5: paddr=0x001c3a30 vaddr=0x40082418 size=0x116c0 ( 71360) load I (634) esp_image: segment 6: paddr=0x001d50f8 vaddr=0x400c0000 size=0x00064 ( 100) load I (635) esp_image: segment 7: paddr=0x001d5164 vaddr=0x50000000 size=0x00808 ( 2056) load I (654) boot: Loaded app from partition at offset 0x10000 I (654) boot: Disabling RNG early entropy source... I (655) cpu_start: Pro cpu up. I (659) cpu_start: Application information: I (664) cpu_start: Compile time: 09:26:24 I (669) cpu_start: Compile date: Jun 10 2019 I (674) cpu_start: ESP-IDF: 3-beta1-270-g6ffef3bc1 I (680) cpu_start: Starting app cpu, entry point is 0x400831f4 I (0) cpu_start: App cpu up. I (691) heap_init: Initializing. RAM available for dynamic allocation: I (698) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM I (704) heap_init: At 3FFB9970 len 00026690 (153 KiB): DRAM I (710) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM I (716) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM I (723) heap_init: At 40093AD8 len 0000C528 (49 KiB): IRAM I (729) cpu_start: Pro cpu start user code I (75) cpu_start: Starting scheduler on PRO CPU. I (0) cpu_start: Starting scheduler on APP CPU. Internal FS (FatFS): Mounted on partition 'internalfs' [size: 2162688; Flash address: 0x1F0000] ---------------- Filesystem size: 2101248 B Used: 503808 B Free: 1597440 B ---------------- I (388) [TFTSPI]: attached display device, speed=8000000 I (388) [TFTSPI]: bus uses native pins: false [ M5 ] node id:1234567890ab, api key:12345678 I (4344) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (4344) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE I (4432) phy: phy_version: 4007, 1234567, Jan 11 2019, 16:45:07, 0, 0 I (4436) modsocket: Initializing Connect Wi-Fi: SSID:Miwifi PASSWD:Mipass network... .................. Network config: ('192.168.43.185', '255.255.255.0', '192.168.43.1', '192.168.43.1') M5Cloud connected. m5cloud thread begin .....
A continuación, pulsa al mismo tiempo las teclas Ctrl + C para interrumpir el software esto te permitirá conocer:
Unhandled exception in thread started by <bound_method> Traceback (most recent call last): File "flowlib/lib/time_ex.py", line 56, in timeCb KeyboardInterrupt: Unhandled exception in thread started by <bound_method> Traceback (most recent call last): File "flowlib/m5cloud.py", line 187, in _daemonTask File "flowlib/lib/time_ex.py", line 56, in timeCb KeyboardInterrupt: Traceback (most recent call last): File "flow.py", line 43, in <module> File "flowlib/m5cloud.py", line 224, in run File "flowlib/m5cloud.py", line 199, in _backend File "flowlib/m5cloud.py", line 187, in _daemonTask File "flowlib/lib/time_ex.py", line 56, in timeCb KeyboardInterrupt:
Por último, la interfaz de MicroPython será:
MicroPython v1.10-273-g4616ff72f-dirty on 2019-06-10; ESP32 module with ESP32 Type "help()" for more information. >>> Welcome to MicroPython on the ESP32! For generic online docs please visit http://docs.micropython.org/ For access to the hardware use the 'machine' module: import machine pin12 = machine.Pin(12, machine.Pin.OUT) value(1) pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP) print(pin13.value()) i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22)) scan() writeto(addr, b'1234') readfrom(addr, 4) Basic WiFi configuration: import network sta_if = network.WLAN(network.STA_IF); sta_if.active(True) scan() # Scan for available access points connect("<AP_name>", "<password>") # Connect to an AP isconnected() # Check for successful connection Control commands: CTRL-A – on a blank line, enter raw REPL mode CTRL-B – on a blank line, enter normal REPL mode CTRL-C – interrupt a running program CTRL-D – on a blank line, do a soft reset of the board CTRL-E – on a blank line, enter paste mode For further help on a specific object, type help(obj) For a list of available modules, type help('modules') >>>
Programar con scratch
Scratch, como entorno de programación, tiene como ventaja la simplicidad que ofrece a los usuarios para llevar a cabo proyectos de robótica y de electrónica sin tener conocimientos avanzados en lenguajes de programación. Para ello utilizas bloques que se van ensamblando de acuerdo con las funciones y características que necesita el usuario.
Si quieres programar una placa de Arduino con Scratch tendrás que hacer este paso a paso:
- Lo primero que tendrás que realizar es descargar el IDE de Scratch. Para ello tendrás que ingresar con tu navegador de confianza a la página
https://mblock.makeblock.com/en-us/
, esperar unos segundos que la plataforma detecte el sistema operativo de tu ordenador y luego pulsar en el botón Descargar. - Una vez que hayas abierto este programa encontrarás la pantalla dividida en tres secciones, siendo la del medio en donde verás todas las funciones y la de la derecha el entorno en el que escribirás los códigos en bloque.
- Ahora deberás conectar la placa con tu ordenador.
- Ingresa a la herramienta Placa y elige el modelo de tu Arduino.
- Dirígete al menú Extensiones selecciona Arduino y también Comunicación.
- A continuación, ingresa a la pestaña Conectar y verifica en Puerto serie que el programa haya reconocido la conexión de Arduino. Esto lo podrás detectar si escribes el nombre del puerto al cual conectaste la placa.
- Una vez que hayas realizado estos pasos, en la columna del medio encontrarás el nombre de la placa con un botón de color verde. Lo cual significa que todas las conexiones están realizadas de forma correcta.
- Dirígete al menú del medio de la pantalla y selecciona la pestaña Programas.
- Se desplegará un menú en el cual tendrás que elegir Robots (si es que estás haciendo un proyecto de esta naturaleza, también puedes escoger otros), para comenzar con la programación, la opción Programa de Arduino.
- A continuación, pulsa en la pestaña Control.
- Elige el bloque de comandos que deseas que realice el robot.
- Vuelve a la herramienta Robots y presiona en la siguiente acción que realizará la placa.
- Cuando termines elige de nuevo Control y escoge una nueva función. Esto es repetitivo hasta que termines de programar.
Los mejores cursos online gratuitos para aprender a programar Arduino desde cero que debes conocer
Si estás dispuesto a avanzar en el mundillo de la programación de Arduino es importante que conozcas los mejores cursos online de forma gratuita. Estas plataformas te ayudarán a aprender desde cero todas las variantes que ofrece la placa electrónica.
Echa un vistazo:
Arduino en Internet Paso a Paso
No podíamos comenzar está lista sin recomendar nuestro propio curso gratuito para aprender a programar Arduino. Tenemos para ofrecerte una gran cantidad de temas separados de forma estratégica para que el aprendizaje sea mucho más rápido y mejor, sin importar la experiencia informática del usuario.
Para que disfrutes de las guías y los tutoriales sobre las diferentes placas de Arduino, del entorno de programación y de los proyectos de robótica para adultos y niños será necesario que ingreses a Curso de Arduino IPAP y elijas el tema que más te guste. Además, podrás realizarnos cualquier tipo de consulta en la sección de Comentarios.
Arduino Project Hub
Es la página oficial de Arduino en donde podrás encontrar una gran variedad de proyectos, ideas para construir dispositivos electrónicos con placas, materiales y códigos de programación. Estos proyectos son subidos por los propios usuarios, por lo que la comunidad forma una parte estratégica en esta web. Tendrás que visitar con tu navegador https://create.arduino.cc/projecthub
para conocer las diferentes ideas que se pueden usar de acuerdo con tus conocimientos informáticos.
Ikkaro.com
Es una plataforma dedicada a los experimentos caseros, no solo de robótica sino también de una gran variedad de temas. Debido a esto la placa de Arduino forma una parte importante del proyecto. Si quieres conocer más y descargar los tutoriales tendrás que ingresar a la página y explorar su contenido.