0% encontró este documento útil (0 votos)
217 vistas

Bases de C++ - Arduino

Este documento resume C/C++ y su relación con Arduino. C/C++ son lenguajes de programación estructurados y orientados a objetos. C++ extiende C con capacidades de programación orientada a objetos. Arduino usa un lenguaje basado en C/C++ llamado Wiring. Los programas de Arduino se compilan usando un IDE como Geany para generar archivos ejecutables que pueden cargarse en el microcontrolador.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
217 vistas

Bases de C++ - Arduino

Este documento resume C/C++ y su relación con Arduino. C/C++ son lenguajes de programación estructurados y orientados a objetos. C++ extiende C con capacidades de programación orientada a objetos. Arduino usa un lenguaje basado en C/C++ llamado Wiring. Los programas de Arduino se compilan usando un IDE como Geany para generar archivos ejecutables que pueden cargarse en el microcontrolador.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 63

Bases de C/C++ - Arduino

Pantalla de
Geany con un
“Hola mundo”
¿Qué es C/C++?

Primero: ¿qué es C? (vamos a la Wiki)
– Es un lenguaje de programación estructurado de propósito general,
como evolución del anterior lenguaje B.
– Al igual que B, es un lenguaje orientado a la implementación de
sistemas operativos, concretamente Unix. C es apreciado por la
eficiencia del código que produce y es el lenguaje de programación
más popular para crear software de sistemas y aplicaciones.
– Se trata de un lenguaje de tipos de datos estáticos, débilmente tipado,
de medio nivel, que dispone de las estructuras típicas de los
lenguajes de alto nivel pero, a su vez, dispone de construcciones del
lenguaje que permiten un control a bajo nivel. Los compiladores
suelen ofrecer extensiones al lenguaje que posibilitan mezclar código
en ensamblador con código C o acceder directamente a memoria o
dispositivos periféricos.
¿Qué es C/C++?

Y ahora: ¿qué es C++?
– Es un lenguaje de programación que fue diseñado a mediados
de los 80 con la intención de extender el lenguaje C con
mecanismos que permitan llevar a cabo la manipulación de
objetos. De acuerdo con esto, y con los puntos de vista de los
lenguajes orientados a objetos, el C++ es considerado como
un lenguaje híbrido: programación orientada a objetos (POO) y
programación estructurada (PE). Es por ello que se entiende
que el C++ es un lenguaje de programación multiparadigma.
¿Qué es C/C++?

La programación estructurada recurre únicamente a
subrutinas y tres estructuras básicas: secuencia,
selección (if y switch) e iteración (bucles for y while).

En la programación orientada a objetos los objetos se
utilizan como metáfora para emular las entidades reales
del negocio a modelar. Es bastante más complicada, pero
aporta ventajas.
Relación de Arduino con C/C++

El equipo encargado de Arduino creó un lenguaje propio para programar esta
tarjeta, dicho lenguaje se encuentra basado en Wiring (basado en C/C++).
Todo esto se trata de un framework, esto es una especie de plantilla,
estructura o esquema conceptual de base tecnológica que permite trabajar de
una forma mucho más sencilla y además es de código abierto para la
programación de los microcontroladores.

Para poder darle instrucciones y escribir el código en el microcontrolador o
tarjeta de desarrollo es necesario un entorno. Estos entornos son conocidos
como “Integrated Development Enviroment” o como también es conocido por
su abreviación IDE y que es definido como un entorno de desarrollo integrado.

Sin embargo, la ventaja que ofrece C es que se trata de un lenguaje de medio
nivel, el mismo permite manejar de forma eficiente todos los recursos del
microcontrolador y además se trata de un lenguaje compilado que permite
crear un archivo para que posteriormente este sea cargado en el
microcontrolador.
Bases de C++ - compilar

Pero vamos a volver atrás, porque aún no sabemos qué es eso de
compilar.

A partir de uno o más archivos con las fuentes se traduce el código fuente
a un código máquina preparado para la máquina destino (esto es “se
compilan”) y se crean así los archivos objeto, luego se enlazan entre ellos y
generan el archivo ejecutable (en Windows *.exe).

