Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NUEVO LEÓN
Resumen 2 - Capitulo 3 y 4
Equipo No. 07
En caso que queramos mantener varias versiones del IDE en el mismo ordenador,
simplemente hacemos la instalación manual en directorios diferentes y las
configuraciones, librerías y sketches son compartidas por las diferentes versiones del
IDE instaladas.
En este artículo, vamos a compartir con vosotros alternativas del IDE de Arduino.
Además, queremos guiarte en la migración del Arduino IDE a estas nuevas
herramientas de desarrollo.
Como todo lo nuevo, los entornos de programación cambiantes pueden ser un reto,
pero si quieres mejorar tus conocimientos, deberás tener mejores herramientas de
trabajo a tu disposición.
• Atom.io + Platformio.
• Eclipse para Arduino
• Visual Studio con Arduino
• EmbedXcode para Mac
• Interfaz de la línea de comando de Arduino (CLI)
Pasos a seguir:
• Abrir la aplicación Arduino
• Abrir el ejemplo blink
• blink
• Seleccionar la placa y el puerto adecuado
• blink2
• Cargar el programa pulsando el botón “subir”. El programa se compilará y luego
se verá parpadeando los leds Tx y Rx de Arduino, indicando que se está cargando el
fichero binario (.hex) en la flash del Arduino. Cuando aparezca el mensaje “subido”
habremos acabado.
• Unos segundos después veremos el LED parpadeando.
Comentarios:
Un comentario es texto que el compilador omite pero que es útil para los
programadores. Los comentarios se usan normalmente para anotar código para su
referencia futura. El compilador los trata como si fueran espacios en blanco. Puede
usar comentarios en las pruebas para hacer que ciertas líneas de código no se
activen; sin embargo, #if/#endif las directivas de preprocesador funcionan mejor para
esto porque se puede rodear el código que contiene comentarios, pero no se pueden
anidar comentarios.
Los comentarios de C++ se escriben de una de las maneras siguientes:
• Los caracteres /* (barra diagonal, asterisco), seguidos de cualquier secuencia
de caracteres (incluidas nuevas líneas), seguidos de los caracteres */. Esta sintaxis
es la misma que para ANSI C.
• Los caracteres // (dos barras diagonales), seguidos de cualquier secuencia de
caracteres. Una nueva línea que no va precedida inmediatamente de una barra
diagonal inversa finaliza esta forma de comentario. Por tanto, normalmente se
denomina "comentario de una sola línea".
Los caracteres de comentario (/*, */ y //) no tienen ningún significado especial dentro
de una constante de caracteres, un literal de cadena o un comentario. Por tanto, los
comentarios que usan la primera sintaxis no se pueden anidar.
Los comentarios también pueden aparecer dentro del código como:
Con la sintaxis /* */, podemos escribir en varias líneas
/* Esto
es
un
comentario */
En algunos lenguajes como en Java puedes usar los comentarios para crear
documentación para tus clases, o una variable o un método.
De esta manera, usaríamos javadoc para generar ficheros de ayuda en HTML y
servirían para describir el elemento declarado:
/** Comentario de documentación
* puede
* tener
* varias líneas
*/
Variables en Arduino
¿Que es una variable?
Una variable es un lugar donde almacenar un dato, tiene un nombre, un valor y un
tipo.
Los nombres de variables pueden tener letras, números y el símbolo ’_’. Deben
empezar por una letra (pueden empezar por ’_ ’ pero no es recomendable pues es el
criterio que usan las rutinas de la biblioteca).
Pueden llevar mayúsculas y minúsculas. En C se distingue entre mayúsculas y
minúsculas. La costumbre es que las variables van en minúscula y las constantes en
mayúscula.
Usa las mismas reglas dentro del código para el nombramiento de variables, ya sea
en minúscula con palabras separadas con guiones bajos, tantos como sea necesario
para mejorar la legibilidad o utilizar la convención “CapWords” (palabras que
comienzan con mayúsculas), aunque generalmente la primera palabra se pone en
minúsculas.
Usa un solo guión bajo como prefijo para métodos no públicos y variables de instancia.
Las palabras reservadas if, else,etc . . . no pueden usarse como nombres de variables.
Nombres para evitar: Nunca uses los caracteres ‘l’ (letra ele en minúscula), ‘O’ (letra
o mayúscula), o ‘I’ (letra i mayúscula) como simples caracteres para nombres de
variables, para evitar confusiones a la hora de leer el código.
Una variable global es aquella que puede ser vista y utilizada por cualquier función y
estamento de un programa. Esta variable se declara al comienzo del programa, antes
de setup().
El modificador de variable static, es utilizado para crear variables que solo son visibles
dentro de una función, sin embargo, al contrario que las variables locales que se crean
y destruyen cada vez que se llama a la función, las variables estáticas mantienen sus
valores entre las llamadas a las funciones.
Constantes
En programación, una constante es un valor que no puede ser alterado/modificado
durante la ejecución de un programa, únicamente puede ser leído. Una constante
corresponde a una longitud fija de un área reservada en la memoria principal del
ordenador, donde el programa almacena valores fijos. Por ejemplo el valor de PI =
3.1416.
En C++ las constantes también pueden ser definidas a nivel de módulo antes de
compilar, de forma que no ocupan memoria y su nombre es sustituido por el valor
definido en el proceso de compilación. Estas constantes por norma se escriben con
letras en mayúscula y guiones bajos separando palabras. Por ejemplo,
MAX_OVERFLOW y TOTAL. Se usa la palabra clave #define para definirlas.
Tipos de variables.
Parametros de una instrucción.
Los parámetros sirven para modificar el comportamiento de la instrucción en algún
aspecto. Es decir: las instrucciones que no tienen parámetros hacen una sola función
(su tarea encomendada) y solo eso: no hay posibilidad de modificación porque
siempre harán lo mismo de la misma manera.
Por ejemplo: supongamos que tenemos una instrucción llamada asd() que tiene un
parámetro. Supongamos que si el parámetro vale 0 (es decir, si se escribe asd(0);),
lo que hará esta instrucción será imprimir por pantalla “Hola, amigo”; si el parámetro
vale 1 (es decir, escribiendo asd(1);), lo que hará será imprimir por pantalla “¿Como
estás?” y si el parámetro vale 2 (es decir, escribiendo asd(2);) imprimirá “Excelente”,
etc. Claramente, en las tres posibilidades el comando asd() hace esencialmente lo
mismo: imprimir por pantalla (para eso es un comando, sino podríamos estar
hablando de tres comandos diferentes), pero dependiendo del valor de su único
parámetro, la acción de imprimir por pantalla un mensaje es modificada escribiendo
distintos resultados. En resumen: las instrucciones serían como los verbos (ejecutan
órdenes), y los parámetros serían como los adverbios (dicen de qué manera se
ejecutan esas órdenes).
Capítulo 4:
Valor de retorno de una instrucción
Un concepto fundamental relacionado con las instrucciones del lenguaje arduino es
el de “valor de retorno”. Las instrucciones, además de recibir parámetros de entrada
y hacer la tarea que tiene que hacer, normalmente devuelven un valor de salida.
Un valor de salida es un dato que podemos obtener en nuestro sketch como
resultado “tangible” de la ejecución de la instrucción.
La comunicación serie con la placa arduino
Instrucciones de String
length(): Longitud de la cadena, número de carácteres.
compareTo(): Compara una cadena con otra que se pase como parámetro. Qué
cadena se ordena antes que la otra.
equals(): Compara una cadena con otra que se pase como parámetro. La
comparación es sensible a las mayúsculas, equivalente al operador == en String.
equalsIgnoreCase(): Compara una cadena con otra que se pase como parámetro.
La comparación NO es sensible a las mayúsculas, equivalente al operador == en
String.
IndexOf(): Devuelve la posición de la cadena donde se encuentra el carácter o el
principio de la cadena especificada como parámetro.
lastIndexOf(): Devuelve la posición de la cadena donde se encuentra el carácter o el
principio de la cadena especificada como parámetro. Es exáctamente lo mismo, con
la única diferencia que comienza desde el final de la cadena hacia atrás.
charAt(): Devuelve el carácter cuya posición se haya especificado como parámetro.
subString(): Devuelve la subcadena dentro de la cadena existente entre la posición
inicial y final, la subcadena pasada como parámetro.
replace(): Sustituye una subcadena existente dentro de la cadena por otra, todas las
veces que aparezca.
toLowerCase(): Convierte todos los carácteres de la cadena en minúsculas.
toUpperCase(): Convierte todos los carácteres de la cadena en mayúsculas.
trim(): Elimina todos los espacios en blanco y tabulaciones al principio y final de una
cadena.
concat(): Añade al final de la cadena otra cadena, pasada como parámetro.
endsWith(): Revisa si la cadena acaba con los carácteres de otra cadena, pasada
como parámetro.
startsWith(): Revisa si la cadena empieza con los carácteres de otra cadena, pasada
como parámetro.
toCharArray(): Copia una cantidad determinada de carácteres pertenecientes a la
cadena a un arreglo de tipo char. Ese array debe de ser especificado como primer
parámetro, y la cantidad de carácteres debe de ser especificada como segundo
parámetro.
getBytes(): opia una cantidad determinada de carácteres pertenecientes a la cadena
a un arreglo de tipo byte. Ese array debe de ser especificado como primer
parámetro, y la cantidad de carácteres debe de ser especificada como segundo
parámetro.
toInt(): Devuelve el valor numérico transformado en un dato de tipo entero solo si la
cadena tiene un valor que empieza por cifras numéricas. Descartando los posibles
carácteres no numéricos posteriores.
Creaciones de instrucciones propias.
Estructura
tipoRetorno nombreFuncion(tipo param1, tipo param2, …) {
// Código interno de la función
}
tipoRetorno: byte, int, float, etc.
tipo param1… : Declaraciones de parámetros de la función, variables internas.
Bloques condicionales
If
Comprueba si una condición determinada es cierta o falsa. Si no se cumple, no pasa
nada.
Else
El bloque else sirve para cuando la condición no se cumple.
Operadores de comparación:
== Comparación de igualdad
!= Comparación de diferencia
> Comparación de mayor que
>= Comparación de mayor o igual que
< Comparación de menor que
<= Comparación de menor o igual que
Operadores lógicos:
&& Comprueba que las dos condiciones sean ciertas
|| Comprueba que, al menos una de las condiciones sea verdadera
! Comprueba que no se cumpla la condición a la que precede
Bloques repetitivos (bucles):
While
Una aplicación del bucle “while” es la eliminación de los datos en el buffer de
entrada del chip TTL-UART que no queramos.
Este bloque implementa un bucle, es decir que repite la ejecución de las
instrucciones que están dentro de sus llaves de apertura y cierre, se repetirán
mientras que la condición especificada sea cierta.
Do
Exactamente igual al bucle while, esta condición es ejecutada después de ejecutar
las instrucciones dentro de las llaves.
For
El número de iteraciones se puede fijar en un valor exacto.