Está en la página 1de 7

Introducción a la Robótica.

Funciones

digitalWrite()

Descripción

Escriba un valor HIGH o LOW en un pin digital.

Si el pin ha sido configurado como OUTPUT con pinMode(), su voltaje se


establecerá en el valor correspondiente: 5V (o 3.3V en placas de 3.3V)
para HIGH, 0V (tierra) para LOW.

Si el pin está configurado como INPUT, digitalWrite()habilitará ( HIGH)


o deshabilitará ( LOW) el pullup interno en el pin de entrada. Se
recomienda establecer pinMode()en INPUT_PULLUP para habilitar la
resistencia pull-up interna. 

Si no establece el pinMode()en OUTPUT y conecta un LED a un pin, al


llamar digitalWrite(HIGH), el LED puede aparecer tenue. Sin establecer
explícitamente pinMode(), digitalWrite()habrá activado la resistencia
pull-up interna, que actúa como una gran resistencia limitadora de
corriente.

Sintaxis

digitalWrite(pin, value)

Parámetros

pin: el número de pin de Arduino.


value: HIGH o LOW.

Devoluciones

Nada (void).

Código de ejemplo

El código convierte el pin digital 13 en an OUTPUTy lo cambia alternando


entre HIGHy LOWa un ritmo de un segundo.

void setup() {
pinMode(13, OUTPUT); // sets the digital pin 13 as output
}

void loop() {
digitalWrite(13, HIGH); // sets the digital pin 13 on
delay(1000); // waits for a second
digitalWrite(13, LOW); // sets the digital pin 13 off
delay(1000); // waits for a second

1
Introducción a la Robótica. Funciones

Notas y Advertencias

Los pines de entrada analógica se pueden usar como pines digitales,


denominados A0, A1, etc. La excepción son los pines A6 y A7 de
Arduino Nano, Pro Mini y Mini, que solo se pueden usar como entradas
analógicas.

digitalRead()

Descripción

Lee el valor de un pin digital especificado, ya sea HIGH o LOW.

Sintaxis

digitalRead(pin)

Parámetros

pin: el número de pin de Arduino que desea leer

Devoluciones

HIGH o LOW

Código de ejemplo

Establece el pin 13 al mismo valor que el pin 7, declarado como


entrada.

int ledPin = 13; // LED connected to digital pin 13


int inPin = 7; // pushbutton connected to digital pin 7
int val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(inPin, INPUT); // sets the digital pin 7 as input
}

void loop() {
val = digitalRead(inPin); // read the input pin
digitalWrite(ledPin, val); // sets the LED to the button's value
}

Notas y Advertencias

Si el pin no está conectado a nada, digitalRead()puede


devolver HIGHo LOW(y esto puede cambiar aleatoriamente).

2
Introducción a la Robótica. Funciones

Los pines de entrada analógica se pueden usar como pines digitales,


denominados A0, A1, etc. La excepción son los pines A6 y A7 de
Arduino Nano, Pro Mini y Mini, que solo se pueden usar como entradas
analógicas.

analogRead()

Descripción

Lee el valor del pin analógico especificado. Las placas Arduino


contienen un convertidor analógico digital multicanal de 10 bits. Esto
significa que mapeará los voltajes de entrada entre 0 y el voltaje de
funcionamiento (5 V o 3,3 V) en valores enteros entre 0 y 1023. En un
Arduino UNO, por ejemplo, esto produce una resolución entre lecturas
de: 5 voltios / 1024 unidades = 0,0049 voltios (4,9 mV) por
unidad. Consulte la tabla a continuación para conocer los pines
utilizables, el voltaje de funcionamiento y la resolución máxima para
algunas placas Arduino.

El rango de entrada se puede cambiar usando analogReference() ,


mientras que la resolución se puede cambiar (solo para placas Zero,
Due y MKR) usando analogReadResolution()  .

En placas basadas en ATmega (UNO, Nano, Mini, Mega), se tarda unos


100 microsegundos (0,0001 s) en leer una entrada analógica, por lo
que la velocidad de lectura máxima es de unas 10.000 veces por
segundo.

TENSIÓN DE PINES RESOLUCIÓN


ARDUINO
FUNCIONAMIENTO UTILIZABLES MÁXIMA

uno 5 voltios A0 a A5 10 bits

mini nano 5 voltios A0 a A7 10 bits

Mega, Mega2560,
5 voltios A0 a A14 10 bits
Mega ADK

Micro 5 voltios A0 a A11* 10 bits

leonardo 5 voltios A0 a A11* 10 bits

3
Introducción a la Robótica. Funciones

TENSIÓN DE PINES RESOLUCIÓN


ARDUINO
FUNCIONAMIENTO UTILIZABLES MÁXIMA

Zero 3,3 voltios A0 a A5 12 bits**

