Menú English Ukrainian Ruso Inicio

Biblioteca técnica gratuita para aficionados y profesionales. biblioteca técnica gratuita


ENCICLOPEDIA DE RADIOELECTRÓNICA E INGENIERÍA ELÉCTRICA
biblioteca gratis / Esquemas de dispositivos radioelectrónicos y eléctricos.

Arduino. Operaciones de E/S digitales. Enciclopedia de radioelectrónica e ingeniería eléctrica.

biblioteca técnica gratuita

Enciclopedia de radioelectrónica e ingeniería eléctrica. / diseñador radioaficionado

Comentarios sobre el artículo Comentarios sobre el artículo

Después de cargar el entorno de desarrollo Arduino IDE, puede ver que la plantilla del futuro programa que se muestra en la ventana que se abre contiene dos funciones: setup() y loop(). La función setup() inicia el trabajo de cualquier programa. Lo realiza una vez inmediatamente después de aplicar energía a la placa, y también cada vez después de presionar el botón RESET en la placa, lo que configura el microcontrolador a su estado inicial. Dentro de esta función se configuran los modos de funcionamiento de los puertos, se inicializan la interfaz serie y otros dispositivos periféricos, tanto los ubicados dentro del microcontrolador como los externos conectados a él. Esta función, aunque esté vacía, debe estar presente en el programa.

La función loop() contiene un bucle infinito que el microcontrolador ejecuta repetidamente hasta que se apaga. Sondea sensores externos, envía comandos a actuadores, realiza cálculos y otras operaciones. Como ejemplo, daremos un programa sencillo que enciende y luego apaga el LED integrado en la placa Arduino, marcado con una L y conectado al pin digital D13, con un período de un segundo.

Este programa es uno de los ejemplos estándar incluidos con Arduino IDE. En mesa 1 muestra su texto en la forma en que se adjunta. Tenga en cuenta que en la jerga aceptada entre los fanáticos de Arduino, el código fuente del programa se llama "sketch", un boceto.

Tabla 1

Arduino. Operaciones de E/S digitales

Los fragmentos de programa que pertenecen al mismo bloque están delimitados por llaves { y }. En lo que sigue los llamaremos paréntesis de operador. El texto del programa puede contener un comentario que explique su esencia y matices del trabajo. Los comentarios de varias líneas están limitados a combinaciones de /* (al principio) y */ (al final). Los caracteres // comienzan un comentario que termina al final de la misma línea. Al traducir (convertir texto de programa en un lenguaje de programación legible por humanos en código de máquina ejecutado por un microcontrolador), esta parte del texto se ignora por completo.

La única línea ejecutable en el cuerpo de la función setup()

pinMode (13, SALIDA);

establece el pin D13 de la placa Arduino en modo de salida.

La función loop() comienza con la línea

escritura digital (13, ALTO);

Establece el pin D13 en un nivel lógico alto. En Arduino UNO es igual a la tensión de alimentación (+5 V) con respecto al cable común. Esto encenderá el LED.

Le sigue la línea

retraso (1000);

Hace que el programa en ejecución no pase a la siguiente línea durante el tiempo especificado entre paréntesis en milisegundos. Después de una pausa, el programa configura la salida D13 a un nivel lógico bajo correspondiente al potencial del cable común, que apaga el LED. Esta operación se describe mediante la línea

escritura digital (13, BAJO);

A continuación, el programa vuelve a hacer una pausa durante 1 segundo, tras lo cual repite desde el principio toda la secuencia de operaciones descritas en el cuerpo de la función loop(). Esto continúa hasta que se apaga el microcontrolador.

La función delay() debe usarse con precaución. Si ocurre algún evento importante durante el intervalo de tiempo especificado en él (por ejemplo, un sensor se activa brevemente), el programa no responderá a este evento.

Cabe recordar que la corriente máxima suministrada por un pin Arduino funcionando como salida es de 40 mA, y la corriente total de todas las salidas no debe exceder los 300 mA. Esto es suficiente para alimentar los LED comunes, también puede conectar directamente a la salida un relé de láminas de bajo voltaje o un motor de vibración de baja potencia desde un teléfono celular. Sin un amplificador, no será posible conectar nada más potente, y esto es peligroso: puede dañar el microcontrolador.

