miércoles, 7 de agosto de 2019

UNIDAD 3, Individual #1: Detector de movimiento

 ¿Cuáles son los pasos para subir un programa a la placa Arduino?

  1. Descargas el programa y los abres en la aplicación arduino.
  2. Conectar el cable azul de la placa arduino.
  3. Ir a la barra de herramientas.
  4. Elegir la opción Puerto y "Placa de arduino genuino"

¿Ha tenido algún inconveniente?, ¿por qué?, ¿cómo se solucionó?, ¿cuál es la función del programa?

Tuve al principio confusiones con la conexión de el sensor PIR con la placa arduino, se solucionó empleando cables macho-hembra.
La función del programa, es cuando el sensor PIR detecte movimiento, el led se encienda. 

¿Qué usos le puede dar al sensor pir dentro de su maqueta domótica?

Para que las luces se enciendan automaticamente al detectar movimiento, además de encender otros sistemas de la casa automaticamente según las peticiones de la clienta.

¿Qué es un sensor PIR?

Este sensor detecta movimiento por cambios en el infrarrojo. Es el sensor habitual para detectar intrusiones en aáeas cerradas o para encender la luz al pasar sin necesidad de interruptor.
Puede manejar directamente un pequeño relé sin necesidad de micro controlador o leerse desde un arduino o similar para formar una red de sensores multiples.
Prometec. Sensor de movimiento Pir (s.f) Recuperado de: https://store.prometec.net/producto/sensor-hc-sr501-pir/

¿Qué es una variable?, ¿Qué son variables globales y locales?