El compilador por tanto debe comprobar la validez sintáctica de las
instrucciones y en base a ellas crea el código máquina.
Bases de C++ - compilar

Los compiladores básicamente se dividen en dos partes, siendo la primera de ellas el
“Front End”, y que es la parte del compilador encargada de analizar y comprobar la
validez del código fuente y en base a ella crear los valores de la tabla de símbolos.
Esta parte generalmente es independiente del sistema operativo para el cual se está
compilando un programa.

La segunda parte del compilador es la llamada “Back End”, parte en la cual es
generado el código máquina, el cual es creado, de acuerdo a lo analizado en el
“Front End”, para una plataforma específica, que puede ser Windows, Mac, Linux o
cualquier otra.
Bases de C++ - enlazar

Los resultados obtenidos por el “Back
End” no pueden ser ejecutados en
forma directa, para ello es necesario
la utilización de un proceso de
enlazado, llamado “Linker”, el cual
básicamente es un software que
recoge los objetos generados en la
primera instancia de compilación,
incluyendo la información de las
bibliotecas, los depura y luego enlaza
el código objeto con sus respectivas
bibliotecas, para finalmente crear un
archivo ejecutable.
Bases de C++ - ejecutar

Este sería el proceso completo desde que se crean los
archivos fuente hasta que se tiene un programa ejecutable
listo para funcionar.
Bases de C++

Vamos ya a meternos en faena de las cosas básicas que
necesitamos para empezar a trabajar con el IDE y sacar
ejecutables.

Un buen (y extenso, aunque podía ser peor) documento
de referencia es el de “Aprenda C++ como si estuviera
en primero” de la Escuela Superior de Ingenieros
Industriales de San Sebastián de la Universidad de
Navarra. Tienen varios manuales de este estilo para
varios lenguajes de programación.
Bases de C++ - IDE

Se pueden usar muchos IDE (Integrated Development Environment):
– Geany (multiplataforma). Muy ligero para Linux, pero da algunos
problemas en Windows para configurar el compilador y no es fácil
acometer proyectos extensos.
– Code::blocks (multiplataforma). Va bien en Windows, pero no es fácil
hacer funcionar una librería propia.
– Visual Studio Code (multiplataforma). Va bien, pero a veces resulta un
poco excesivo si se van a realizar proyectos sencillos.
– Dev-C++ (Windows). La pega es que no es válido en Linux, pero va
bastante bien en Windows.

Sea con el IDE que sea, mucho ojo con la ruta donde se hacen los
proyectos, especialmente en Linux. No usar caracteres especiales
(tildes, símbolos…).
Bases de C++

Veamos directamente sobre un
“Hola mundo” hecho en Geany:

La primera línea es para incluir la
librería estándar de C++. Es
necesaria para definir los flujos de
entrada (cin) o de salida (cout)
además de los de error (cerr y clog).

La # es necesaria para hacer el
include.

Los signos “<>” son para encerrar
dentro el nombre de la librería.
Bases de C++

La segunda línea es para dar acceso al espacio
de nombres (namespace) std, donde se
encuentra encerrada toda la librería estándar. El
motivo de encerrar la librería estándar en un
espacio de nombres no es otro que el de hacer
más sencilla la creación de proyectos muy
grandes, de manera que el proyecto no deje de
compilar debido a que se han escogido los
mismos nombres para dos funciones, clases,
constantes o variables.

En caso de no usar using namespace, aún es
necesario indicar de alguna manera en qué
espacio de nombres residen los objetos, clases,
etc. que se estén usando. Para ello, es posible
emplear el operador de ámbito, "::". Por ejemplo:
Bases de C++


Los espacios de nombres no
son sólo exclusivos de la
librería estándar de C++. El
programador puede crear sus
propios espacios de
nombres, usando la palabra
clave namespace, poniendo a
continuación el nombre del
espacio de nombres, y
encerrando entre llaves todos
los miembros de ese espacio
de nombres. Por ejemplo:
Bases de C++