Las entradas analógicas A0-A5 se pueden utilizar, si es necesario, junto con D0-D13 como entradas y salidas digitales, accediendo a ellas respectivamente como los números 14 a 19.

Ahora modifiquemos un poco el programa. Para un algoritmo tan simple, estas modificaciones no son importantes, pero en casos más complejos sí lo son. En primer lugar, reemplacemos el comentario en inglés por el ruso. Por ejemplo, comentaremos la línea que enciende el LED de la siguiente manera: “Enciende el LED”. No escriba: "Establecimos un nivel alto en la línea D13", esto ya se desprende del texto del programa.

Por supuesto, un comentario detallado para cada línea suele ser redundante, pero aun así no deberías ser perezoso a la hora de escribirlo. Después de un tiempo, los detalles del funcionamiento del programa se olvidarán, incluso el propio autor sólo un comentario ayudará a comprender rápidamente su esencia.

A continuación, cambiaremos el programa para que el LED conectado no al pin D13, sino al pin D12 del Arduino, parpadee. Como no hay ningún LED en la placa conectado a D12, necesitará un LED externo con una resistencia adicional. Debe conectarse según el diagrama mostrado en la Fig. 1. La resistencia adicional se selecciona de modo que el LED punto a punto esté dentro del rango de 5...10 mA. Esto asegurará que la mayoría de los LED sean lo suficientemente brillantes. En la figura se muestra una placa Arduino UNO con un LED externo conectado. 2.

Arduino. Operaciones de E/S digitales
Arroz. 1. Diagrama de conexión de LED

Arduino. Operaciones de E/S digitales
Arroz. 2. Placa Arduino UNO con LED externo conectado

Es recomendable realizar varios LED con resistencias adicionales. Serán útiles no tanto para fabricar una máquina de efectos de iluminación, sino para verificar rápidamente los niveles de voltaje en las salidas de la placa y monitorear sus cambios de acuerdo con el programa que se está depurando.

Para controlar un LED conectado no a D13, sino a D12, en el caso que nos ocupa, bastaría con corregir en el texto del programa todos los números 13 por 12. Sin contar los comentarios, el número 13 aparece sólo en el texto del programa. tres veces, por lo que cambiarlo no es difícil. Sin embargo, a medida que aumenta el volumen del programa, la situación cambia fundamentalmente. Una cosa es reemplazar tres números, pero otra muy distinta es reemplazar varias docenas de números idénticos en diferentes lugares de un programa largo. Además, puede resultar que en algún lugar este número signifique algo completamente diferente y no sea necesario cambiarlo.

Para facilitar la realización de dichos cambios, declaramos una variable al comienzo del programa y le asignamos un valor correspondiente al número del pin deseado:

PIN LED int = 12;

Además, siempre que aparezca el pin número 13, lo sustituiremos por el nombre de esta variable. Si ahora necesitas volver a cambiar la conexión del LED, bastará con cambiar solo un número en la descripción de la variable LEDPIN.

El programa modificado se muestra en la tabla. 2. Se debe cargar en la memoria del microcontrolador de la placa Arduino. Para hacer esto, seleccione "Archivo → Cargar" en el menú principal del IDE. Si el programa escrito en la ventana de edición no se ha guardado en un archivo de antemano, el IDE le pedirá que especifique el nombre del archivo en el que desea guardarlo. Después de un tiempo requerido por el IDE de Arduino para traducir el programa a códigos de máquina comprensibles para el microcontrolador, los LED “Rx” y “Tx” de la placa comenzarán a parpadear, señalando la recepción y transmisión de mensajes a través de la interfaz serie del microcontrolador.

Tabla 2

Arduino. Operaciones de E/S digitales

Si todo se hizo correctamente, aparecerá un informe indicando la carga correcta en la parte inferior de la ventana del programa. Mostrará información sobre cuánto de los 32 KB disponibles de memoria del programa del microcontrolador fue ocupado por el programa cargado y cuánta RAM se requiere para acomodar las variables. El LED conectado al pin D12 comenzará a parpadear con un período de 2 s.

