domingo, 16 de septiembre de 2018

Partes del entorno de programación de Arduino

Software Arduino IDE

¿Para qué se utiliza la función Void Setup?
Aquí es donde establecemos algunos criterios que requieren una ejecución única. 
Por ejemplo, si nuestro programa va a usar comunicación serial, en el setup establecemos el comando Serial.begin para indicarle al programa que vamos a iniciar la comunicación serial.

¿Para qué se utiliza la función Void Loop?
La función loop en Arduino es la que se ejecuta un número infinito de veces. Al encenderse el Arduino se ejecuta el código del setup y luego se entra al loop, el cual se repite de forma indefinida hasta que se apague o se reinicie el microcontrolador.

void loop en Arduino

Vemos que se empieza a imprimir una y otra vez la secuencia 1, 2, 3… Así sucederá con todo lo que coloquemos en el loop.

¿Qué es una sintaxis? y ¿Cuales son?
En el siguiente vídeo podrá encontrar una breve explicación de sintaxis en el software Arduino IDE y los tipos que existen.



¿Qué son variables/constantes?

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

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.



Variables constantes:
INPUT:
Los pines del Arduino (ATmega) configurados como INPUT con pinMode() se dice que estan en un estado de alta-impedancia . Pines configurados como INPUT hacen muy poca demanda en el circuito en el que se usan, equivalente a una resistencia en serie de 100 Megohms en frente del pin. Esto los hace utiles para leer un sensor.

OUTPUT:
Pines configurados como OUTPUT con pinMode() se dice que estan en un estado de baja-impedancia. Esto significa que pueden proveer una substancial cantidad de corriente a otros circuitos.Los pins del ATmega pueden originar (proveer corriente) o consumir (absorver corriente) hasta 40 mA (milliamps) de corriente hacia otros dispositivos/circuitos. Esto los hace utiles para dar enegia a LEDs porque los LEDs tipicamente usan menos de 40 mA. Cargas mayores a 40 mA (por ejem. motores) necesitaran un transistor u otro circuito de interfaz.

Los pines configurados como salidas se pueden dañar o destruir si son conectados a tierra o el canal positivo de energia.

HIGH:
El significado de HIGH (en referencia a un pin) es un poco diferente dependiendo si el pin esta configurado como INPUT(de entrada) o OUTPUT(de salida). Cuando un pin esta configurado como INPUT con pinMode(), y leido con digitalRead(), el Arduino (ATmega) reportara HIGH si:
  • un voltaje mayor a 3 voltios esta presente en el pin (tarjetas de 5V)
  • un voltaje mayor a 2 voltios esta presente en el pin (tarjetas de 3.3V)
Un pin tambien puede ser configurado como INPUT con pinMode(), y subsecuentemente puesto a HIGH con digitalWrite(). Esto habilitara los resistores internos de acoplamineto a positivo de 20K, que pondran el pin de entrada a HIGH a menos que sea bajado a LOW por el circuito externo. Asi es como el INPUT_PULLUP funciona y se describe en detalle mas abajo.
Cuando un pin esta configurado como OUTPUT con pinMode(), y puesto a HIGH con digitalWrite(), el pin esta a:
  • 5 voltios (tarjetas de 5V)
  • 3.3 voltios (tarjetas de 3.3V)
En este estado puede ser fuente de corriente, por ejemplo, encender un LED que esta conectado a tierra mediante una resistencia en serie.

LOW:

El significado de LOW tambien tiene puede ser diferente dependiendo si el pin esta puesto a INPUT o OUTPUT. cuando un pin es configurado como INPUTcon pinMode(), y leido con digitalRead(), el Arduino (ATmega) reportara LOW si:
  • un voltaje menor que 3 voltios esta presente en el pin (tarjetas de 5V)
  • un voltaje menor que 2 voltios esta presente en el pin (tarjetas de 3.3V)

Cuando un pin esta configurado como OUTPUT con pinMode(), y puesto a LOW con digitalWrite(), el pin esta a 0 voltios (tarjetas de 5V o de 3.3V). En este estado puede drenar corriente, por ejemplo, encender un LED que esta conectado a +5 voltios (o +3.3 voltios) mediante un resistor en serie.

