==============================================================================================
=        =========  ============================      ========================================
=  ===============  ============================  ===  =======================================
=  ===============  ============================  ====  ========================  ====  ======
=  =========   ===  =====  ===   ===  = ========  ===  ====   ===  = ====   ===    ==    ==  =
=      ====  =  ==    =======  =  ==     =======      ====     ==     ==  =  ===  ====  ======
=  ===========  ==  =  ==  =====  ==  =  =======  ===  ===  =  ==  =  ==     ===  ====  ===  =
=  =========    ==  =  ==  ===    ==  =  =======  ====  ==  =  ==  =  ==  ======  ====  ===  =
=  ========  =  ==  =  ==  ==  =  ==  =  =======  ===  ===  =  ==  =  ==  =  ===  ====  ===  =
=  =========    ==    ===  ===    ==  =  =======      =====   ===  =  ===   ====   ===   ==  =
==============================================================================================

Cápsula Gemini de Fabián Bonetti

Sobre GNU/Linux, Software Libre y demas

Revista ATDT Número 1 (Febrero 2021) 1-6-2021

  	_________________________________________________________________________________
  
	/* 
	   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

atdt-zine-0x07

Volver

© 2021