Si conecta una línea de cinco LED a los pines Arduino D8-D12 (Fig. 3) y carga el programa que figura en la tabla en el microcontrolador. 3, se encenderá alternativamente durante 500 ms cada uno de estos LED y el LED conectado al D13 instalado en la placa. Este programa podría haber resultado mucho más largo si el problema se hubiera resuelto de frente, simplemente repitiendo el número requerido de veces en las líneas de función setup() con diferentes números de pin numéricos, configurándolas para la salida, y en el Función loop(): una secuencia de líneas que incluye el siguiente LED, pausa y apaga. Los operadores de bucle for ayudaron a acortar el programa.

Arduino. Operaciones de E/S digitales
Arroz. 3. Una línea de cinco LED

Tabla 3

Arduino. Operaciones de E/S digitales

Entre paréntesis después de la palabra clave for, se indica el valor inicial de la variable del bucle - LEDPIN=8, la condición para ejecutar el cuerpo del bucle - LEDPIN<14 y la operación realizada con la variable del bucle después de cada ejecución de su cuerpo - LEDPIN++, que significa aumentar el valor de la variable en uno. Si es necesario, los parámetros del bucle for se pueden cambiar fácilmente.

El cuerpo del bucle entre paréntesis de operador sigue la condición. En el primer caso (en la función setup()), consta de una sola línea que se ejecutará seis veces con valores LEDPIN del 8 al 13. En el segundo caso (en la función loop()), el bucle La declaración especifica la ejecución de una secuencia de tres líneas seis veces con los mismos valores de variable.

Además de controlar dispositivos externos en cualquier sistema, es necesario obtener información de varios sensores. Sin ellos, incluso el robot más complejo será sólo un juguete de cuerda, incapaz de cambiar su comportamiento dependiendo de las condiciones externas.

Con una tensión de alimentación de 5 V, y en Arduino UNO es exactamente eso, se garantiza que las entradas digitales del microcontrolador se percibirán como una tensión lógicamente alta (correspondiente a la lógica) de más de +3 V, y como una voltaje lógicamente bajo (correspondiente al cero lógico) de menos de +1,5 V. Los valores intermedios (incluso cuando la entrada no está conectada en ningún lugar) dan un resultado impredecible y que cambia caóticamente según la instancia del microcontrolador, su voltaje de suministro, temperatura y otros factores. . Por lo tanto, es deseable que siempre se aplique a la entrada digital un voltaje de un nivel lógico alto o bajo conocido.

El sensor más simple es un botón normal sin bloqueo, conectado como se muestra en la Fig. 4 a uno de los pines externos de la placa Arduino, en este caso a D7. Cuando se suelta el botón SB1, el nivel de voltaje en la entrada del microcontrolador será bajo (será proporcionado por la resistencia R1); cuando se presione, será alto. Si intercambia el botón y la resistencia (Fig. 5), los niveles también intercambiarán lugares. Ahora la resistencia R1 proporcionará un nivel alto cuando se suelte el botón, y al presionarlo se establecerá el nivel bajo.

Arduino. Operaciones de E/S digitales
Arroz. 4. Diagrama de conexión del sensor

Arduino. Operaciones de E/S digitales
Arroz. 5. Diagrama de conexión del sensor

La resistencia de la resistencia R1 no debe ser demasiado pequeña, ya que la corriente que fluye a través de ella cuando se presiona el botón se consume de la fuente de energía y reduce la eficiencia del dispositivo. En el caso de la alimentación desde una computadora de escritorio o una fuente de alimentación de CA, esto no es tan importante, pero con un Arduino alimentado por batería, la baja resistencia de la resistencia R1 reducirá en gran medida la posible duración de la batería del dispositivo.

Tenga en cuenta que el microcontrolador tiene resistencias internas para realizar la función de la resistencia R1. Por defecto están deshabilitados. Sin embargo, para conectar, digamos, una resistencia interna a la entrada D2, es suficiente agregar la línea a la función setup()

modopin(2, INPUT_PULLUP);

Consideremos la entrada digital usando el ejemplo dado en la tabla. 4 programas que apagan el LED conectado al pin 13 cuando presionas un botón conectado al pin D7. Se basa en el operador condicional.

