_________________________________________________________________________________ /* ATDT MAGAZINE ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::[0x01-06]: NUMERO 0x01:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: "introducción a Arduino" por lmtreser */ Arduino es un completo ecosistema formado por software y hardware pensado originalmente para acercar la tecnología y el uso de microcontroladores a aficionados, artistas y personas con ganas de aprender y crear. Permite construir objetos para interactuar con el mundo que los rodea. Desde el punto de vista técnico, básicamente podríamos resumir todo como un sistema que recibe información a través de entradas, las procesa de acuerdo a un firmware escrito por un humano, y actúa en consecuencia a través de salidas de señal. El software se puede descargar libremente (y gratis) y las placas se pueden comprar a muy bajo costo o construirlas, ya que toda la documentación necesaria para hacerlo está publicada en la web. El fin de este artículo es conocer el mundo Arduino, instalar el software y descargar un programa sencillo en una placa. Esto nos acercará a los principios de la programación e interacción con componentes electrónicos. =====> EL SOFTWARE Para poder trabajar con una placa Arduino necesitamos instalar el entorno de desarrollo (IDE). El IDE está escrito en Java (basado en Processing y Wiring), es multiplataforma y open source. Dicho entorno nos permite escribir el código, compilarlo y cargarlo en el hardware. Al momento de escribir este artículo la versión disponible es la 1.8.13 y se puede descargar desde www.arduino.cc/en/software. El flujo de trabajo se puede resumir a los siguientes pasos: 1. Realizar las conexiones de sensores y actuadores a la placa. 2. Conectar la placa al puerto USB de una computadora. 3. Ejecutar el IDE. 4. Elegir el modelo de la placa que estamos usando (menú Herramientas>Placa>Arduino UNO). 5. Elegir el puerto donde está conectada. En M$ Windows probablemente habrá que instalar algún driver y en GNU/Linux habrá que otorgar permisos de acceso a los puertos USB al usuario. 6. Escribir el código. 7. Transferirlo a la placa desde el botón SUBIR. =====> EL HARDWARE Arduino ofrece una gran cantidad de productos de hardware para distintos fines y niveles de conocimientos. En este texto me voy a centrar en la placa más popular: Arduino UNO. Está placa está construida alrededor de un microcontrolador ATmega328 de ATMEL (adquirida hace unos años por Microchip). Funciona a 16MHz, y posee toda la circuitería auxiliar: regulador de tensión, comunicación USB, conectores de ingreso y salida de datos, etc. Tenemos a nuestra disposición 14 patitas digitales (E/S), 6 salidas de tipo PWM, 6 entradas analógicas, 32kb de memoria flash (de los cuales 0.5kb son usados por el bootloader), 2kb de SRAM y 1kb de memoria EEPROM. El pinout de la placa es el siguiente: +-----+ +----[PWR]-------------------| USB |--+ | +-----+ | | GND/RST2 [ ][ ] | | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | | 5V/MISO2 [ ][ ] A4/SDA[ ] | | AREF[ ] | | GND[ ] | | [ ]N/C SCK/13[ ] | | [ ]IOREF MISO/12[ ] | | [ ]RST MOSI/11[ ]~| | [ ]3V3 +---+ 10[ ]~| | [ ]5v -| A |- 9[ ]~| | [ ]GND -| R |- 8[ ] | | [ ]GND -| D |- | | [ ]Vin -| U |- 7[ ] | | -| I |- 6[ ]~| | [ ]A0 -| N |- 5[ ]~| | [ ]A1 -| O |- 4[ ] | | [ ]A2 +---+ INT1/3[ ]~| | [ ]A3 INT0/2[ ] | | [ ]A4/SDA RST SCK MISO TX>1[ ] | | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | | [ ] [ ] [ ] | | UNO_R3 GND MOSI 5V ____________/ \_______________________/ http://busyducks.com/wp_4_1/2015/11/16/ascii-art-arduino-pinouts/ =====> ESTRUCTURA DE UN PROGRAMA Podríamos decir que el lenguaje de programación que se utiliza en Arduino es C++ y el gran trabajo que tiene es una API que nos abstrae de la capa de hardware. La estructura básica del lenguaje de programación Arduino es bastante simple y se organiza en al menos dos partes o funciones que encierran bloques de declaraciones. Ambas funciones son requeridas para que el programa funcione. **************************** * //esto es un comentario * * * * void setup() { * * instrucciones; * * } * * * * void loop() { * * instrucciones; * * } * **************************** La función setup() es ejecutada una vez al comenzar a correr el programa y es usada generalmente para hacer configuraciones, por ejemplo asignar los modos de pines o inicializar las comunicaciones serie. La función loop() se ejecuta a continuación e incluye el código que se ejecuta continuamente leyendo entradas, activando salidas, etc. Esta función es el núcleo de todos los programas Arduino y hace la mayor parte del trabajo. =====> ¡HOLA MUNDO CON ARDUINO! Vamos a escribir y correr nuestro primer programa en una placa Arduino, así que manos a la obra: EL CIRCUITO. Nuestro primer proyecto será encender y apagar un LED. Un LED es un diodo emisor de luz, un componente que cuando lo atraviesa una corriente eléctrica libera energía lumínica. El LED tiene dos patitas, ánodo que es el positivo y cátodo que es el negativo. Por desgracia no podemos conectar un LED directamente a alguna de las salidas de la placa ya que la tensión con la que trabaja Arduino (5V), lo destruiría. Tendremos que usar una resistencia, que es un componente que se opone al paso de la corriente eléctrica. Esto nos permitirá limitar la cantidad de corriente que pasará por el LED. |\ | LED |------| /|---------(GND) | |/ | | |------[-----]------(13) RESISTENCIA Arduino UNO trae soldado en la placa un pequeño LED junto a su resistencia en el pin digital número 13, por lo tanto por ahora no tendremos que conectar nada a la misma. EL CÓDIGO. Las programa que se encargará de darle vida a nuestro hardware es el siguiente: *************************************************************************************** * void setup() { * * // inicializar el pin digital 13 como salida. * * pinMode(13, OUTPUT); * * } * * * * // la función loop se ejecuta una y otra vez * * void loop() { * * digitalWrite(13, HIGH); // enciendo el LED * * delay(1000); // espero un segundo * * digitalWrite(13, LOW); // apago el LED * * delay(1000); // espero un segundo * * } * *************************************************************************************** +/ pinMode(numeropin, modo). Permite configurar como se comportará la patita digital, en nuestro caso será una salida. +/ digitalRead(numeropin). Permite escribir un estado en la patita digital, HIGH para enviar un 1 (encendido) y LOW para enviar un 0 (apagado). +/ delay(milisegundos). Genera un retardo de tiempo en milisegundos. Es muy recomendable que vayan mirando la referencia de la API en el sitio de Arduino: www.arduino.cc/reference/en/ ¡Hasta la próxima! ****************************************************** ** lmstreser ** ** ** ** BLOG: http://www.automatismos-mdq.com.ar/blog/ ** ** TELEGRAM: https://t.me/ElectronicaParaTodos ** ****************************************************** _________________________________________________________________________________ !EOF -> atdt-zine-0x01-06.txt