Vamos a continuar con las funciones de Arduino UNO, haciendo especial referencia a las funciones internas de ARDUINO. En la tabla anterior te muestro una tabla de funciones para que directamente vayas a la función específica.

📚 Referencia rápida de funciones para programación en Arduino UNO

📂 Categoría 🔤 Función 🔗 Enlace
📥 Analógica analogRead() 📖 Ir →
📤 Analógica analogWrite() 📖 Ir →
⏱️ Tiempo delay() 📖 Ir →
⏱️ Tiempo millis() 📖 Ir →
Matemáticas min() 📖 Ir →
Matemáticas max() 📖 Ir →
🎲 Aleatorios randomSeed() 📖 Ir →
🎲 Aleatorios random() 📖 Ir →
📡 Serie Serial.begin() 📖 Ir →
📡 Serie Serial.print() 📖 Ir →
📡 Serie Serial.println() 📖 Ir →
📡 Serie Serial.available() 📖 Ir →
📡 Serie Serial.read() 📖 Ir →

analogRead(PIN).

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'
 pines analógicos en Arduino UNO Q.

Pines analógicos en Arduino UNO Q.

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.

Además, la tensión de referencia de estos pines por defecto es de 0 a 5V, a no ser que se cambie con analogReference(). Por lo que la tensión de salida de estos pines por defecto será de 0 a 5V y su equivalente en decimal será para 5V, 1023. Así podemos establecer un factor de conversión de:

Valor digital = (Voltaje_entrada × 1023) / 5V

Entre las aplicaciones para los que se usan estos pines están, por ejemplo:

● Lectura de potenciómetros.
● Sensores de luz (LDR).
● Sensores de temperatura (LM35).
● Sensores de distancia (HC-SR04 - echo).
● Sensores de humedad.

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 valor que se puede enviar a estos pines (resolución) de salida analógica, es de 8 bits y puede darse en forma de variable o constante, pero siempre con un margen de 0 a 255, siendo el 0 el 0V y el 255 los 5V (analogReference es 5V, por defecto).

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

El ciclo de trabajo de estos pines PWM dependen del voltaje de salida de los mismos. Así un valor de 0, implica los 0V. Un valor de 64, implica un 25% (aproximadamente 1.25V); un valor de 127, un 50%; y 255 implica 5V.

Así, si ponemos un LED a la salida de uno de estos pines PWM, podremos controlar su luminosidad aplicando un valor a su salida.

int ledPin = 9; // Pin PWM // the setup routine runs once when you press reset: void setup() { pinMode(ledPin, OUTPUT); //Establece el pin de origen y su configuración. } // the loop routine runs over and over again forever: void loop() { // Aumenta brillo for (int brillo = 0; brillo <= 255; brillo++) { analogWrite(ledPin, brillo); delay(10); } // Disminuye brillo for (int brillo = 255; brillo >= 0; brillo--) { analogWrite(ledPin, brillo); delay(10); } } Arduino

Función delay().

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 1000 ms equivale a 1 segundo:

delay(1000); // espera 1 segundo

Función 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

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

Función 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.

Función max(x,y).

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

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.

Función 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

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

int randNumber; // Variable que almacena el número aleatorio int ledPin = 9; // Pin PWM de Arduino void setup() { // No es necesario configurar el setup } // Vamos a utilizar el loop para generar un semilla: void loop() { // Utilizamos el randomSeed randomSeed(millis()); randNumber = random(255);// generamos un número aleatorio de 0 a 255 analogWrite(ledPin, randNumber);// produce una salida aleatoria delay(500);// Una pausa de 0.5 segundos } 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 con la Arduino UNO rev3 suele ser de 9600, aunque en las placas Q, pueden soportar velocidades muy superiores.

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

Serial.print(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

Serial.println(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().

Además:

● 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.avaible.

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.

int incomingByte = 0; // almacena el dato Serie void setup() { Serial.begin(9600); // establecemos la comunicación con el Serial } // Vamos a utilizar el loop para generar un semilla: void loop() { if (Serial.available() > 0) { //lee el byte de entrada incomingByte = Serial.read(); //lo vuelca a pantalla Serial.print("He recibido el dato :");// Muestra mensaje Serial.println(incomingByte, DEC); } } Arduino

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.

Comparte este conocimiento en redes sociales