if (condición)

{

/*Acciones si se cumple la condición*/

}

más

{

/*Acciones si no se cumple la condición*/

}

Tabla 4

Arduino. Operaciones de E/S digitales

Sirve para seleccionar una acción en función de si se cumple o no la condición especificada en ella. Si no es necesario hacer nada si no se cumple la condición, se puede omitir el fragmento else {...}. El uso de declaraciones condicionales le da flexibilidad al programa. Dependiendo del estado de los sensores externos, cambian el orden del programa y el comportamiento del dispositivo equipado con un microcontrolador.

En realidad, la verificación del estado del botón se realiza mediante un operador lógico

lectura digital (PERO) = ALTO

En este caso, compara el valor devuelto por la función de lectura del estado del pin PERO al que está conectado el botón con la constante lógica ALTA y, si son iguales, evalúa como VERDADERO, en caso contrario, FALSO. Tenga en cuenta que la operación de prueba de igualdad se indica mediante dos signos iguales consecutivos. Y un signo igual denota la operación de asignar un valor a una variable. No los confundas, esto conduce a errores difíciles de detectar.

Usando el ejemplo del programa que acabamos de comentar, es fácil ver a qué conduce el uso incorrecto de la función delay(). Si "descomenta" (elimina los dos decimales anteriores) la función de retardo (10000) en la penúltima línea del programa, luego de cada ejecución del cuerpo de la función loop() el programa esperará 10 s antes de continuar su trabajo. . Naturalmente, se ignorarán todas las pulsaciones de botones durante este período de tiempo.

La capacidad de Arduino para comunicarse con una computadora personal a través de una interfaz en serie es muy útil. Puede usarse no solo para cargar un programa en el microcontrolador, sino también para el intercambio bidireccional de información durante su ejecución. A través de esta interfaz, Arduino puede transmitir la información recopilada a una computadora para su procesamiento o almacenamiento complejo y recibir comandos y datos sin procesar de ella. Así es como pueden interactuar dos dispositivos con microcontrolador. El puerto serie del microcontrolador utiliza los pines digitales de la placa D0 y D1, por lo que a la hora de organizar y utilizar la comunicación a través del puerto serie, no se pueden utilizar para nada más.

Por ejemplo, considere el programa que figura en la tabla. 5, que transmite información sobre el estado del pin D12 a la computadora. Si el nivel es alto, el programa envía el código de carácter H a la computadora, y si es bajo, el código de carácter L. Cualquier programa que pueda trabajar con el puerto COM de la computadora puede recibir esta información. El IDE de Arduino tiene un monitor de puerto serie incorporado, con el cual la computadora puede mostrar mensajes de texto recibidos de la placa Arduino y transmitir mensajes escritos por el usuario en el teclado de la computadora.

Tabla 5

Arduino. Operaciones de E/S digitales

La línea Serial.begin(9600) en la función setup() inicializa el puerto serie del microcontrolador y establece la velocidad de transmisión y recepción en 9600 baudios. Puede configurar otros valores de velocidad estándar: 1200, 2400, 4800, 9600, 19200, 38400, 57600 o 115200 baudios. En este caso, la velocidad configurada en el microcontrolador debe coincidir con la velocidad a la que está configurado el puerto COM del ordenador u otro dispositivo con el que se vaya a intercambiar información. La velocidad permitida a la que se garantiza una recepción confiable de información depende de la longitud del cable que conecta el Arduino a la computadora. Por ejemplo, utilizando un cable USB estándar de 1,8 m de largo, la computadora recibirá información de Arduino incluso a una velocidad de 115200 baudios. Y si a este cable se le añade un cable de extensión de cinco metros, la velocidad permitida baja a 4800 baudios.

La función Seri-al.print() envía información al puerto serie, donde entre paréntesis indican el nombre de la variable cuyo valor de Envío se va a transmitir, o una cadena de caracteres a transmitir. Para distinguirlo del nombre de la variable, la cadena de caracteres está entre comillas. Hay una modificación de esta función Serial.println(). Se diferencia en que, habiendo transmitido la información entre paréntesis (si la hay), la complementa con caracteres de retorno de carro y avance de línea. Comienza una nueva línea y combinación de caracteres en la cadena transmitida.