Vencer 3,3 voltios A0 a A11 12 bits**

Tableros de la familia
3,3 voltios A0 a A6 12 bits**
MKR

*A0 a A5 están etiquetados en la placa, A6 a A11 están disponibles


respectivamente en los pines 4, 6, 8, 9, 10 y 12
**La resolución predeterminada analogRead()para estas placas es de 10
bits, por compatibilidad. Debe usar analogReadResolution()  para
cambiarlo a 12 bits.

Sintaxis

analogRead(pin)

Parámetros

pin: el nombre del pin de entrada analógica para leer (A0 a A5 en la

mayoría de las placas, A0 a A6 en las placas MKR, A0 a A7 en Mini y


Nano, A0 a A15 en Mega).

Devoluciones

La lectura analógica en el pin. Aunque está limitado a la resolución del


conversor analógico-digital (0-1023 para 10 bits o 0-4095 para 12
bits). Tipo de datos: int.

Código de ejemplo

El código lee el voltaje en analogPin y lo muestra.

int analogPin = A3; // potentiometer wiper (middle terminal) connected


to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read

void setup() {
Serial.begin(9600); // setup serial
}

void loop() {
val = analogRead(analogPin); // read the input pin
Serial.println(val); // debug value
}

4
Introducción a la Robótica. Funciones

Notas y Advertencias

Si el pin de entrada analógica no está conectado a nada, el valor


devuelto por analogRead()fluctuará en función de una serie de factores
(por ejemplo, los valores de las otras entradas analógicas, qué tan
cerca está su mano del tablero, etc.).

analogWrite()

Descripción

Escribe un valor analógico ( onda PWM ) en un pin. Se puede usar para


encender un LED con diferentes brillos o impulsar un motor a varias
velocidades. Después de una llamada a analogWrite(), el pin generará
una onda rectangular constante del ciclo de trabajo especificado hasta
la siguiente llamada analogWrite()(o una llamada
a digitalRead()o digitalWrite()) en el mismo pin.

ARDUINO PINES PWM FRECUENCIA PWM

490 Hz (pines 5 y 6: 980


Uno, Nano, Mini 3, 5, 6, 9, 10, 11
Hz)

490 Hz (pines 4 y 13: 980


Mega 2 - 13, 44 - 46
Hz)

Leonardo, Micro, 3, 5, 6, 9, 10, 11, 490 Hz (pines 3 y 11: 980


Yun 13 Hz)

Uno WiFi Rev2,


3, 5, 6, 9, 10 976 Hz
Nano Every

No necesita llamar pinMode()para configurar el pin como salida antes de


llamar analogWrite().
La función analogWrite no tiene nada que ver con los pines analógicos o
la función analogRead.

Sintaxis

analogWrite(pin, value)

Parámetros

5
Introducción a la Robótica. Funciones

pin: el pin de Arduino para escribir. Tipos de datos permitidos: int.


value: el ciclo de trabajo: entre 0 (siempre apagado) y 255 (siempre
encendido). Tipos de datos permitidos: int.

Devoluciones

Nada.

Código de ejemplo

Establece la salida al LED proporcional al valor leído del potenciómetro.

int ledPin = 9; // LED connected to digital pin 9


int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value

void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}

void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to
1023, analogWrite values from 0 to 255
}

Serial.println()

Descripción

Imprime datos en el puerto serie como texto ASCII legible por


humanos seguido de un carácter de retorno de carro (ASCII 13 o '\r') y
un carácter de nueva línea (ASCII 10 o '\n'). Este comando toma las
mismas formas que Serial.print()  .

Sintaxis

Serial.println(val)
Serial.println(val, format)

Parámetros

val: el valor a imprimir - cualquier tipo de datos

format: especifica la base numérica (para tipos de datos integrales) o el

número de lugares decimales (para tipos de punto flotante)

6
Introducción a la Robótica. Funciones

Devoluciones

size_t: println()devuelve el número de bytes escritos, aunque leer ese

número es opcional

Código de ejemplo
/*
Analog input reads an analog input on analog in 0, prints the value
out.
created 24 March 2006
by Tom Igoe
*/

int analogValue = 0; // variable to hold the analog value

void setup() {
// open the serial port at 9600 bps:
Serial.begin(9600);
}

void loop() {
// read the analog input on pin 0:
analogValue = analogRead(0);

// print it out in many formats:


Serial.println(analogValue); // print as an ASCII-encoded
decimal
Serial.println(analogValue, DEC); // print as an ASCII-encoded
decimal
Serial.println(analogValue, HEX); // print as an ASCII-encoded
hexadecimal
Serial.println(analogValue, OCT); // print as an ASCII-encoded
octal
Serial.println(analogValue, BIN); // print as an ASCII-encoded
binary

// delay 10 milliseconds before the next reading:


delay(10);

También podría gustarte