true: comunmente se define como 1, lo cual es correcto, pero true tiene una definicion mas amplia. Cual quier entero que no es cero es true, en el sentido Booleano. Asi que -1, 2 y -200 son todos definidos como true, tambien, en un sentido Booleano.

Toma nota de que las constantes true y false se escriben con minusculas al contrario que HIGHLOWINPUT, y OUTPUT.

false:false (falso) es el mas facil de definir de los dos. false se define como 0 (cero).

https://www.arduino.cc/reference/es/language/variables/constants/constants/

Tipos de variables:
Boolean: Solo almacena uno de dos valores que puede ser Verdadero o Falso. La variable de tipo boolean ocupa un byte en espacio de memoria.

Char: Se usa para almacenar el valor de un carácter. Ejemplo A = 65. Ocupa un byte en espacio de memoria (-128 a 127 en tabla acii).

Byte: Almacenan el valor en 8 bits con números naturales que representan en valores binarios.  Ejemplo: 18 = 00010010.

Int:  Indica que la función va a retornar un tipo de dato entero (la suma de dos números).

Float: Almacena Números con decimales. (-3.4028235E+43 a 3.4028235E+43a ) con una precisión de 7 decimales.

String:

string – char Array 
Arduino = [A,r,d,u,i,n,o] 

String – objet 

Arduino =  Arduino. 

¿Qué es una función?


Una función es un grupo de instrucciones con un objetivo particular y que se ejecuta al ser llamada desde otra función o procedimiento. Una función puede llamarse múltiples veces e incluso llamarse a sí misma (función recurrente).
Las funciones pueden recibir datos desde afuera al ser llamadas a través de los parámetros y puede entregar un resultado.
Una función tiene un nombre y un conjunto de instrucciones que son ejecutadas cuando se llama a la función. Son funciones setup() y loop() de las que ya se ha hablado anteriormente.

Las funciones de usuario pueden ser escritas para realizar tareas repetitivas y para reducir el tamaño de un programa. Segmentar el código en funciones permite crear piezas de código que hacen una determinada tarea y volver al área del código desde la que han sido llamadas.
FUNCIONES
Digitales:
  •  Función pinMode(pin, mode)

Función usada en la function setup() para configurar un pin dado para comportarse como INPUT o OUTPUT. Ej. pinMode(pin, OUTPUT); configura el pin número 'pin' como de salida. Los pines de Arduino funcionan por defecto como entradas, de forma que no necesitan declararse explícitamente como entradas empleando pinMode().
  •  Función digitalRead(pin)

Lee el valor desde un pin digital específico. Devuelve un valor HIGH o LOW. El pin puede ser especificado con una variable o una constante (0-13). Ej. v = digitalRead(Pin);
  •  Funcion digitalWrite(pin, value)

Introduce un nivel alto (HIGH) o bajo (LOW) en el pin digital especificado. De nuevo, el pin puede ser especificado con una variable o una constante 0-13. Ej. digitalWrite(pin, HIGH);
Analógicas:
  •  Función analogRead(pin)

Lee el valor desde el pin analógico especificado con una resolución de 10 bits. Esta función solo funciona en los pines analógicos (0-5). El valor resultante es un entero de 0 a 1023. Los pines analógicos, a diferencia de los digitales no necesitan declararse previamente como INPUT o OUTPUT.
  • Función analogWrite(pin, value)

Escribe un valor pseudo-analógico usando modulación por ancho de pulso (PWM) en un pin de salida marcado como PWM. Esta función está activa para los pines 3, 5, 6, 9, 10, 11. Ej analogWrite(pin, v); // escribe 'v' en el 'pin' analógico. Puede especificarse un valor de 0 - 255. Un valor 0 genera 0 V en el pin especificado y 255 genera 5 V. Para valores de 0 a 255, el pin alterna rápidamente entre 0 V y 5 V, cuanto mayor sea el valor, más a menudo el pin se encuentra en HIGH (5 V). Por ejemplo, un valor de 64 será 0 V tres cuartas partes del tiempo y 5 V una cuarta parte. Un valor de 128 será 0 V la mitad del tiempo y 5 V la otra mitad. Un valor de 192 será 0 V una cuarta parte del tiempo y 5 V tres cuartas partes.