Usando el programa anterior, es fácil verificar que si no se aplican señales externas al pin del microcontrolador configurado como entrada, su estado puede ser cualquier cosa y cambiar caóticamente durante la operación. También puede determinar el valor de voltaje real que el microcontrolador deja de percibir como un nivel lógico bajo y comienza a percibir como un nivel alto.

A continuación, considere un programa (Tabla 6) que enciende y apaga el LED en la placa de acuerdo con los comandos recibidos de la computadora a través del puerto serie. Hay que tener en cuenta que la información a través del puerto serie se transmite en bytes. El receptor del puerto serie, que funciona independientemente del procesador del microcontrolador, recibe estos bytes y los almacena en su búfer de 64 bytes.

Tabla 6.

Arduino. Operaciones de E/S digitales

Para que el programa determine si hay bytes recibidos en el búfer, existe una función Serial.available() que devuelve su número. Si es así, el programa utiliza el Serial. read() lee un byte de un buffer y asigna su valor (el código del carácter recibido) a una variable C de tipo char. A continuación, las declaraciones condicionales comparan el código con las muestras y, si hay una coincidencia, encienden o apagan el LED.

Puede enviar comandos utilizando el mismo monitor de puerto serie que se utilizó para recibir información. En la parte superior de su ventana (Fig. 6) hay una línea para ingresar caracteres transmitidos. Después de ingresar un símbolo o su secuencia desde el teclado, haga clic en el botón en pantalla "Enviar". El LED "Rx" de la placa Arduino debería parpadear brevemente, indicando que el microcontrolador está recibiendo información. Por supuesto, la transmisión manual de códigos es un método de control simple, pero lejos de ser el mejor. Por lo general, para esto se escribe un programa de control por computadora especial.

Arduino. Operaciones de E/S digitales
Arroz. 6. Ventana del programa

Por lo tanto, utilizando la placa del microcontrolador Arduino, puede crear con relativa facilidad una amplia gama de dispositivos electrónicos simples. Si nos limitamos únicamente a las entradas/salidas digitales, podrían ser máquinas de efectos de iluminación, simples alarmas de seguridad, contadores de diversos parámetros con sensores digitales. Además, no es difícil hacer que el dispositivo interactúe con la computadora. Naturalmente, las capacidades de Arduino están lejos de limitarse a las descritas en este artículo. Esta placa también puede funcionar con señales analógicas, que se analizarán a continuación.

Los programas para Arduino mencionados en el artículo se pueden descargar desde ftp://ftp.radio.ru/pub/2016/08/diginout.zip.

Autor: D. Lekomtsev

Ver otros artículos sección diseñador radioaficionado.

Lee y escribe útil comentarios sobre este artículo.

<< Volver

Últimas noticias de ciencia y tecnología, nueva electrónica:

Máquina para aclarar flores en jardines. 02.05.2024

En la agricultura moderna, se están desarrollando avances tecnológicos destinados a aumentar la eficiencia de los procesos de cuidado de las plantas. En Italia se presentó la innovadora raleoadora de flores Florix, diseñada para optimizar la etapa de recolección. Esta herramienta está equipada con brazos móviles, lo que permite adaptarla fácilmente a las necesidades del jardín. El operador puede ajustar la velocidad de los alambres finos controlándolos desde la cabina del tractor mediante un joystick. Este enfoque aumenta significativamente la eficiencia del proceso de aclareo de flores, brindando la posibilidad de un ajuste individual a las condiciones específicas del jardín, así como a la variedad y tipo de fruta que se cultiva en él. Después de dos años de probar la máquina Florix en varios tipos de fruta, los resultados fueron muy alentadores. Agricultores como Filiberto Montanari, que ha utilizado una máquina Florix durante varios años, han informado de una reducción significativa en el tiempo y la mano de obra necesarios para aclarar las flores. ... >>

Microscopio infrarrojo avanzado 02.05.2024