En programación, las variables son espacios reservados en la memoria que, como su nombre indica, pueden cambiar de contenido a lo largo de la ejecución de un programa. Una variable corresponde a un área reservada en la memoria principal del ordenador.
Una variable local es aquella cuyo ámbito se restringe a la función que la ha declarado se dice entonces que la variable es local a esa función. Esto implica que esa variable sólo va a poder ser manipulada en dicha sección, y no se podrá hacer referencia fuera de dicha sección. Cualquier variable que se defina dentro de las llaves del cuerpo de una función se interpreta como una variable local a esa función.
Una variable global es aquella que se define fuera del cuerpo de cualquier función, normalmente al principio del programa, después de la definición de los archivos de biblioteca (#include), de la definición de constantes simbólicas y antes de cualquier función. El ámbito de una variable global son todas las funciones que componen el programa, cualquier función puede acceder a dichas variables para leer y escribir en ellas. Es decir, se puede hacer referencia a su dirección de memoria en cualquier parde del programa.

Capítulo 6, definicion yuso de funciones, variables locales y globales (s.f) recuperado de: http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap6/cap62.htm

¿Cuáles son las características de los identificadores de las variables?

Un identificador es un nombre que se asigna a los distintos elementos de un programa, como pueden ser variables, nombres de funciones, etc. Para construir identificadores usando el lenguaje C podemos usar caracteres alfabéticos (mayúsculas y minúsculas), los diez dígitos del 0 al 9 y el subrayado (_). 
  • No se pueden usar otros caracteres especiales como $,%,&,etc
  • No pueden empezar por un número
  • Distintos identificadores en una sentencia se separan mediante espacios en blanco y tabuladores
  • C es sensible a mayusculas y minúsculas por lo que pepe es distinto a Pepe
  • Palabra reservada. Identificadores con un significado especial para el compilador
    • while para bucle
    • int para tipo de datos
    • Todas tienen que escribirse usando letras minúsculas
    • No podemos usarlo para nuestro propios identificadores (variables y constantes)
Palabras reservadas en C
32 palabras reservadas en ANSI C
No existe una norma en la forma de escribir los identificadores en el lenguaje C pero si es bueno que tengamos claro usar un sistema que facilite la legibilidad de nuestro código fuente. Existen dos notaciones bastante extendidas:
  • Primera forma
    • Escribir las palabras juntas con la primera letra de cada una en mayúsculas
    • Si es una variable, la primera letra de la primera palabra se escribe en minúsculas. Ejemplo: diasDelMes
    • Si es una función, la primera letra de la primera palabra se escribe en mayúsculas. Ejemplo: CalcularAreaCuadrado
  • Segunda forma
    • Escribir todas las palabras en minúsculas separándolas por un guión bajo (subrayado). Ejemplo: dias_del_mes
Josue Manuel Ramirez, (11 de dicienmbre de 2015) Código fuente, identificadores de variables y cosntantes. Recuperado de: https://www.masqueteclas.com/masqueteclas/013-identificadores-variables-y-constantes/

Tipos de datos.

  • #include
    Con esta directiva podemos incluir ficheros externos a nuestro proyecto. Un ejemplo sería el uso de alguna librería que haga una función especial. Se puede definir de dos maneras diferentes.
    • #include <fichero.h> Busca en los directorios de librerías por defecto
    • #include «C:\librerias\fichero.h» Una ruta completa al archivo
  • #define
    Esta directiva permite definir un alias a un texto y su uso más extendido es la declaración de constantes. La principal utilidad es que se puede reutilizar en cualquier parte del código afectando a todas las referencias que se hagan a partir de entonces. La norma aconseja poner todos los define en mayúsculas para identificarlos claramente.
    • #define BAUDIOS 9600
  • Directivas condicionales #if #ifdef #ifndef #else #endif
    Nos permite incluir o quitar código dependiendo de una condición. Un ejemplo claro puede ser cuando trabajemos en modo DEBUG es decir, cuando estamos haciendo pruebas. Podemos decir que en este caso nos escriba en el monitor serie información de como está funcionando nuestra aplicación. Esto se escribiría de la siguiente manera.

    En el código anterior estamos diciendo si está definida la constante DEBUG que ejecute un código en caso contrario otro código.
Ahora veremos los tipos de datos que podemos usar cuando programamos para Arduino. Para definir una variable debemos escribir primero el tipo, luego un nombre descriptivo y por último podemos asignar un valor inicial, esto último no es obligatorio en la declaración.
tipo nombre = valor;
Números
  • Enteros
    • byte: números sin signo que ocupan hasta 8 bits [0,255]
    • (unsigned) int: números enteros de 16 bits, 2 bytes. [-32768, 32767] (unsigned 65535) Uno y en Arduino Due 32 bits, 4 bytes[-2,147,483,648, 2,147,483,647] (unsigned 2,147,483,647).
    • word: son varialbes unsigned int
    • (unsigned) long:  32 bits, 4 bytes[-2,147,483,648, 2,147,483,647] (unsigned 2,147,483,647).
  • Coma flotante (decimales)
    • float: variable numérica con coma flotante de 32 bits (4 bytes) [-3.4028235E+38 , 3.4028235E+38]
    • double: es igual que los float
Textos
  • char: carácter de 1 byte
  • string: secuencia de char terminado por null char[5];
Complejos
  • array: colección ordenada de variables del mismo tipo. Puede ser de una sola dimensión ([n]) o multidimensional ([n][m]…)
  • struct: colección de varias variables de diferentes tipos
Otros tipos de datos
  • boolean: solo toma valores true o false. Ocupan un byte entero.
  • void: solo se utiliza en los valores de retorno de las funciones para indicar que esa función no devuelve valor.
  • enum: variables para almacenar estados predefinidos. Un ejemplo claro sería los estados de un sensor.
  • typedef: este elemento genera un nuevo tipo de variable con el nombre que queramos darle. Se puede utilizar con cualquier tipo de dato que queramos. Veamos un ejemplo:
  • union: permite apuntar a dos variables al mismo espacio de memoria.
Luis del Valle Hernández. Tipos de datos de en arduino (s.f) recuperado de: https://programarfacil.com/blog/arduino-blog/tipos-de-datos-en-arduino/

No hay comentarios:

Publicar un comentario