Retardos (pausa):

  • delay(ms). Realiza una pausa en el programa la cantidad de tiempo en mili segundos especificada en el parámetro (máximo 1000, mínimo 1).

  • Comunicación:
    • Serial.begin(rate). Abre un Puerto serie y especifica la velocidad de transmisión. La velocidad típica para comunicación con el ordenador es de 9600 aunque se pueden soportar otras velocidades.
    • Serial.println(data). Imprime datos al puerto serie seguido por un retorno de línea automático. Este comando tiene la misma forma que Serial.print() pero este último sin el salto de línea al final. Este comando puede emplearse para realizar la depuración de programas. Para ello puede mandarse mensajes de depuración y valores de variables por el puerto serie. Posteriormente, desde el entorno de programación de Arduino, activando el "Serial Monitor" se puede observar el contenido del puerto serie, y, por lo tanto, los mensajes de depuración. Para observar correctamente el contenido del puerto serie se debe tener en cuenta que el "Serial Monitor" y el puerto serie han de estar configurados a la misma velocidad (Para configurar la velocidad del puerto serie se hará con el comando Serial.begin(rate)).

    https://aprendiendoarduino.wordpress.com/tag/funciones/
    http://dfists.ua.es/~jpomares/arduino/page_02.htm

    Tarjeta Arduino UNO (MEGA)

    Tarjeta Arduino UNO (MEGA)


    Actividad encender una led utilizando la placa Arduino.
    Resultado de imagen para Tarjeta Arduino UNO (MEGA) GIF

    ¿Qué es Arduino?

    Arduino es una plataforma de prototipos electrónica de código abierto (open-source) basada en hardware y software flexibles y fáciles de usar. Está pensado para artistas, diseñadores, como hobby y para cualquiera interesado en crear objetos o entornos interactivos.

    ¿Qué es un microcontrolador?


    Un microcontrolador (abreviado μCUC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un micro controlador incluye en su interior las tres principales unidades funcionales de una computadoraunidad central de procesamientomemoria y periféricos de entrada/salida.

    ¿Qué son entradas de y salidas en la tarjeta Arduino?

    Los sistemas digitales, como por ejemplo un microcontrolador, usan la lógica de dos estados representados por dos niveles de tensión eléctrica, uno alto, H y otro bajo, L (de High y Low, respectivamente, en inglés). Por abstracción, dichos estados se sustituyen por ceros y unos, lo que facilita la aplicación de la lógica y la aritmética binaria. Si el nivel alto se representa por 1 y el bajo por 0, se habla de lógica positiva y en caso contrario de lógica negativa.



    ¿Qué es un sensor analogico en la tarjeta Arduino?
    Los sensores analógicos normalmente se componen de tres pins: positivo, masa y salida de voltaje analógica. Esta salida de voltaje es directamente proporcional a la variable de medida del sensor (lineal).



    ¿Qué es un sensor digital en la tarjeta Arduino?


    Un sensor es un dispositivo capaz de detectar magnitudes físicas o químicas, llamadas variables de instrumentación, y transformarlas en variables eléctricas.
    • Las variables de instrumentación pueden ser por ejemplo: temperatura, intensidad lumínica, distancia, aceleración, inclinación, desplazamiento, presión, fuerza, torsión, humedad, movimiento, pH, etc.
    • Una magnitud eléctrica puede ser una resistencia eléctrica (como en una RTD), una capacidad eléctrica (como en un sensor de humedad o un sensor capacitivo), una tensión eléctrica (como en un termopar), una corriente eléctrica (como en un fototransistor), etc.
    Un sensor nos va a poder medir/leer las variables ambientales de nuestro entorno para poder tomar decisiones en función de los cambios en el entorno.
    ¿Qué son las salidas digitales etiquetadas con PWM(~)?



    Las Salidas PWM (Pulse Width Modulation) permiten generar salidas analógicas desde pines digitales. Arduino Uno no posee salidas analógicas puras, sin embargo el Arduino Due sí tiene salidas analógicas puras mediante dos DAC. El arduino due, posee dos salidas analógicas puras mediante dos conversores digital a analógico. Estos pines pueden usarse para crear salidas de audio usando la librería correspondiente.
    La función para hacer una salida PWM en un pin es:

    • analogWrite() – escribe un valor analógico (onda PWM) al pin especificado. No en todos los pines digitales se puede aplicar PWM. http://arduino.cc/en/Reference/AnalogWrite





    https://aprendiendoarduino.wordpress.com/2016/12/18/entradas-y-salidas-arduino-2/

    http://arduino.cl/que-es-arduino/

    martes, 11 de septiembre de 2018

    Responde lo siguiente

    Responde lo siguiente:


    ¿Por qué se escribieron los nombres “juanito” y “pepito” en el código?

    Se escriben para poder nombrar al valor o a los valores que se mencionaran después.

    ¿Para qué se utilizan las dos diagonales en el código?

    // línea de comentarios

    Para agregar una línea de comentario, se utiliza a menudo después de una instrucción, para proporcionar más información acerca de lo que hace ésta o para recordarla más adelante.

    Una línea de comentario empieza con // y terminan con la siguiente línea de código. Al igual que los comentarios de bloque, los de línea son ignoradas por el programa y no ocupan espacio en la memoria.
    ¿Cuál es la diferencia entre Serial.print y Serial.println?
    Serial.print 
    Imprime caracteres ascii.
    Serial.println
    Funciona igual que la anterior excepto que al termino del ultimo carácter le agrega dos bytes adicionales. Estos son: \r y \n . Retorno de acarreo y salto de linea.

    Ejemplo:
    void setup(){
     Serial.begin(9600); 
    }
    void loop(){
    
        //Ejemplo-1
        Serial.print("Hola Mundo");
        Serial.print("\r\n");
    
        //Ejemplo-2
        Serial.println("Hola Mundo");
    
        //Ejemplo-3
        Serial.write('H');
        Serial.write('o');
        Serial.write('l');
        Serial.write('a');
        Serial.write(' ');
        Serial.write('M');
        Serial.write('u');
        Serial.write('n');
        Serial.write('d');
        Serial.write('o');
        Serial.write('\r');
        Serial.write('\n');
        
        while(1);    //Esto es una pausa 
    }

    Actividad: Analiza y comprende

    Código en Arduino IDE


    Imagen relacionada

    float juanito = 15; La palabra 'juanito' va a tener un valor de 15 con 7 decimales aproximadamente.

    float pepito = 10; La palabra 'pepito' va a tener un valor de 10 con 7 decimales aproximadamente.

    int respuesta = 0; La respuesta equivale a un número entero igual a 0.

    int respuesta1 = 0; La respuesta1 equivale a un número entero igual a 0.
    int respuesta2 = 0; La respuesta2 equivale a un número entero igual a 0.

    float respuesta3 = 0; La respuesta3 equivale a un número con 7 decimales igual a 0.

    void setup():       establecer el estado inicial de las salidas de la placa.

           comienza un bloque de instrucciones.

     Serial.begin(9600); Comienzo de la serie a una velocidad de 9600 baudios.

      Serial.println("Inicio..."); La serie va a presentar la palabra 'Inicio' para empezar.

      respuesta = juanito + pepito; //Suma; Va a realizar la operación sin dar la respuesta.

      respuesta1 = juanito - pepito; //Resta; Va a realizar la operación sin dar la respuesta.
     respuesta2 = juanito * pepito; //Multiplicación; Va a realizar la operación sin dar la respuesta.

      respuesta3 = juanito / pepito; //División; Va a realizar la operación sin dar la respuesta.

      Serial.print("Respuesta suma: "); Lo que se solicita indicando "Respuesta suma".

      Serial.println(respuesta); Va a aparecer la respuesta de lo que se solicitó anteriormente.

      Serial.print("Respuesta Resta: "); Lo que se solicita indicando "Respuesta Resta".

      Serial.println(respuesta1); Va a aparecer la respuesta de lo que se solicitó anteriormente.

     Serial.print("Respuesta Multiplicación: "); Lo que se solicita indicando "Respuesta Multiplicación".

      Serial.println(respuesta2); Va a aparecer la respuesta de lo que se solicitó anteriormente.

      Serial.print("Respuesta División: "); Lo que se solicita indicando "Respuesta División".

      Serial.println(respuesta3); Va a aparecer la respuesta de lo que se solicitó anteriormente.

           termina un bloque de instrucciones.

    void loop ()       da la orden de ejecución del programa.

           comienza un bloque de instrucciones.

           termina un bloque de instrucciones.



    Resultado de imagen para codigo en arduino

    lunes, 10 de septiembre de 2018

    Aprendiendo la terminología de Arduino IDE

      Aprendiendo la terminología de Arduino IDE
    ¿Qué es sKetch?
    Un programa de Arduino se denomina sketch o proyecto y tiene la extensión .ino
    Importante: para que funcione el sketch, el nombre del fichero debe estar en un directorio con el mismo nombre que el sketch.
    No es necesario que un sketch esté en un único fichero, pero si es imprescindible que todos los ficheros estén dentro del mismo directorio que el fichero principal y que este contenga obligatoriamente las funciones setup() y loop().
    void setup() {
    // put your setup code here, to run once:
    }
    void loop() {
    // put your main code here, to run repeatedly:
    }
    La estructura básica de un sketch de Arduino es bastante simple y se compone de al menos dos partes. Estas dos partes son obligatorios y encierran bloques que contienen declaraciones, estamentos o instrucciones.
    Resultado de imagen para ¿Qué es sKetch?
    ¿Qué es la función void setup ()?
    El setup es la primera función en ejecutarse dentro de un programa en Arduino. Es, básicamente, donde se “setean” las funciones que llevará a cabo el microcontrolador.
    Aquí es donde establecemos algunos criterios que requieren una ejecución única. Por ejemplo, si nuestro programa va a usar comunicación serial, en el setup establecemos el comando Serial.begin para indicarle al programa que vamos a iniciar la comunicación serial.
    https://soloarduino.blogspot.com/2017/01/
    http://panamahitek.com/el-setup-y-el-loop-en-arduino/
    ¿Qué es la función void loop ()?
    Loop en inglés significa lazo o bucle. La función loop en Arduino es la que se ejecuta un número infinito de veces. Al encenderse el Arduino se ejecuta el código del setup y luego se entra al loop, el cual se repite de forma indefinida hasta que se apague o se reinicie el microcontrolador.
    void loop en Arduino

    Vemos que se empieza a imprimir una y otra vez la secuencia 1, 2, 3… Así sucederá con todo lo que coloquemos en el loop.
    DIFERENCIA ENTRE LA FUNCION VOID SETUP() Y LOOP()
    void loop en Arduino
    ¿Cómo se agrega un bloque de comentario a un código de programación en Arduino IDE?

    /*… */ bloque de comentarios

    Los bloques de comentarios, o comentarios multi-línea son áreas de texto ignorados por el programa que se utilizan para las descripciones del código o comentarios que ayudan a comprender el programa. Comienzan con / * y terminan con * / y pueden abarcar varias líneas.
    /* esto es un bloque de comentario no se debe olvidar
    cerrar los comentarios estos deben estar equilibrados */
    Debido a que los comentarios son ignorados por el compilador y no ocupan espacio en la memoria de Arduino pueden ser utilizados con generosidad. También pueden utilizarse para "comentar" bloques de código con el propósito de anotar informaciones para depuración y hacerlo mas comprensible para cualquiera.
    Nota: Dentro de una misma línea de un bloque de comentarios NO se puede escribir otro bloque de comentarios (usando /*..*/).
    ¿Cómo se agrega una línea de comentario a un código de programación en Arduino IDE?

    // línea de comentarios

    Una línea de comentario empieza con // y terminan con la siguiente línea de código. Al igual que los comentarios de bloque, los de línea son ignoradas por el programa y no ocupan espacio en la memoria.
    // esto es un comentario

    Una línea de comentario se utiliza a menudo después de una instrucción, para proporcionar más información acerca de lo que hace ésta o para recordarla más adelante.
    ¿Que es un baudio?

    El baudio (en inglés baud) es una unidad de medida utilizada en telecomunicaciones, que representa el número de símbolos por segundo en un medio de transmisión digital.1​ Cada símbolo puede comprender 1 o más bits, dependiendo del esquema de modulación.
    Es importante resaltar que no se debe confundir la velocidad en baudios (baud rate) con la tasa de bits (bit rate), ya que cada evento de señalización (símbolo) transmitido puede transportar uno o más bits. Solo cuando cada evento de señalización (símbolo) transporta un solo bit coinciden la velocidad de transmisión de datos en baudios y en bits por segundo. Las señales binarias tienen la tasa de bit igual a la tasa de símbolos (rb = rs), con lo cual la duración de símbolo y la duración de bit son también iguales (Ts = Tb).
    Donde:
    • : régimen binario o tasa de bits
    • : tasa de modulación o tasa de símbolos y
    • : número de bits por nivel para la codificación de línea.
    El baudio se utilizó originariamente para medir la velocidad de las transmisiones telegráficas, tomando su nombre del ingeniero francés Jean Maurice Baudot, quien fue el primero en realizar este tipo de mediciones.
    El baudio puede escalarse en términos métricos, así
    • 1 kBd (kilobaudio) = 1000 Bd
    • 1 MBd (megabaudio) = 1000 kBd
    • 1 GBd (gigabaudio) = 1000 MBd.

    Descripciones de los diferentes tipos de datos:

    TABLA ASCII

    Resultado de imagen para tabla ascii


    Void 
    Solo se usa para la declaración de funciones que no retornan ningún valor. 

    Boolean 
    Solo almacena uno de dos valores que puede ser Verdadero o Falso. La variable de tipo boolean ocupa un byte en espacio de memoria.

    Char 
    Se usa para almacenar el valor de un carácterEjemplo A = 65. Ocupa un byte en espacio de memoria (-128 a 127 en tabla acii) 

    Unsignned Char 
    Funciona casi igual que un char, también ocupa un byte en memoria. (0-255. Ocupa un byte en espacio de memoria. 

    Byte 
    Almacenan el valor en 8 bits con números naturales que representan en valores binarios Ejemplo: 18 = 00010010 

    Int  
    Almacena un tipo de valor numérico  entero de –32768 a 32767. Ocupa 2 bytes de memoria.

    Unsigned int 
    Almacena valores numéricos de 0 a 65535. Ocupa 2 bytes de memoria. 

    Word 
     Enb modulos basados en ATMEGA pueden almacenar palabras de 16 bits unsigned, en modulos basados en DUE o ZERO almacenar palabras de hasta 32bits unsigned.

    Long 
    Se usa para almacenar números enteros grandes (-2147483648 a 2147483647). Ocupa 32 bits (4 bytes). 

    Unsigned Long 
    Se usa para almacenar números enteros grandes (0 a 4294967295). Ocupa 32 bits (4 bytes). 

    Short 
    Funciona igual que el INT. 

    Float 
    Almacena Números con decimales. (-3.4028235E+43 a 3.4028235E+43a ) con una precisión de 7 decimales.

    Double 
    Modulo basado en ATMEGA funciona igual que float pero en DUE 64bits(8bytes).

    string – char Array 
    Arduino = [A,r,d,u,i,n,o] 

    String – objet 
    Arduino =  Arduino. 

    Array 

    ArregloVarios datos del mismo tipo 


    https://www.youtube.com/watch?v=s3sve5R18c8
    https://playground.arduino.cc/ArduinoNotebookTraduccion/Structure