Programación II.

Lee el valor de un determinado pin definido como entrada analógica con una resolución de 10 bits. Esta instrucción sólo funciona en los pines (0-5). El rango de valor que podemos leer oscila de 0 a 1023.

valor = analogRead(pin); //asigna a valor lo que lee en la entrada'pin'

entrada analógicas

Nota: Los pines analógicos (A0-A5) a diferencia de los pines digitales, no necesitan ser declarados como INPUT u OUPUT ya que son siempre INPUT.

analogWrite(PIN).

Esta instrucción sirve para escribir un pseudo-valor analógico utilizando el procedimiento de modulación por ancho de pulso (PWM) a uno de los pin de Arduino marcados como pin PWM.

El más reciente Arduino, que implementa el chip ATmega168, permite habilitar como salidas analógicas tipo PWM los pines 3, 5, 6, 9, 10 y 11. Los modelos de Arduino más antiguos que implementan el chip ATmega8, solo tiene habilitadas para esta función los pines 9, 10 y 11. El valor que se puede enviar a estos pines de salida analógica puede darse en forma de variable o constante, pero siempre con un margen de 0-255.

analogWrite(pin, valor); //escribe 'valor' en el pin definido como analógico.

Si enviamos el valor 0 genera una salida de 0 voltios en el pin especificado; un valor de 255 genera una salida de 5 voltios de salida en el pin especificado. Para valores de entre 0 y 255, el pin saca tensiones entre 0 y 5 voltios. El valor HIGH de salida equivale a 5 voltios. Teniendo en cuenta el concepto de señal PWM , por ejemplo, un valor de 64 equivaldrá a mantener 0 voltios de tres cuartas partes del tiempo y 5 voltios a una cuarta parte del tiempo; un valor de 128 equivaldrá a mantener la salida en 0 la mitad del tiempo y 5 voltios la otra mitad del tiempo, y un valor de 192 equivaldrá a mantener en la salida 0 voltios una cuarta parte del tiempo y de 5 voltios de tres cuartas partes del tiempo restante. Debido a que esta es una función de hardware, en el pin de salida analógica (PWN) se generará una onda constante después de ejecutada la instrucción analogWrite() hasta que se llegue a ejecutar otra instrucción analogWrite() (o una llamada a digitalRead o digitalWrite en el mismo pin).

El siguiente ejemplo lee un valor analógico de un pin de entrada analógica, convierte el valor dividiéndolo por 4, y envía el nuevo valor convertido a una salida del tipo PWM o salida analógica:

escribir en el puerto 10 analogico

Funciones.

delay(ms).

Detiene la ejecución del programa la cantidad de tiempo en mili segundos que se indica en la propia instrucción. De tal manera que 1000ms equivale a 1 seg:

delay(1000); // espera 1 segundo

millis()

Devuelve el número de milisegundos transcurrido desde el inicio del programa en Arduino hasta el momento actual. Normalmente será un valor grande (dependiendo del tiempo que esté en marcha la aplicación después de cargada o después de la última vez que se pulsó el botón RESET de la tarjeta).

valor = millis(); //valor recoge el número de milisegundos

Nota: Este número se desbordará (si no se resetea de nuevo a cero), después de aproximadamente 9 horas.

min(x,y).

Calcula el mínimo de dos números para cualquier tipo de datos devolviendo el número más pequeño.

valor = min(valor, 100); // asigna a valor el más pequeños de los dos números especificados.
Si 'valor' es menor que 100, recogerá su propio valor.
Si ´valor´ es mayor que 100 pasara a valer 100.

max(x,y).

Calcula el máximo de dos números para cualquier tipo de datos devolviendo el número mayor de los dos.

valor = max(valor, 100); // asigna a valor el mayor de los dos números 'valor' y 100.
De esta manera nos aseguramos de que valor será como mínimo 100.

randomSeed(seed).
Establece un valor, o semilla, como punto de partida para la función random().

randomSeed(valor); // hace que valor sea la semilla del random

Debido a que Arduino es incapaz de crear un verdadero número aleatorio, randomSeed le permite colocar una variable, constante, u otra función de control dentro de la función random, lo que permite generar números aleatorios "al azar". Hay una variedad de semillas, o funciones, que pueden ser utilizados en esta función, incluido millis() o incluso analogRead() que permite leer ruido eléctrico a través de un pin analógico.

random(min); random(min, max).

La función random devuelve un número aleatorio entero de un intervalo de valores especificado entre los valores min y max.

valor = random(100, 200); // asigna a la variable 'valor' un numero aleatorio comprendido entre 100-200

Nota: Use esta función después de usar el randomSeed(). El siguiente ejemplo genera un valor aleatorio entre 0-255 y lo envía a una salida analógica PWM :

número aleatorio con Arduino

serial.begin(rate).

