ARDUINO es una plataforma de desarrollo soportada en una placa electrónica de hardware libre que incorpora un microcontrolador programable y una serie de terminales o pines analógicos y digitales, que permiten conectar entradas (sensores) y salidas (actuadores) para diseñar e implementar circuitos tecnológicos.

Esta plataforma fue inspirada en la placa Wiring (http://www.wiring.com), proyecto de Hernando Barragán, en 2003 en el Instituto de Diseño Interactivo Ivrea (Italia).


PLACA DE HARDWARE LIBRE – ”OPEN-SOURCE”
Incorpora un microcontrolador reprogramable tipo AVR, arquitectura desarrollada y fabricada por la empresa ATMEL (http://www.atmel.com).
Los ficheros esquemáticos están disponibles para descargar (http://es.crativecommons.org/licencia).

SOFTWARE LIBRE, GRATIS y MULTIPLATAFORMA – “ENTORNO DE DESARROLLO”

Funciona en Linux, MacOS y Windows.
Los usuarios pueden ejecutarlo, copiarlo y distribuirlo (a cualquiera y a cualquier lugar), estudiarlo, cambiarlo y mejorarlo, sin tener que pedir ni pagar permisos al desarrollador original ni a ninguna otra entidad específica. El software libre es asunto de libertad, no de precio.

LENGUAJE DE PROGRAMACIÓN LIBRE
Está inspirado en Processing (http://www.processing.org), desarrollado inicialmente por Ben Fry y Casey Rea, construido en lenguaje Java. El lenguaje Arduino se basa internamente en código C/C++.

ENTRADAS Y SALIDAS DIGITALES

Dispone de 14 pines de E/S digitales, numeradas desde 0 hasta la 13.


Aquí se pueden conectar sensores para que la placa pueda recibir datos del entorno o actuadores para que la placa pueda enviarles las órdenes pertinentes; los Leds se configuran como elementos de salida.
Todos los pines funcionan a 5V y pueden proveer o recibir un máximo de 40 mA. No obstante, internamente la placa agrupa los pines digitales de tal forma que tan solo puedan aproximadamente con 100 mA a la vez. Esto quiere decir, que máximo se pueden tener 10 pines ofreciendo 20 mA a la vez.

Rx y Tx: Permiten la comunicación sin recurrir a dispositivos externos, recibir directamente datos en serie (Rx) o transmitirlos (Tx).

ENTRADAS ANALÓGICAS

Dispone de 6 pines de entradas analógicas.

Pueden recibir voltajes continuos de 0V a 5V. No obstante la placa solo puede operar con valores digitales, por lo que es necesario una conversión previa del valor analógico recibido a un valor digital lo más aproximado posible. (Esto lo realiza un conversor A/D incorporado).

La placa Arduino puede distinguir para el voltaje digital desde el valor 0 hasta el 1023. Si en algún momento se requieran más pines digitales, los 6 pines analógicos pueden ser usados (numerados del 14 al 19).

SALIDAS ANALÓGICAS (PWM)

Algunas veces se necesita enviar al entorno señales analógicas, como variar la velocidad de un motor, la frecuencia de un sonido emitido por un zumbador o intensidad con la que luce un Led.

La placa Arduino no dispone de salidas analógicas propiamente dichas sino que utiliza algunos pines de salida digitales concretos para “simular” un comportamiento analógico. Estos están marcado con la etiqueta PWM ~: 3, 5, 6, 9, 10 y 11.

PWM - Pulse Width Modulation: Modulación de Ancho de Pulso.

En vez de emitir una señal continua, es una señal cuadrada formada por los pulsos de frecuencia constante (aproximadamente 490 Hz).

ALIMENTACIÓN

El voltaje de funcionamiento de la placa Arduino (el microcontrolador y el resto de componentes) es de 5 V.

Conectando la placa Arduino al computador mediante cable USB, la alimentación recibida será regulada permanentemente a los 5V de trabajo y ofrece un máximo de hasta 500 mA de corriente (potencia consumida de unos 2,5 W).

La placa Arduino está protegida mediante un polifusible reseteable que automáticamente rompe la conexión hasta que las condiciones eléctricas vuelvan a la normalidad.

CONECTOR EXTERNO. Se puede enchufar una clavija de tipo “Jack”, de 2,1 milímetros.


Se pueden conectar los bornes de una batería o fuente a los pines “Vin” (positivo) y “GND” (negativo).
Si la placa Arduino está alimentada mediante cable USB o por una fuente externa, se puede conectar a este pin-hembra cualquier componente para que pueda recibir 5 V regulados. La corriente máxima generada será de 40 mA.
Entorno de Desarrollo Integrado. En el caso de Arduino, se necesita un IDE que nos permita escribir y editar el programa (llamado “sketch”), comprobar si hay errores, si es correcto para grabarlo en la memoria del microcontrolador.



Configurando el IDE Arduino

Conectar la interfaz
Conectar la placa de Arduino UNO mediante USB al PC.

Escoger modelo de placa
Del menú "tools" (herramientas) escoger la opción "board" (tarjeta) y de la lista se selecciona el modelo de placa Arduino que tienes.

Elegir el puerto Serial
Del menú "tools" (herramientas) escoge la opción "Serial Port" (puerto serial) y de la lista el puerto que esté conectado.




Es un bloque de código que tiene un nombre y un grupo de declaraciones que se ejecutan cuando se llama a la función. Se pueden usar funciones integradas como void setup(), se ejecuta un sola vez; y void loop() se ejecutan de manera infinita.






La función setup ( ) se invoca una sola vez cuando el programa empieza. Se utiliza para inicializar los modos de trabajo de los pines o el puerto serie. Debe ser incluido en un programa aunque no haya declaración para ejecutar.

  void setup ( )
  {
  pinMode (Led, OUTPUT);  // configura al Led como salida

  }








La función loop ( ) se ejecuta de forma cíclica, lo que posibilita que el programa este respondiendo continuamente ante los eventos que se produzcan en la tarjeta.

  void loop ( )
  {
  digitalWrite (Led, HIGH);   // pone en 1 (5V) el terminal Led
  delay (1000);                         // espera un segundo (1000 ms)
  digitalWrite (Led, LOW);   // pone en cero (0V) el terminal Led
  delay (1000);                        // espera un segundo (1000 ms)
  }






Las llaves sirven para definir el principio y el final de un bloque de instrucciones. Se utilizan para los bloques de programación setup (), loop (), etc.

Una llave de apertura { siempre debe ir seguida de una llave de cierre “}”, si no es así, el programa al compilarse dará errores.

El entorno de programación de Arduino incluye una herramienta de gran utilidad para comprobar el total de llaves. Sólo tienes que hacer clic en el punto de inserción de una llave abierta e inmediatamente se marca el correspondiente cierre de ese bloque (llave cerrada).

  void setup ( )
  {
 
  }





El punto y coma “;” se utiliza para separar instrucciones en el lenguaje de programación de Arduino. También se utiliza para separar elementos en una instrucción de tipo “bucle for”.

  void setup ( )
  {
  pinMode (Led, OUTPUT);  // configura al Led como salida

  }






Los bloques de comentarios o comentarios multilíneas son áreas de texto ignoradas por el programa y se usan para describir códigos o comentarios que ayudan a otras personas a entender parte del programa.  Inician con /* y terminan con */ y pueden abarcar varias líneas.


  /* Encender un Led. Esta programación encenderá un led durante un segundo y luego se apaga */



Empieza con // y cada línea de código que se emplee debe iniciar con //. Son ignorados por el programa y no ocupan espacio en memoria.

  // se declara el Led como variable entero y se ubica en el pin 13





Las tabulaciones de las instrucciones contenidas en el void setup() o void loop(), no son estrictamente necesarias, se utilizan como una manera ordenada, clara y cómoda de escribir el código para el programa.






Es una forma de llamar y almacenar un valor numérico para usarse después por el programa. Una variable necesita ser declarada y, opcionalmente, asignarle el valor que necesita para ser almacenado. Una variable puede ser cualquier nombre o palabra que no sea una palabra reservada en el entorno de Arduino. Ser descriptiva, para hacer el código más legible. Las variables se declaran de varios tipos: byte, int (entero), long (largo), float (punto flotante).

   int Led = 13;   // se declara el Led como variable entero y se ubica en el pin 13

Utilización de una Variable

Una variable puede ser declarada al inicio del programa antes de la parte de configuración setup(), a nivel local dentro de las funciones, y, a veces, dentro de un bloque, como para los bucles del tipo if, for, etc.

Variables Globales: cuando se declaran al inicio del sketch.

Variables Locales: cuando se declaran en el interior de alguna sección del void setup() o void loop().

Tipos de Datos 

byte
Byte almacena un valor numérico de 8 bits sin puntos decimales. (0 a 255).

  byte electrónica = 180;      //declara “electrónica” como un tipo byte 

int
Enteros son los tipos de datos primario para almacenamiento de números sin puntos decimales y almacena un valor numérico de 16 bits con un rango de – 32.768 a 32.767

  byte electrónica = 500;      //declara “electrónica” como un tipo entero

Nota: Las variables de tipo entero “int” pueden sobrepasar su valor máximo o mínimo como consecuencia de una operación.

long
Enteros Largos son los tipos de datos extendido sin puntos decimales, almacenados en un valor de 32 bits con un rango de -2147483648 a 2147483647.

  byte electrónica = 9000;      //declara “electrónica” como un tipo entero largo 


float
Punto flotante u números que tienen un punto decimal. Almacenan un valor de 32 bits con un rango de          – 2.146.483.618 a 2.147.483.617

  byte electrónica = 3.14;      //declara “electrónica” como un tipo flotante

Nota: Los números de punto flotante no son exactos, y pueden producir resultados extraños en las comparaciones.


arrays
Existen array de variables de tipo “boolean”, de tipo “int”, de tipo “float”, etc. Un array es una colección de valores que son accedidos con un índice numérico. Cualquier valor en el array debe llamarse escribiendo el nombre del array y el índice numérico del valor. Los arrays indexados a cero, con el primer valor en el array comenzando con el índice número 0. Un array necesita ser declarado y opcionalmente asignarle valores antes de que puedan ser usados.

  int myArray[ ] = {value0, value1, value2, …;
  int myArray[6];                       //declara un array de enteros con 6 posiciones
  myArray[4] = 10;                   //asigna a la cuarta posición del índice el valor 10
  int myArray[8] = {2,5,6,7};     //declara un array de 6 elementos e inicializa algunos de ellos


Comandos

pinMode ()
Es comando se utiliza en la configuración del setup ( ) que declara un pin como entrada (INPUT) o salida (OUTPUT).

  INPUT o OUTPUT: Estas constantes son utilizadas para definir, al comienzo del programa, el modo de funcionamiento de los pines mediante la instrucción pinMode de tal manera que el pin puede ser una entrada INPUT o una salida OUTPUT.

  pinMode (Led, OUTPUT);  //designa el pin 13 como salida digital

digitalWrite
Este comando establece un pin, definido previamente como Output, el valor de HIGH (Alto, + 5V) o LOW (Bajo, 0 V).

  digitalWrite (Led, HIGH);    //coloca el Led en estado Alto

delay
Detiene el programa durante un número especificado de tiempo medido en milisegundos. 1000 equivale a 1 segundo.

  delay (1000);                        //espera 1 segundo

digitalRead
Lee el valor de un pin (definido como digital) dando un resultado HIGH (alto) o LOW (bajo). El pin se puede especificar ya sea como una variable o una constante (0-13).

  valor = digitalRead (Led);    //hace que valor sea igual al estado leído en el pin Led

analogRead
Lee el valor de un determinado pin definido como entrada analógica con una resolución de 10 bits. Esta instrucción sólo funciona en los pines (0-5). El rango de valor que podemos leer oscila de 0 a 1023.

  valor = analogRead (pin);    //asigna a valor lo que lee en la entrada pin

Nota: Los pines analógicos (0-5) a diferencia de los pines digitales, no necesitan ser declarados como INPUT u OUPUT ya que son siempre INPUT´s.

analogWrite
Esta instrucción sirve para escribir un pseudo-valor analógico utilizando el procedimiento de modulación por ancho de pulso (PWM) a uno de los pines de Arduino marcados como “pin PWM”.

  analogWrite (pin, valor);    //escribe “valor” en el pin definido como analógico

Si enviamos el valor 0 genera una salida de 0 voltios en el pin especificado; un valor de 255 genera una salida de 5 voltios de salida en el pin especificado.

Nota: Las salidas analógicas a diferencia de las digitales, no necesitan ser declaradas como INPUT u OUTPUT.

Operadores Matemáticos
  x = y + 2;
  y = x – 5;
  a = b * 6;
  p = m / 4;

Nota: Las operaciones se efectúan teniendo en cuenta el tipo de datos que se han definido (int, dbl, float, etc.). Ejemplo: Si se ha definido 15 y 2 como “int” y se hace la operación 15/2 muestra como resultado 7 en lugar de 7,5 a que “int” no reconoce decimales.

Nota: Utilice el operador (int) myFloat para convertir un tipo de variable a otro sobre la marcha.
Por ejemplo, i = (int) 2,5 establecerá i igual a 2.

Las asignaciones compuestas combinan una operación aritmética con una variable asignada. Estas son comúnmente utilizadas en los bucles.

  x ++         // igual que x = x + 1, o incrementar x en + 1
  x --          // igual que x = x 1, o decrementar x en – 1
  x += y     // igual que x = x + y, o incrementar x en +y
  x = y     // igual que x = x y, o decrementar x en y
  x *= y     // igual que x = x * y, o multiplicar x por y
  x /= y     // igual que x = x / y, o dividir x por y


Nota: Por ejemplo, x *= 2 hace que x se convierta en el doble del antiguo valor x y por lo tanto x es reasignada al nuevo valor .

Operadores de Comparación

Las comparaciones de una variable o constante con otra se utilizan con frecuencia en las estructuras condicionales del tipo if, para revisar si una condición es verdadera.

  == y      // x es igual a y
  x != y    // x no es igual a y
  x < y     // x es menor que y
  x > y     // x es mayor que y
  x <= y   // x es menor o igual que y
  x >= y   // x es mayor o igual que y

Operadores Lógicos

Los operadores lógicos se utilizan para comparar dos expresiones y devolver un VERDADERO o FALSO dependiendo del operador. Existen tres operadores lógicos, AND (&&), OR (||) y NOT (!), que a menudo se utilizan en estamentos de tipo if:

  Logical AND:
if (x > 0 && x < 5)      // cierto sólo si las dos expresiones son ciertas

  Logical OR:
if (x > 0 || y > 0)        // cierto si una cualquiera de las expresiones es cierta

  Logical NOT:

if (!(x > 0))                   // cierto solo si la expresión es falsa




........................................................................................................................................................



TINKERCAD es un software gratuito online creado por la empresa Autodesk, una de las empresas importantes en el software de diseño 3D.


De entre sus utilidades, probablemente la más conocida es la de diseñar piezas en 3D. Sin embargo, ofrece también una posibilidad realmente interesante y es la de programar, implementar y simular circuitos con Arduino.

Se utiliza de forma gratuita, es necesario tener una cuenta de correo para ingresar como usuario y que sólo posee una versión online, por lo que se requiere conexión a Internet.


Para utilizarlo sólo debes registrarse en la web Tinkercad, es gratuita

Para iniciar, dar clic en CIRCUITS

Clic en Crear nuevo circuito
Dar un nuevo nombre al proyecto

PRÁCTICA 1. ENCENDER UN LED

AÑADIR COMPONENTES
Se selecciona los elementos a utilizar como Tarjeta Arduino, Protoboard, Led y Resistencia.

Se ubican en la pantalla


Los elementos se pueden girar (rotar) y a los cables cambiar de colores.


Luego se da paso a la programación del Arduino: Por bloques, Bloques+texto, Texto.


Y se escribe la programación para ENCENDER UN LED:

Después de haber incorporado el código, entonces se SIMULA LA APLICACIÓN


PRÁCTICA 2. ENCENDER VARIOS LEDS

Dar un nuevo nombre al proyecto

Se ubican en la pantalla, los elementos a utilizar:

En el Código se selecciona sólo texto y se escribe el código:

Finalmente, se SIMULA LA APLICACIÓN


PRÁCTICA 3. RETO: INTERSECCIÓN DE SEMÁFOROS

Utilizando TINKERCAD, diseñar un cruce de semáforos con 6 Leds que lleven una secuencia lógica para su funcionamiento óptimo.

.............................................................................................................
VIDEO: APRENDIENDO ARDUINO CON TINKERCAD
Autor: Alvaro Acosta Agón
YouTube: https://youtu.be/zugx7HnBL5s


https://www.youtube.com/watch?v=zugx7HnBL5s&feature=youtu.be

............................................................................................................

PRÁCTICA 4. PRÁCTICA CON EL POTENCIÓMETRO

Implemente el circuito y gire el control del potenciómetro. Qué sucede el circuito cuando está en la escala de 0 Ohmios y luego en la escala máxima de 5 K-Ohmios.


Cambiamos el valor de la resistencia de 1000 Ohmios a una de 100 Ohmios. Gire el potenciómetro. Qué sucede el circuito cuando está en la escala máxima de 5 K-Ohmios y luego en la escala mínima de 0 Ohmios.


Quitamos la resistencia, conectando directamente el led al negativo de la fuente. Gire el potenciómetro. Qué sucede el circuito cuando está en la escala máxima de 5 K-Ohmios y luego en la escala mínima de 0 ohmios.


PRÁCTICA 5. CONVERSIÓN DE AC/DC CON EL POTENCIÓMETRO

Gire el potenciómetro revise si se cumplen la condición dada para el encendido del Led. 

En el Código se selecciona sólo texto y se escribe la programación:




PRÁCTICA 6. LECTURA DEL POTENCIÓMETRO


Gire el potenciómetro de menor a mayor valor en ohmios y revise si se cumplen las condiciones dadas para el encendido del Led, mirando lo que se presenta en el monitor serial.



PRÁCTICA 7. PULSO PMW CON EL POTENCIÓMETRO

Gire el potenciómetro, ubicándolo en tres posiciones 0 Ohmios (0%), 125 K-Ohmios (50%) y 250 K-Ohmios (100%), describa la señal de onda que aparece a la salida en el osciloscopio.



En el Código se selecciona sólo texto y se escribe la programación:



PRÁCTICA 8. RETO: ENCENDIDO DE UN LED EN FUNCIÓN DE LA LUZ

Realice el encendido de un led de acuerdo al funcionamiento de una fotocelda.


Cuando la luz se encuentre entre 0 y 512 el led debe colocarse en el nivel de potencia máxima (255), si la luz se encuentra entre valores 512 y 1023 él debe lucir al nivel de potencia baja (64). 






0 Comentarios