Los microscopios desempeñan un papel importante en la investigación científica, ya que permiten a los científicos profundizar en estructuras y procesos invisibles a simple vista. Sin embargo, varios métodos de microscopía tienen sus limitaciones, y entre ellas se encuentra la limitación de resolución cuando se utiliza el rango infrarrojo. Pero los últimos logros de los investigadores japoneses de la Universidad de Tokio abren nuevas perspectivas para el estudio del micromundo. Científicos de la Universidad de Tokio han presentado un nuevo microscopio que revolucionará las capacidades de la microscopía infrarroja. Este instrumento avanzado le permite ver las estructuras internas de las bacterias vivas con una claridad asombrosa en la escala nanométrica. Normalmente, los microscopios de infrarrojo medio están limitados por la baja resolución, pero el último desarrollo de investigadores japoneses supera estas limitaciones. Según los científicos, el microscopio desarrollado permite crear imágenes con una resolución de hasta 120 nanómetros, 30 veces mayor que la resolución de los microscopios tradicionales. ... >>

Trampa de aire para insectos. 01.05.2024

La agricultura es uno de los sectores clave de la economía y el control de plagas es una parte integral de este proceso. Un equipo de científicos del Consejo Indio de Investigación Agrícola-Instituto Central de Investigación de la Papa (ICAR-CPRI), Shimla, ha encontrado una solución innovadora a este problema: una trampa de aire para insectos impulsada por el viento. Este dispositivo aborda las deficiencias de los métodos tradicionales de control de plagas al proporcionar datos de población de insectos en tiempo real. La trampa funciona enteramente con energía eólica, lo que la convierte en una solución respetuosa con el medio ambiente que no requiere energía. Su diseño único permite el seguimiento de insectos tanto dañinos como beneficiosos, proporcionando una visión completa de la población en cualquier zona agrícola. "Evaluando las plagas objetivo en el momento adecuado, podemos tomar las medidas necesarias para controlar tanto las plagas como las enfermedades", afirma Kapil. ... >>

Noticias aleatorias del Archivo

patinete electrico xiaomi 18.12.2016

Xiaomi ha presentado otra novedad: un scooter eléctrico, que se puede comprar a un precio estimado de $ 240.

La novedad tiene un diseño minimalista. El marco está hecho de aluminio de calidad aeronáutica. El vehículo pesa 12,5 kilogramos.
La batería de iones de litio ofrece una autonomía de hasta 30 km. Al mismo tiempo, el scooter es capaz de alcanzar velocidades de hasta 25 km/h.

La novedad se caracteriza por un diseño plegable. Los frenos de disco delanteros y traseros están instalados. Por cierto, la eficiencia de frenado se incrementa con el sistema de frenos antibloqueo E-ABS.

El scooter está equipado con luces de marcha. Hay un indicador de cuatro LEDs que informa sobre el nivel de carga de la batería.

La información del estado del vehículo se puede ver en la aplicación móvil complementaria para teléfonos inteligentes y tabletas.

La novedad saldrá a la venta el 15 de diciembre.

Otras noticias interesantes:

▪ Nanotubo híbrido y oro

▪ tormenta radiactiva

▪ tocino vegetal

▪ Bolígrafo Livescribe 3 para digitalizar notas manuscritas

▪ Control láser mediante sonido.

Feed de noticias de ciencia y tecnología, nueva electrónica

 

Materiales interesantes de la Biblioteca Técnica Libre:

▪ sección del sitio Tecnologías de fábrica en casa. Selección de artículos

▪ artículo Es alegría con lágrimas en los ojos. expresión popular

▪ artículo ¿Dónde se encuentra el puente famoso por los frecuentes suicidios de perros? Respuesta detallada

▪ articulo electricista. Instrucción estándar sobre protección laboral

▪ artículo ¿Cuánta energía solar llega a la Tierra? Enciclopedia de radioelectrónica e ingeniería eléctrica.

▪ artículo Cajas en una cuerda. Secreto de enfoque

Deja tu comentario en este artículo:

Nombre:


Email opcional):


comentar:





Todos los idiomas de esta página

Hogar | Biblioteca | Artículos | Mapa del sitio | Revisiones del sitio

www.diagrama.com.ua

www.diagrama.com.ua
2000 - 2024