Abre el puerto serie y fija la velocidad en baudios para la transmisión de datos en serie. El valor típico de velocidad para comunicarse con el ordenador es 9600, aunque otras velocidades pueden ser soportadas.

void setup() { Serial.begin(9600); // abre el Puerto serie } // configurando la velocidad en 9600 bps

serial.println(data).

Imprime los datos en el puerto serie, seguido por un retorno de carro automático y salto de línea. Este comando toma la misma forma que Serial.print(), pero es más fácil para la lectura de los datos en el Monitor Serie del software.

Serial.println(analogValue); // envía el valor 'analogValue' al puerto

El siguiente ejemplo toma de una lectura analógica pin0 y envía estos datos al ordenador cada 1 segundo.

uso de println

Serial.printnl(data, data type).

Vuelca o envía un número o una cadena de caracteres al puerto serie, seguido de un carácter de retorno de carro "CR" (ASCII 13, o '\r')y un carácter de salto de línea "LF"(ASCII 10, or '\n'). Toma la misma forma que el comando Serial.print().

● Serial.println(b) vuelca o envía el valor de b como un número decimal en caracteres ASCII seguido de CRLF.
● Serial.println(b, DEC) vuelca o envía el valor de b como un número decimal en caracteres ASCII seguido de CRLF.
● Serial.println(b, HEX) vuelca o envía el valor de b como un número hexadecimal en caracteres ASCII seguido de CRLF.
● Serial.println(b, OCT) vuelca o envía el valor de b como un número Octal en caracteres ASCII seguido de CRLF.
● Serial.println(b, BIN) vuelca o envía el valor de b como un número binario en caracteres ASCII seguido de CRLF.
● Serial.print(b, BYTE) vuelca o envía el valor de b como un byte seguido de CRLF.
● Serial.println(str) vuelca o envía la cadena de caracteres como una cadena ASCII seguido de CRLF.
● Serial.println() sólo vuelca o envía CRLF. Equivaldría a printNewline().

serial.print(data, data type).

Vuelca o envía un número o una cadena de caracteres, al puerto serie. Dicho comando puede tomar diferentes formas, dependiendo de los parámetros que utilicemos para definir el formato de volcado de los números. Parámetros:

● data: el número o la cadena de caracteres a volcar o enviar.
● data type: determina el formato de salida de los valores numéricos (decimal, octal, binario, etc...) DEC, OCT, BIN, HEX, BYTE , si no se ve nada vuelva ASCII

Serial.print(b)

Vuelca o envía el valor de b como un número decimal en caracteres ASCII. Equivaldría a printInteger().

int b = 79; Serial.print(b); // prints the string "79".

Serial.print(b, DEC)

Vuelca o envía el valor de b como un número decimal en caracteres ASCII. Equivaldría a printInteger().

int b = 79; Serial.print(b, DEC); // prints the string "79".

Serial.print(b, HEX).

Vuelca o envía el valor de b como un número hexadecimal en caracteres ASCII. Equivaldría a printHex();

int b = 79; Serial.print(b, HEX); // prints the string "4F".

Serial.print(b, OCT)

Vuelca o envía el valor de b como un número Octal en caracteres ASCII. Equivaldría a printOctal();

int b = 79; Serial.print(b, OCT); // prints the string "117".

Serial.print(b, BIN)

Vuelca o envía el valor de b como un número binario en caracteres ASCII. Equivaldría a printBinary();

int b = 79; Serial.print(b, BIN); // prints the string "1001111".

Serial.print(b, BYTE)

Vuelca o envía el valor de b como un byte. Equivaldría a printByte();

int b = 79; Serial.print(b, BYTE); // Devuelve el caracter "O", el cual representa el caracter ASCII del valor 79

Serial.print(str)

Vuelca o envía la cadena de caracteres como una cadena ASCII. Equivaldría a printString().

Serial.print("Hello World!"); // vuelca "Hello World!".

serial.avaible().

int Serial.available()Obtiene un número entero con el número de bytes (caracteres) disponibles para leer o capturar desde el puerto serie. Equivaldría a la función serialAvailable().

Devuelve Un entero con el número de bytes disponibles para leer desde el buffer serie, o 0 si no hay ninguno. Si hay algún dato disponible, SerialAvailable() será mayor que 0. El buffer serie puede almacenar como máximo 64 bytes.

uso de serial.avaible

serial.read().

int Serial.Read(). Lee o captura un byte (un carácter) desde el puerto serie. Equivaldría a la función serialRead(). Devuelve el siguiente byte (carácter) desde el puerto serie, o -1 si no hay ninguno.

uso de serial.read

Hasta aquí hemos visto lo más importante que tienes que tener en cuenta a la hora de programar con tu placa Arduino UNO, por lo que a continuación empezaremos a diseñar proyectos y su ensamblaje para que tu aprendizaje sea correcto.