Pero volvamos a nuestro “Hola mundo”.

Todos los programas de C++ deben tener una
función main.

Si se intenta compilar un programa de C++ sin
una función main, el compilador genera un error.

Si no se especifica ningún valor devuelto en
main, el compilador proporciona un valor
devuelto de cero; es decir, el código de arriba y
el de abajo hacen lo mismo.

La doble barra (//) hace que toda esa línea
quede como comentario.

Los comentarios multilínea se abren con /* y se
cierran con */.
Bases de C++ - salida

El main, como cualquier otra función, debe
encerrarse entre llaves ({…}).

Quedan por explicar las dos líneas intermedias,
que realmente hacen lo mismo, con dos cadenas
de texto diferentes.

cout es la salida estándar y siempre va
acompañada de << para controlar el flujo de datos
que sale (lo que sale apunta hacia donde sale).

A continuación se pone el flujo de datos que
sacamos. En este caso es una cadena de texto,
pero podría ser cualquier cosa que se pudiera
traducir a caracteres.

Acabamos con “endl”, que implica un salto de
línea y se concatena con el operador “<<”.
Bases de C++ - salida

Aquí nuevamente se realizan concatenaciones usando “<<” para unir texto (string) y enteros
(int) de una forma muy simple.

Además se usa otra forma de acabar la línea: \n. La barra invertida se usa para “escapar” la n,
y hacer que en vez de significar “n” signifique retorno de carro o salto de línea.

DATO MUY TÉCNICO



La unica diferencia
entre una y otra es que
std::endl vacía el buffer
de salida, y '\n' no lo
hace.

Cuando algún programa
sea inestable por algún
error se aconseja usar
endl ya que libera el
buffer y así se fuerza a
imprimirlo.
Bases de C++ - salida

Usando la función printf():

El código queda un poco más largo, ya
que para concatenar strings hay que
hacer varias llamadas.


Otro detalle es que la librería está
declarada entre comillas en vez de
usando los signos “<>”. Es igualmente
válido.
Bases de C++ - salida

Este es bastante más complicado.

Cuando necesitas pasar valores a printf, lo haces con un "%" seguido de una letra. En el caso de un string se
usa s (%s) y en el caso de un entero (depende del tipo), se usa d (%d).

Y luego se pasa como una serie de argumentos cada uno de los valores a usar en ese mismo orden.

En el caso de string es más complicado, porque printf no soporta el uso de string, así que debemos pasar un
puntero a una cadena de caracteres (char). Por suerte, eso se consigue llamando a la función "c_str()" propia
de string.
Bases de C++ - entrada

De forma similar a la salida, para leer datos por teclado en C++ se hace usando el
comando cin >> (lo que entra apunta hacia donde entra, que es la variable).

Es importante notar el uso de los dos signos >> que son usados para controlar el flujo
de datos.
Bases de C++ - entrada

En el comando cin>> se debe poner, después de >>, el nombre de la variable en la cual se almacenará el
valor que el usuario ingrese. Por tal motivo primero se declaró una variable llamada nombre y luego se usó
cin>> nombre indicando que lo que el usuario ingrese se almacenará en dicha variable.

Sin embargo, presenta problemas para mostrar los valores cuando el nombre que ingresas contiene
espacios. Y como es muy posible que un nombre contenga espacios, debemos repararlo.
Bases de C++ - entrada

En este ejemplo hacemos exactamente lo mismo, pero modificando el modo de leer
la información desde la consola de modo que, aunque el valor del nombre incluya
espacios, se use el valor completo introducido por el usuario.
Bases de C++ - entrada

Aquí se van haciendo lecturas
de datos por línea.

También tiene algún fallo si por
ejemplo se meten números
con espacios, pero va bastante
bien.
Bases de C++ - entrada

Otro tipo de lectura usando la función scanf().

También da fallos con la lectura de espacios.

Necesitamos seguir usando la sintaxis tipo "%s" para
leer una serie de caracteres, pero en esta ocasión
debimos además especificar el tamaño del mismo (100).

Adicionalmente, en los siguientes argumentos de
scanf, pasamos entonces el nombre de la variable a la
cual asignar el valor ingresado por el usuario.

Tanto scanf como printf nos obligan a usar tipos muy
primitivos, como char, así que si queremos usar string
es poco lo que podemos hacer, pues aunque en nuestro
código finalmente hemos usado string, en realidad se
trata de un array de 100 caracteres (char) disfrazado. ●
Consejo: no usar printf ni scanf cuando se programa

Esto funciona muy bien con números, pero con string o con C++ puro, ya que esas funciones son realmente
básicamente en este caso un array de caracteres, de C y nos complican la vida.
debemos lidiar con tamaños constantes (como el 100 ●
Cuando usemos Arduino no tendremos más remedio
que tenemos allí).
que usar print o println, las lecturas raramente serán
de un teclado.
Bases de C++ - programas para practicar

Vamos a hacer algunos programas para practicar operaciones de E/S y operaciones básicas
con datos de entrada en base a lo aprendido hasta ahora:
– Programa que pida nombre, apellidos, ciclo formativo, curso y taller y lo muestre por
pantalla con formato adecuado.
– Programa que pida nombre, apellidos y año de nacimiento y calcule la edad suponiendo el
año presente como dato conocido (no hay por qué buscarlo de la fecha del sistema del
PC, este puede ser un extra si te quieres complicar).
– Programa que pida 3 números, los sume y muestre el resultado con un formato adecuado.
– Programa que pida 3 números, los multiplique y muestre el resultado con un formato
adecuado.
– Programa que pida 2 números, los reste y muestre el resultado con un formato adecuado.
– Programa que pida 2 números, los divida y muestre el resultado con un formato adecuado.
Bases de C++ - tipos

C++ tiene los siguientes tipos fundamentales:
– Caracteres: char (también es un entero), wchar_t
(permite UNICODE)
– Enteros: short, int, long, long long
– Números en coma flotante: float, double, long
double
– Booleanos: bool
– Vacío: void

El modificador unsigned se puede aplicar a enteros
para obtener números sin signo (por omisión los
enteros contienen signo), con lo que se consigue un
rango mayor de números naturales.
Bases de C++ - tipos

Veamos que son las conversiones
explícitas de tipo (o cast) con un
ejemplo.

Vemos que aunque sean tipo double
se muestran sin decimales si no los
tienen, pero con ellos si sí que los
tienen.

En cambio, al convertirlo a entero, el
número se trunca.
Bases de C++ - operadores de asignación

Tal y como su nombre lo indica, este tipo de operadores permiten la
asignación de un valor especifico a una variable. En C++ se encuentran
disponibles los siguientes operadores.
Bases de C++ - operadores aritméticos

Se usan para realizar cálculos y operaciones con números reales y punteros.

Básicamente permiten hacer cualquier operación aritmética que se necesite. Los
operadores más comunes son los siguientes
Bases de C++ - operadores relacionales

Los operadores relacionales, también denominados operadores binarios lógicos y de comparación, se
utilizan para comprobar la veracidad o falsedad de determinadas propuestas de relación (en realidad se
trata respuestas a preguntas).

Las expresiones que los contienen se denominan expresiones relacionales. Aceptan diversos tipos de
argumentos, y el resultado, que es la respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un
resultado booleano.
Bases de C++ - operadores lógicos

Los operadores lógicos producen un resultado booleano, y sus
operandos son también valores lógicos o asimilables a ellos (los valores
numéricos son asimilados a cierto o falso según su valor sea cero o distinto de
cero). Por el contrario, las operaciones entre bits producen valores arbitrarios.

Los operadores lógicos son tres, dos de ellos son binarios y el último
(negación) es unario.
Bases de C++ - operadores de bits

Los operadores de movimiento son operadores a nivel de bits, y lo que
hacen es convertir una determinada cantidad a su equivalente en bits
para posteriormente realizar un desplazamiento de dicho valor. Estos
operadores son los siguientes.


A pesar de ser "Operadores para manejo de bits", todos ellos exigen operandos
de tipo entero, que puede ser de cualquiera de sus variantes (short, long,
signed o unsigned) y enumeraciones. Es decir, el material de partida son bytes,
uno o varios, dependiendo del tipo de entero utilizado.
Bases de C++ - control de flujo

Estructuras de control
de flujo básicas: if, else
Bases de C++ - control de flujo

Estructuras de control
de flujo básicas: if, else
if
Bases de C++ - control de flujo

Estructuras de control
de flujo básicas: switch
Bases de C++ - control de flujo

Estructuras de
control de flujo
básicas: for
Bases de C++ - control de flujo

Estructuras de
control de flujo
básicas: while
Bases de C++ - control de flujo

Estructuras de
control de flujo
básicas: do {}
while
Bases de C++ - librerías

Cuando un proyecto software se complica y es posible reutilizar un
código en muchos sitios, puede ser útil crear una librería propia.

Así modularizamos y no repetimos código.

Necesitamos crear 2 archivos:
– Archivo de cabecera, por ejemplo MathLibrary.h, con las
cabeceras de las funciones que vamos a crear.
– Archivo de código, por ejemplo MathLibrary.cpp, que incluye al
de cabeceras y además contiene el código efectivo que realiza
las funciones.

Además del archivo principal del proyecto donde se haga uso de
las librerías.
Bases de C++ - librerías
Bases de C++ - librerías

El resultado, si todo ha ido bien, sería algo de
este estilo:


De cualquier manera, nosotros no nos liaremos con
librerías...
Bases de C++ - Arduino

Ya que sabemos muchas cosas de la base de C++, vamos a adentrarnos en un
subconjunto como es Arduino.
– A partir de ahora, el IDE recomendado es el oficial de Arduino:
https://www.arduino.cc/en/software).
– No es el único, pero es suficientemente bueno y simplifica las cosas.
– Hay dos versiones: el IDE normal y el IDE 2.0 beta. Esta última es una
evolución del básico, basada en Visual Studio Code. Esto ya nos hace
imaginar que es mucho más potente, necesita más recursos del PC (y que
siendo beta, puede tener fallos.
– El IDE básico no tiene autocompletado de código ni muchas otras
funciones de un IDE, es prácticamente un editor de textos que permite
compilar, pero no necesitamos más.
Bases de C++ - Arduino

Lo primero que veremos es
que tenemos una enorme
batería de ejemplos ya
cargados que ni siquiera
debemos ir buscando por
Google, ya los tenemos en
el propio IDE. Esto es algo
que muchos aficionados a
Arduino aprenden años
después de estar usándolo...
Bases de C++ - Arduino

Si abrimos un nuevo sketch,
nos encontramos con esto:
– Función setup(): sólo se
ejecuta una vez al
arrancar o resetear la
placa.
– Función loop(): se
ejecuta en bucle todo el
rato justo después del
setup.

Esto es lo mínimo que debe
tener un archivo *.ino. Los
*.ino son los archivos C++
específicos de Arduino.
Bases de C++ - Arduino

Para poner a prueba el
código primero se compila,
como sabemos, para verificar
que sintácticamente es
correcto.

Una vez que no hay errores
de compilación, se puede
subir a la placa, para la cual
previamente habremos
seleccionado el modelo
exacto.
Bases de C++ - Arduino

El modelo de la placa se
selecciona desde el menú
herramientas.

Desde ese mismo menú podemos
activar el Monitor Serie, para ver
las salidas de impresión que
hayamos especificado.

También usaremos el menú
herramientas para seleccionar el
puerto al que está conectado
nuestro micro Arduino u otra placa
(en el caso de la imagen tengo
seleccionado un tipo de ESP32).

Todo esto se hace de forma
previa a compilar y subir el
código.
Bases de C++ - Arduino

Funciones.
– Se usan para no tener que repetir código que es fácilmente reusable.
– Cuando necesito hacer uso de esa función hago una llamada con los valores concretos.
– Puede no devolver nada (void) o devolver un cierto valor.
Bases de C++ - Arduino

Para entender lo que son las lecturas y
escrituras analógicas y digitales
tenemos que bajar al nivel físico del
microcontrolador, en este caso Arduino.

E/S analógicas: analogRead(pin),
analogWrite(pin, value).
– Los pines disponibles son los
etiquetados como A0..A5.

E/S digitales: digitalRead(pin),
digitalWrite(pin, HIGH/LOW)
– Los pines disponibles son los
etiquetados con números sin
letras.
– Caso especial son los que tienen
la virgulilla (~), que definen a los
pines PWM.
Bases de C++ - Arduino

En este esquema (disponible en la Web de Arduino - https://store.arduino.cc/products/arduino-uno-rev3)
se puede ver toda la distribución de pines y mucha más información.
Bases de C++ - Arduino

Sobre los pines analógicos podre realizar acciones:
– Entrada: analogRead(pin)
– Salida: analogWrite(pin, value)

En ambos casos indico el pin sobre el que debo
operar, que debe ser del tipo adecuado.

Sobre los pines digitales podre realizar acciones:
– Entrada: digitalRead(pin)
– Salida: digitalWrite(pin, value)

Un pin analógico puede operar como digital, pero no
a la inversa.
Bases de C++ - Arduino

Con un ejemplo (AnalogInput) de
los provistos por Arduino:
– Este montaje sirve para
hacer encender y apagar el
led con una frecuencia que
vendrá determinada por la
lectura que se hace del
potenciómetro.
Bases de C++ - Arduino

Esto es lo que realiza la lectura analógica e implementa la función del
parpadeo:

Es muy importante
indicar qué función
tendrá el pin (entrada o
salida - INPUT/OUTPUT)
mediante el comando
pinMode.

Si nos fijamos, también
se realizan escrituras
digitales, donde debo
indicar el valor que
asigno (HIGH o LOW).

Si las escrituras fueran
analógicas, irían de 0 a
1023. Las lecturas hacen
el mismo mapeo.
Bases de C++ - Arduino

Tiempo: delay(ms), millis(), micros()
– En el código anterior ya ha aparecido delay(), que es una función muy usada en
Arduino, sobre todo al principio. Después nos damos cuenta de que da algunos
problemas e intentamos evitarla en lo posible.

Sirve para para el micro durante un cierto tiempo indicado en milisegundos.

Esa parada es una forma muy sencilla de implementar cosas como un parpadeo,
pero es bloqueante, es decir, para toda ejecución mientras pasa el tiempo de
delay.
– millis() es otra función muy usada que permite devolver el tiempo de ejecución desde
que se ha conectado el micro o que se ha pulsado el reset, dado en milisegundos.

Devuelve un número dado en unsigned long, y por eso se desbordará al cabo de
4294967295 milisegundos, que son unos 49,7 días, momento en el que volverá a
0.
– micros() es otra función igual que millis(), pero devuelve el valor en microsegundos,
por lo que desborda antes, en 1,19 horas.
Bases de C++ - Arduino

Puerto serie la comunicación por
defecto se realiza por los pines
TX-RX, y se controla la impresión
mediante unos pocos comandos:
– Serial.begin(rate). Establece
la velocidad de las
comunicaciones en baudios.
– Serial.print(data). Realiza
una salida de datos por la
salida estándar (monitor serie)
– Serial.println(data). Igual que
la anterior, pero añade un
salto de línea
– Serial.print(data, [data
type]). Especifica el tipo de
dato a imprimir
Bases de C++ - Arduino

El código anterior produce la
siguiente salida por el monitor
serie.
Bases de C++ - Arduino

En las placas Arduino hay varios pines
marcados con la virgulilla (~). Esos son los
pines que tienen capacidad PWM (Pulse Width
Modulation o Modulación de Ancho de Pulso).

Son pines digitales, es decir, permiten valores
de 0V o 5V. Pero tienen la particularidad de
poder establecer un ciclo de trabajo variando
el tiempo que permanecen en alto y el tiempo
que permanecen en bajo.

Así variamos:
– Ciclo de trabajo (% a nivel alto y a nivel
bajo).
– Frecuencia (veces por segundo que pasa
un ciclo completo).
Bases de C++ - Arduino

Este tipo de pines se reservan para el uso de ciertos
componentes. El más típico: el servomotor.

En este código se controla el servomotor según la
lectura del potenciómetro.

El servo se mantendrá en la posición que le indique
el ciclo de trabajo de la señal que le entra.
Bases de C++ - Arduino

Librerías:
– Las librerías son trozos de código hechas por terceros que usamos en
nuestro sketch.
– Esto nos facilita mucho la programación y permite la abstracción haciendo
que nuestro programa sea más sencillo de hacer y de entender.
– Para usar una librería ya existente en un sketch, sólo tienes que ir al menu
Programa, elegir "Incluir Librería", y elegir entre las librarías disponibles.
Esto ya mete el #include arriba del sketch para cada archivo de cabecera
(.h). El #include hace que tengas disponible en el sketch las funciones y
constantes definidas en la librería. También indican al IDE Arduino que
debe enlazar el sketch con el código de la librería cuando sea compilado
y/o subido a la placa.
Bases de C++ - Arduino

Librerías:
– En caso de tener que usar una librería no incluida entre las estándar, se
puede incluir de dos maneras:

Herramientas | Administrar bibliotecas, y elegir la adecuada.

Incluir un ZIP desde Programa | Incluir librería | Añadir biblioteca .ZIP.

Con las malas traducciones y sobre todo por el mal uso, vemos que se usa
indistintamente la palabra librería o biblioteca. Se refieren a lo mismo, aunque la
traducción correcta del término inglés library sería biblioteca.
– Para instalar una librería propia, se debe crear una carpeta en
ARDUINO/hardware/libraries con el nombre de la librería que se quiera usar.
La carpeta debe contener un archivo C or C++ con el código y otro de
cabeceras con las funciones y declaración de variables a usar. Desde ese
momento aparecerán en el menú Programa | Incluir Librería del Arduino IDE.
Bases de C++ - Arduino

Variables.
– Las variables son elementos básicos con los que operamos prácticamente desde que
se empieza a programar.
– Se debe definir su tipo (int, long, char, boolean…) y su nombre, que será su
identificador.
– El identificador debe estar escrito en minúsculas y puede contener números, pero sobre
todo debe ser descriptivo de lo que va a almacenar. Hay que evitar definiciones
como:

int a;

boolean b;
– Preferimos definiciones como:

int indice;

boolean ledEncendido;
– En la misma definición se puede asignar un valor inicial, aunque siendo puristas, ese
valor inicial se debería asignar dentro del setup.
Bases de C++ - Arduino

Constantes.
– Las constantes son expresiones predefinidas en el lenguaje Arduino como true, false, HIGH, LOW. INPUT,
OUTPUT, LED_BUILTIN..., pero también otras definidas por el usuario.
– Estas definiciones son más eficientes que las variables en el archivo compilado, ya que el compilador
sustituye toda referencia por el valor que toma.
– Se definen usando el comando #define seguido del identificador (siempre en MAYÚSCULAS) y el valor
que toma.
Bases de C++ - Arduino

Muchas otras cosas...
– Todo esto es, lógicamente, una introducción a la programación de
microcontroladores, en particular Arduino y sirve para meterse de lleno en
cosas más complicadas, pero no deja de ser una introducción, hay mucho
que aprender a medida que van surgiendo problemas y se quieren
conectar dispositivos de entrada y de salida.
Y FIN, con esto deberíamos poder meterle mano a la
programación en C++ y meternos con Arduino de forma
asequible.

This work is licensed under a Creative Commons


Attribution-ShareAlike 3.0 Unported License.
It makes use of the works of Mateus Machado Luna.

También podría gustarte