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().



 

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







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

analogWrite
Se utiliza para gestionar los pines de la señal PWM (Modulación por amplitud de pulsos)

  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.

analogWrite (11, 255); la salida del pin 11 sería una señal cuadrada con su máximo valor de trabajo

analogWrite (11, 128); la salida del pin 11 sería una señal cuadrada con un valor de la mitad que la anterior

………

for (int i=0; i <=255; i = i+10) //bucle que incrementa de 10 en 10 a la variable i 
                                              //hasta llegara a menor o igual a 255
analogWrite (5, i);                 //el led encenderá, según el valor de i
delay (500);                            //espera 500 milisegundos
}
............

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 1023Normalmente se almacena en una variable que define el usuario.

  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.






  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





Son instrucciones que permiten tomar decisiones y hacer diversas repeticiones de acuerdo a unos parámetros, dentro de las más importantes se destacan:

if
Switch/case
for
while


Sirve para comprobar si una condición determinada es cierta (“true, 1) o falsa (“false, 0).

Si la condición es cierta, se ejecutarán las instrucciones escritas en su interior (dentro de las llaves). Si no se cumple, puede no pasar nada, o bien, si se tiene además de “if”, el bloque “else” (opcional) entonces se ejecutarán las instrucciones escritas en el interior de “else”.


También existe la posibilidad de incluir una o varias secciones “else if”, siendo también opcional el bloque “else” final.




Existe una manera más elegante, cómoda y fácil de hacer comprobaciones de condiciones múltiples, utilizando el bloque “switch”.



Mientras, en inglés. Es un bloque que implementa un bucle, es decir, repite la ejecución de las instrucciones que están dentro de sus llaves de apertura y cierre. Se repetirán mientras la condición especificada, entre sus paréntesis, sea cierta (“true”, 1).


El bucle “do” funciona exactamente igual que el bucle “while”, con la diferencia que la condición es evaluada después de ejecutar las instrucciones escritas dentro de las llaves. Las instrucciones son ejecutadas como mínimo una vez aun cuando la condición sea falsa.


En el bucle “for” el número de iteraciones se puede fijar a un valor exacto o concreto de veces.

Valor inicial del contador: x=0; se fijará la variable “x” a cero al inicio del bucle.

Condición final del bucle: x<10; si la condición se evalúa como falsa, se finaliza el bucle “for”, en este caso se ejecutará únicamente cuando la variable “x” valga menos de 10.

Incremento del contador: x=x+1; se le sumará 1 a la variable “x” antes de cada nueva iteración del bucle, es decir un contador que aumenta de uno en uno a cada repetición.







POTENCIÓMETRO
Es una resistencia variable de tres terminales controlable por su pin central. Un extremo se conecta a un voltaje de +5V, el otro extremo a tierra. El pin central recibe una señal analógica del Arduino (A0). Un valor sugerido para el potenciómetro es de 10KW.
El valor de valorPot es un valor de voltaje. Los valores obtenidos de analogRead () van desde 0 a 1023 y los valores que queremos de voltaje están de 0 a 5, entonces el valorPot lo multiplicamos con 5 y lo dividimos en 1023.



INTERRUPTORES

El Arduino leerá el estado de un interruptor pulsador normalmente abierto y muestra los resultados en el PC con la orden Serial.println ()


Abra la ventana del monitor serial.
Cuando el interruptor está abierto, debería ver un tren de 1 de la pantalla.
Cuando está cerrado, el cambio será de 1 a 0. 

Controlando el encendido y apagado del led, por medio de un PULSADOR


Controlando el encendido y apagado del led, por medio de un PULSADOR, incluyendo alarma

SONIDO: CIRCUITOS PREAMPLIFICADORES




:::::::::::::::::

CIRCUITOS MATEMÁTICOS



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


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). 



PRÁCTICA 9. ENCENDER UN LED CON UN PULSADOR

Realice el encendido de un led de acuerdo a la operatividad del pulsador, si está cerrado se enciende el led, de lo contrario se apagará.


Código de programación (1):
Código de Programación (2):

PRÁCTICA 10. RETO: ENCENDER UN LED CON DOS PULSADORES

Control de un led con dos pulsadores: cuando se cierren los dos pulsadores, el led enciende, de lo contario, se apagaría.




COMPUERTA AND




COMPUERTA OR


Demostrar el funcionamiento de la Compuerta OR:
if (x > 0 || y > 0)        // cierto si una cualquiera de las expresiones es cierta



DISEÑO COMBINACIONAL: S = A'B + AB






ESP32 fue creado y desarrollado por Espressif Systems y es fabricado por TSMC 

ESP32 es la denominación de una familia de chips SoC (System on Chip), de bajo coste y consumo de energía, con tecnología Wi-Fi y Bluetooth de modo dual integrada.

Cuenta con un poderoso procesador de doble núcleo capaz de ejecutar un Sistema Operativo en Tiempo Real (RTOS) y el stack TCP/IP (con soporte para TLS) necesario para las comunicaciones a través de internet. Además, cuenta con cantidades apropiadas de RAM y Flash para soportar aplicaciones complejas.

El ESP32 emplea un microprocesador Tensilica Xtensa LX6 poseen un alto nivel de integración:


        Interruptores de antena
        Balun de RF (Radio Frecuencia)

        Amplificador de potencia

        Amplificador de recepción de bajo ruido

        Filtros y módulos de administración de energía


Su código más utilizado es Arduino con la librería Esp32, aunque este tiene muchas variantes, por ahora solo mencionaremos el Esp32 Woorn.
Este Esp32 cuenta con un truco para poder ser identificado si es original o fake, este truco va en el Arduino: primero es mirar si ya se descargó la librería Arduino o mantener el botón BOOT pulsado en el tiempo que demore para mandar el código, además este cuenta con otro botón que es RESET o EN para reiniciar el programa cargado. En algunos libros o páginas webs, los pines se llaman 12D pero en el Esp32 se llaman 12G.

Los pines GPIO34, GPIO35, GPIO36 (VP) Y GPIO39 (VN) no se pueden configurar como salidas, se pueden utilizar como entradas digitales o analógicas, o para otros fines. También carecen de resistencias internas pull-up y pull-down, a diferencia de los otros pines GPIO.



ENCENDER LEDS























0 Comentarios