Вы находитесь на странице: 1из 38

Arduino

Language Reference
Arduino programs can be divided in three main parts: structure, values (variables
and constants), and functions.
Structure
setup()
loop()
Control Structures
if
if...else
for
switch
case
while
do... while
break
continue
return
goto
FurtherSyntax
; (semicolon)
{} (curlybraces)
// (single line
comment)
/* */ (multi-line
comment)
#define
#include
ArithmeticOperators
=
(assignmentoperat
or)
+ (addition)
- (subtraction)
* (multiplication)
/ (division)
% (modulo)
ComparisonOperators
== (equalto)
!= (notequalto)
< (lessthan)
> (greaterthan)
<= (less than or
equal to)
>= (greater than
or equal to)
BooleanOperators
&& (and)
Ing. Ronald N. Kopp

Variables
Constants
HIGH | LOW
INPUT | OUTPUT |
INPUT_PULLUP
LED_BUILTIN
true | false
integerconstants
floatingpointconst
ants
Data Types
void
boolean
char
unsignedchar
byte
int
unsignedint
word
long
unsignedlong
short
float
double
string - chararray
String - object
array
Conversion
char()
byte()
int()
word()
long()
float()
Variable
Scope&Qualifiers
variable scope
static
volatile
const
Utilities
sizeof()

Pgina 1

Functions
Digital I/O
pinMode()
digitalWrite()
digitalRead()
Analog I/O
analogReference()
analogRead()
analogWrite() PWM
Dueonly
analogReadResoluti
on()
analogWriteResoluti
on()
Advanced I/O
tone()
noTone()
shiftOut()
shiftIn()
pulseIn()
Time
millis()
micros()
delay()
delayMicroseconds()
Math
min()
max()
abs()
constrain()
map()
pow()
sqrt()
Trigonometry
sin()
cos()
tan()
RandomNumbers
randomSeed()
random()
Bits and Bytes
lowByte()
highByte()

Arduino
|| (or)
! (not)
Pointer Access
Operators
*
dereferenceoperat
or
&referenceoperato
r
BitwiseOperators
& (bitwise and)
| (bitwiseor)
^ (bitwisexor)
~ (bitwisenot)
<< (bitshiftleft)
>> (bitshiftright)
CompoundOperators
++ (increment)
-- (decrement)
+=
(compoundadditio
n)
-=
(compoundsubtrac
tion)
*=
(compoundmultipli
cation)
/=
(compounddivision
)
&=
(compoundbitwise
and)
|=
(compoundbitwise
or)

bitRead()
bitWrite()
bitSet()
bitClear()
bit()
ExternalInterrupts
attachInterrupt()
detachInterrupt()
Interrupts
interrupts()
noInterrupts()
Communication
Serial
Stream
USB (Leonardo and Due
only)
Keyboard
Mouse

Glosario:
code / function: comando
sketch: boceto/programa
delay: retraso / demora
loop: bucle/lazo
set: establecer/inicializar
running: ejecutndose

Paginas consultadas:
Ing. Ronald N. Kopp

Pgina 2

Arduino
http://wiring.org.co/reference/
http://arduino.cc/en/Tutorial/HomePage

Cdigo de colores de las Resistencias

Ing. Ronald N. Kopp

Pgina 3

Arduino

Funciones bsicas
Los bocetos (sketch) utilizados aqu, de ejemplos, son programas que
demuestran los comandos bsicos de Arduino. Se encuentran incluidos en el
programa Arduino; para abrirlos, hacemos clic en el botn Abrir de la barra de
herramientas y buscamos en la carpeta de ejemplos.
1.Basics
BareMinimum: The bare minimum of code needed to start an Arduino
sketch.
Blink: Turn an LED on and off.
DigitalReadSerial: Read a switch, print the state out to the Arduino Serial
Monitor.
AnalogReadSerial: Read a potentiometer, print its state out to the Arduino
Serial Monitor.
Fade: Demonstrates the use of analog output to fade an LED.
ReadAnalogVoltage : Reads an analog input and prints the voltage to the
serial monitor

Ing. Ronald N. Kopp

Pgina 4

Arduino

1. BareMinimum: La cantidad mnima de comandos necesarios para iniciar un


boceto (sketch) en Arduino.
Este ejemplo contiene los comandos mnimos que se necesitan para hacer un
boceto en Arduino y para que ste pueda ser compilado: el comando setup () y el
comando loop ().

Hardware Required
Arduino Board

Circuit
Solo se necesita la placa Arduino para ste ejemplo.

Ing. Ronald N. Kopp

Pgina 5

Arduino

Code
El comando setup() se coloca cuando se inicia un boceto. Lo usaremos para
inicializar variables, estados de los pines, comenzar a usar las bibliotecas, etc. El
comando setup() slo se ejecutar una vez, y esto ser, despus de cada
arranque o reinicio de la placa Arduino.
Nombre
Ejemplo

setup()
void setup() {
pinMode(0, OUTPUT);
Serial.begin(9600);
}
void loop() {
Serial.print('.');
delay(1000);

Ing. Ronald N. Kopp

Pgina 6

Arduino
Descripci
n

Sintaxis

Parmetro
s

}
La funcin es llamada una vez que el programa empieza a ser
ejecutado. Suele definir el ambiente inicial, tal como el estado de los
pines (INPUT o OUTPUT), inicializar el puerto serial, etc. Todo esto
antes que loop() empiece a ejecutarse. Las variables declaradas en
setup() no son accesibles desde loop().
void setup() {
declaraciones
}
Declaracio Cualquier declaracin valida.
nes

Despus de realizar el comando setup(), el comando loop() hace precisamente lo


que su nombre sugiere, bucles de forma consecutiva, lo que permite al programa
cambiar y responder mientras se ejecuta. El comando loop() en el prrafo de
nuestro boceto es utilizado para controlar activamente la placa Arduino.
Nombre
Ejemplo

Descripci
n

Sintaxis

Parmetro
s

loop ()
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
}
Continuamente ejecuta las lneas de cdigo dentro suyo,
bloquendose cuando el programa es detenido. La funcin loop() es
usada en conjuncin con setup(). El nmero de veces que loop()
se ejecuta por segundo puede ser controlada con las funciones
delay() y delayMicroseconds().
loop() {
declaraciones
}
Declaracio Una secuencia de declaraciones para ser ejecutados
nes
una y otra vez.

El cdigo de abajo en realidad no hace nada, pero sta estructura es til para ser
copiada y pegada, de tal manera que podamos empezar cualquier boceto por
nuestra cuenta. Tambin muestra cmo hacer comentarios de los comandos.
Cualquier lnea que comienza con dos barras inclinadas (//) no ser ledo por el
compilador, podremos escribir lo que queramos despus de ella. El comentar
nuestro cdigo puede ser particular mente til para explicar, tanto a nosotros
mismo y a otros, cmo funciona nuestro programa paso a paso.
Nombre
Ejemplo

//comentario
// Inicializa el pin 0 como OUTPUT
// Asigna el valor HIGH al pin 0
pinMode(0, OUTPUT);
// Inicializa el pin 0 como OUTPUT
digitalWrite(0, HIGH);
// Asigna el valor HIGH al pin 0

Ing. Ronald N. Kopp

Pgina 7

Arduino
Descripci
n

Sintaxis
Parmetro
s

Notas explicitaras dentro del cdigo. Los comentarios son usados


para recordarse a s mismo y para informar a los dems acerca de
una funcin en nuestro programa. Comentarios de una sola lnea
son marcados con los caracteres //. Los comentarios son ignorados
por el compilador.
// comentario
Comentari
o

Cualquier secuencia de caracteres.

void setup() {
// poner el cdigo de configuracin aqu, para ejecutar una vez
}
void loop() {
// poner el cdigo principal aqu, para ejecutar repetidamente
}
Nombre
Ejemplo

Descripci
n

Sintaxis
Parmetro
s
Nombre
Ejemplo
Descripci
n

Sintaxis
Parmetro
s

/* */ (multiline comment)
/*
Cambia de HIGH y LOW un pin
alternando entre ellos
y esperando 100 milisegundos
en cada alteracin
*/
digitalWrite(8, HIGH);
delay(100);
digitalWrite(8, LOW);
Notas de explicacin incrustadas en el cdigo. Los comentarios son
usados para recordar e informar a otros acerca del funcionamiento
de su programa. Los comentarios de multiples lneas son usados
para descripciones de textos largos o para comentar partes del
cdigo mientras la aplicacin esta depurando. Los comentarios son
ignorados por el compilador
/*
comentarios
*/
Comentari Cualquier secuencia de caracteres.
o
{} (llaves)
int a[] = { 5, 20, 25, 45, 70 };
Define el inicio y fin del bloque de una funcin y de bloques de
instrucciones de estructuras como el for() y el if(). Los corchetes
son tambin usados para definir los valores inciales en la
declaracin de un arreglo
{ declaracin }
{ ele0, ..., eleN }
Declaracio Cualquier secuencia de instrucciones vlida
nes

Ing. Ronald N. Kopp

Pgina 8

Arduino
ele0,
eleN

...,

Lista de elementos separados por coma

2. Blink: parpadear
Este ejemplo muestra la cosa ms simple que podemos hacer con un Arduino, el
destello de un LED.

Hardware Required
Ing. Ronald N. Kopp

Pgina 9

Arduino

ArduinoBoard
LED

Circuit
Para construir el circuito, conectamos una resistencia de 220 ohmios al pin 13. A
continuacin, conectamos la pata ms larga de un LED (la pata positiva, llamada
el nodo) a la resistencia. Fijamos la pata ms corta (la pata negativa, llamado el
ctodo) a tierra. A continuacin, conectamos la placa Arduino en el ordenador,
iniciamos el programa de Arduino, e introducimos el cdigo de abajo.
La mayora de las placas Arduino ya tienen un LED conectado al pin 13 en la
propia placa. Si ejecutamos este ejemplo, sin el hardware conectado, deberamos
ver que el LED este intermitente.

Ing. Ronald N. Kopp

Pgina 10

Arduino

Schematic

Ing. Ronald N. Kopp

Pgina 11

Arduino

Code
En el siguiente programa, lo primero que hacemos es asignar al pin 13 como un
pin
de
salida
con
la
lnea:
pinMode(13, OUTPUT);
Nombre
Ejemplo

pinMode()
int inpin = 8;
int outpin = 9;
int val = 0;
void setup() {
pinMode(inpin, INPUT);
pinMode(outpin, OUTPUT);
}

Descripci
n

Sintaxis
Parmetro
s

void loop() {
val = digitalRead(inpin);
if (val == HIGH)
{
digitalWrite(outpin, HIGH);
} else {
digitalWrite(outpin, LOW);
}
}
El comando pinMode() designa al pin digital I/O especificado como
INPUT o OUTPUT. Un pin I/O digital o binario puede tener dos posible
valores: HIGH o LOW. Es posible asignar o leer el valor de un pin
digital I/O usando los mtodos digitalWrite() y digitalRead().
pinMode (pin, valor)
Pin
Valor

Numero del pin


INPUT o OUTPUT

En el bucle principal, encendemos el LED con la lnea:


digitalWrite(13, HIGH);
Nombre
Ejemplo

digitalWrite()
int outpin = 0;
void setup() {
pinMode(outpin, OUTPUT);
}
void loop() {
digitalWrite(outpin, HIGH);
}

Ing. Ronald N. Kopp

Pgina 12

Arduino
Descripci
n
Sintaxis
Parmetro
s

El comando digitalWrite() escribe un valor (o pone en un estado) a


un pin digital. Los valores o estados posibles son HIGH o LOW
digitalWrite (pin, valor)
Pin
Valor

int: el nmero del pin


HIGH o LOW

Esto suministra 5 voltios al pin 13 que crear una diferencia de voltaje a travs
de los terminales del LED, y lo encender. Luego lo apagamos con la lnea:
digitalWrite(13, LOW);
Para eso se necesita que el pin 13 vuelva a 0 voltios, y se vuelva a apagar el LED.
Y entre el encendido y el apagado, se requiere un tiempo suficiente para que una
persona vea el cambio, por lo que el comando delay() le dir al Arduino que no
haga nada durante 1000 milisegundos, o un segundo.
Nombre
Ejemplo

delay()
int pin = 0;
int ledpin = 1;
void setup() {
pinMode(pin, INPUT);
pinMode(ledpin, OUTPUT);
}

Descripci
n

Sintaxis
Parmetro
s

void loop() {
if (pin == HIGH) {
digitalWrite(ledpin, HIGH);
}
else {
digitalWrite(ledpin, LOW);
}
delay(250); // Detiene el programa por 250 milisegundos
}
Obliga al programa a detenerse por un tiempo especificado. El
tiempo de demora es especificado en milsimas de segundo. La
llamada a la funcin delay(3000) detendr el programa por tres
segundos. Alias de delayMIlliseconds().
delay(milisegundos)
Milisegund
os

int:
Especificado
en
milisegundos
milisegundos en 1 segundo)

(hay

1000

Cuando se utiliza el comando delay(), no pasa nada ms por esa cantidad de


tiempo. Una vez que hayamos entendido los ejemplos bsicos, revisaremos el
ejemplo BlinkWithoutDelay para aprender a crear un retraso mientras se hace
otras cosas.
delay = retraso
Ing. Ronald N. Kopp

Pgina 13

Arduino
// el Pin 13 tiene un LED conectado en la mayora de las placas Arduino.
// le damos un nombre:
int led = 13;
// el setup se ejecuta de rutina una vez cuando se presiona RESET o se enciende
la placa:
void setup() {
// inicializamos el pin digital como una salida.
pinMode(led, OUTPUT);
}
// la rutina loop se ejecuta una y otra vez por siempre
void loop() {
digitalWrite(led, HIGH); // enciende el LED (el nivel de tensin es un ALTO)
delay(1000);
// esperar un segundo
digitalWrite(led, LOW); // apaga el LED haciendo el nivel de tensin un BAJO
delay(1000);
// espera un segundo
}

Nombre
Ejemplo

Descripci
n
Sintaxis
Parmetro
s

Nombre
Ejemplo
Descripci
n

Sintaxis
Parmetro
s

int
int a;
// Declara la variable "a" de tipo int
a = 23;
// Asigna a "a" el valor 23
int b = -256; // Declara la variable "b" y le asigna el valor -256
int c = a + b; // Declara la variable "c" y le asigna la suma de "a" y
"b"
Tipo de datos para enteros, nmeros sin punto decimal. Los enteros
pueden ser tan grandes como 32.767 y tan pequeos como -32,768.
Estos son almacenados como 16 bits de informacin.
int var
int var = valor
var
valor

Nombre de la variable referenciado al valor.


Cualquier valor entero.

; (punto y coma)
int a;
// Declaracin
a = 30;
// Asignacin de la declaracin
Serial.print(i); // Funcin de la declaracin
Es declaracin destructora que separa elementos en un programa.
Una declaracin es una instruccin completa al computador y el
punto y coma es usada para separar instrucciones (es similar al
punto "." al escribir en Espaol). Los punto y coma son usados para
separar diferentes elementos en una estructora for()
Decalracin;
Declaracio Una simple declaracin para ejecutar
nes

Ing. Ronald N. Kopp

Pgina 14

Arduino

3. Digital Read Serial: Lectura digital serial


Este ejemplo muestra cmo supervisar el estado de un interruptor mediante la
comunicacin serie, entre el Arduino y el ordenador, a travs del USB.

Hardware Required
ArduinoBoard
A momentary switch, button, or toggle switch
10k ohm resistor
breadboard
hook-up wire

Circuit

Conectamos los tres cables a la placa Arduino. Los dos primeros, el rojo y el
negro, se conectan a las dos filas horizontales largas en el lado derecho del
protoboard para facilitar el acceso a la alimentacin de 5 voltios y tierra. El tercer
cable va desde pin digital 2 hasta una pata del pulsador. Esa misma pata del
pulsador se conecta a travs de una resistencia pull-down (aqu 10K Ohms) a
tierra. La otra pata del pulsador se conecta a la alimentacin de 5 voltios.
Los pulsadores o conmutadores conectan dos puntos en un circuito cuando se los
presiona. Cuando el pulsador est abierto (sin apretar) no hay ninguna conexin
entre las dos patas del pulsador, por lo que el pin est conectado a tierra (a
travs de la resistencia pull-down) y lee como BAJO, o 0. Cuando se cierra el
pulsador, se hace una conexin entre sus dos patas, conectando el pin a 5
voltios, de modo que el pin lee como ALTO, o 1.
Si desconectamos el pin I/O digital del todo, el LED puede parpadear de forma
errtica. Esto se debe a que la entrada es "flotante" es decir, que no tiene una
Ing. Ronald N. Kopp

Pgina 15

Arduino
conexin slida a la tensin o a tierra, y cambiar al azar a un estado, ya sea a
un ALTO o a un BAJO. Es por eso que se necesita una resistencia pull-down en el
circuito.

Schematic

Ing. Ronald N. Kopp

Pgina 16

Arduino

Code
En el programa a continuacin, la primera cosa que haremos en la funcin setup
ser comenzar la comunicacin serie, en 9600 bits de datos por segundo, entre
la placa Arduino y el ordenador con la lnea:
Serial.begin(9600);
Nombre
Ejemplo

serial
int val;
void setup() {
Serial.begin(9600); // Inicializa el puerto serial en 9600 baud
}

Descripci
n

Sintaxis
Mtodos

void loop() {
if ( Serial.available() > 0 ) // Si los datos estn disponibles para
leer
{
val = Serial.read();
// los lee y los almacena en 'val'
}
analogWrite(0, val);
}
El puerto serial Serial de Wiring permite fcilmente leer o escribir
datos hacia y desde un dispositivo externo. Permite comunicar dos
maquinas y da la flexibilidad de hacer sus propios dispositivos y
usarlos como entrada/salida de Wiring. El puerto serial es un puerto
de nueve pines que sola existir en la mayora de las PCs y puede
ser emulado a travs de un adaptador serial USB. El puerto Serial
est disponible en los pines 0(Rx) y 1(Tx). Las velocidades tpicas
son: 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 y
115200 baudios.
serial
begin()
Abre el puerto serial para leer o escribir
read()
Devuelve un nmero entre 0 y 255 para el siguiente
byte esperado por el buffer. Devuelve -1 si no hay
ningn byte, aunque esto debera ser evitado utilizando
available() para ver si hay datos que estn disponibles.
write()
Escribe un byte en el puerto serial
print()
Escribe datos (int, float, byte, char, char[], nmeros en
base (DEC, BIN, OCT or HEX) o Strings en el puerto
serial
println()
Funciona como el mtodo print pero imprime un
carcter y hace un salto de line cada vez que es
llamada la funcin
available() Devuelve el nmero de bytes disponibles.
peek()
Examina el siguiente byte que se encuentra disponible

Ing. Ronald N. Kopp

Pgina 17

Arduino

flush()

end()

en el buffer del puerto serial. Este mtodo no saca el


byte del buffer. Devuelve -1 si no hay datos disponibles
Vaca el buffer del puerto serial. Posteriormente se
llama read() y available() las cuales retornarn datos
recibidos despus del uso del comando flush()
Cierra el puerto serial

A continuacin, configuramos el pin digital 2, como una entrada. Este pin leer la
seal de salida desde el pulsador del circuito:
pinMode(2,INPUT);
Ahora que la configuracin se ha completado, pasamos a configurar el bucle.
Cuando se pulsa el pulsador, 5 voltios fluirn libremente a travs de nuestro
circuito, y cuando no se presione, el pin de entrada se conectar a tierra a travs
de la resistencia de 10kilo-ohmios. Esta es una entrada digital, lo que significa
que el pulsador slo puede estar en un estado encendido (visto por el Arduino
como un "1", o ALTO) o en un estado de apagado (visto por el Arduino como
un"0", o BAJO), sin nada en el medio.
Lo primero que hay que hacer en el bucle principal del programa es establecer
una variable para contener la informacin que viene del pulsador. Dado que la
informacin que viene del pulsador ser un "1" o un "0", se puede utilizar un tipo
de dato int. Llamaremos a esta variable sensorValue, y lo configuramos a que sea
igual a lo que se lee en el pin digital 2. Podemos lograr todo esto con una sola
lnea de cdigo:
int sensorValue = digitalRead (2);
Nombre
Ejemplo

digitalRead()
int inpin = 8;
int outpin = 9;
int val = 0;
void setup() {
pinMode(inpin, INPUT);
pinMode(outpin, OUTPUT);
}

Descripci
n
Sintaxis

void loop() {
val = digitalRead(inpin);
if (val == HIGH)
{
digitalWrite(outpin, HIGH);
} else {
digitalWrite(outpin, LOW);
}
}
Lee el estado (o valor) de un pin digital
digitalRead(pin)

Ing. Ronald N. Kopp

Pgina 18

Arduino
Parmetro
s

Pin

Int

Una vez que el Arduino ha ledo la entrada, se debe hacer que imprima esta
informacin a la computadora como un valor decimal. Para hacer esto utilizamos
el comando Serial.println() en nuestra ltima lnea de cdigo:
Serial.println (sensorValue);
Ahora, cuando se abra el monitor serial en el entorno Arduino, se ver una
corriente de "0"s si su interruptor est abierto, o "1"s si su interruptor est
cerrado.
// el Pin digital 2 tiene un pulsador unido a l. Le daremos un nombre:
int pushButton = 2;
// el setup se ejecuta de rutina una vez cuando se presiona RESET o se enciende
la placa:
void setup() {
// comienza la comunicacin serial a 9600 bits por segundo:
Serial.begin(9600);
// inicializamos alpulsador como una entrada:
pinMode(pushButton, INPUT);
}
// la rutina loop se ejecuta una y otra vez por siempre:
void loop() {
// leemos el pin de entrada:
int buttonState = digitalRead(pushButton);
// imprimimos el estado del botn:
Serial.println(buttonState);
delay(1);
// retraso entre las lectura para la estabilidad
}

Patas del usb

Ing. Ronald N. Kopp

Pgina 19

Arduino

Ing. Ronald N. Kopp

Pgina 20

Arduino

4. AnalogRead Serial: Lectura analgica serial


En este ejemplo se muestra cmo leer una entrada analgica del mundo fsico
mediante un potencimetro. Un potencimetro es un dispositivo mecnico simple
que proporciona una cantidad variable de resistencia cuando su eje se gira. Con
el paso de tensin a travs de un potencimetro y a travs de una entrada
analgica del Arduino, es posible medir el valor de resistencia producida por un
potencimetro (o un pot para abreviar) como un valor analgico. En este ejemplo
nosotros queremos monitorear el estado de nuestro potencimetro estableciendo
una comunicacin serie entre el Arduino y el ordenador.

Hardware Required
ArduinoBoard
10-kilohm Potentiometer

Circuit

Ing. Ronald N. Kopp

Pgina 21

Arduino

Conectamos los tres cables del potencimetro a la placa Arduino. La primera de


las patas exteriores del potencimetro va a tierra. La otra pata exterior va a los 5
voltios. Y la pata del medio, va a la entrada analgica 0.
Al girar el eje del potencimetro, cambia la cantidad de resistencia a cada lado
de las escobillas que estn conectado al terminal central del potencimetro. Esto
cambia el voltaje en el terminal central. Cuando la resistencia entre el centro y el
lado conectado a 5 voltios es cercana a cero (y la resistencia en el otro lado es
cerca de 10 kiloohmios), el voltaje en el terminal central se acerca a 5 voltios.
Cuando las resistencias se invierten, la tensin en el terminal central se acerca a
0 voltios, o tierra. Este voltaje es el voltaje analgico que se est leyendo como
una entrada.

Ing. Ronald N. Kopp

Pgina 22

Arduino

El Arduino tiene un circuito en el interior llamado convertidor analgico-digital


que lee ste cambio de voltaje y lo convierte a un nmero entre 0 y 1023.
Cuando el eje se gira todo el recorrido en una direccin, hay 0 voltios que van al
pin, y el valor de entrada es 0. Cuando el eje se gira todo el recorrido en la
direccin opuesta, hay 5 voltios que van al pin y el valor de entrada es 1023. En
el medio, analogRead() devuelve un nmero entre 0 y 1023 que es proporcional a
la cantidad de voltaje que se aplica al pin.

Schematic

Ing. Ronald N. Kopp

Pgina 23

Arduino

Ing. Ronald N. Kopp

Pgina 24

Arduino

Code
En el siguiente programa, lo primero que haremos en la funcin de configuracin,
es comenzar la comunicacin serie, en 9600 bits de datos por segundo, entre el
Arduino
y
el
ordenador
con
el
comando:
Serial.begin(9600);
A continuacin, en el bucle principal de nuestro cdigo, es necesario establecer
una variable para almacenar el valor de la resistencia (que estar entre 0 y 1023,
perfecto par un tipo de dato entero) que viene desde nuestro potencimetro:
int sensorValue = analogRead(A0);
Nombre
Ejemplo

analogRead()
int inpin = 0;
int val = 0;
void setup() {
Serial.begin(9600);
}

Descripci
n
Sintaxis
Parmetro

void loop() {
val = analogRead(inpin);
// lee el valor de entrada del pin
anlogo 0
Serial.println(val);
// escribe el valor al puerto serial
El comando analogRead() lee el valor de un pin anlogo. Los
valores posibles estn en el rango 0-1023, donde 0 es 0 voltios y
1023 es 5 voltios.
analogRead(pin)
Pin

Int: nmero del pin anlogo que se quiere leer

Por ltimo, es necesario imprimir esta informacin para que el monitor serial lo
muestre como un valor decimal(DEC). Nosotros haremos esto con el comando
Serial.println()
con
la
lnea
de
cdigo:
Serial.println (sensorValue, DEC)
Ahora, cuando se abre el monitor de serial en el entorno de desarrollo Arduino,
Ing. Ronald N. Kopp

Pgina 25

Arduino
debera verse un flujo constante de nmeros que van desde 0 hasta 1023, en
correlacin con la posicin del potencimetro. A medida que gira el
potencimetro, estas cifras responden casi al instante.
// el setup se ejecuta de rutina una vez cuando se presiona RESET o se enciende
la placa:
void setup() {
// comienza la comunicacin serial a 9600 bits por segundo:
Serial.begin(9600);
}
// la rutina loop se ejecuta una y otra vez por siempre:
void loop() {
// lee el valor de entrada del pin analgico 0:
int sensorValue = analogRead(A0);
// imprime el valor que se lee:
Serial.println(sensorValue);
delay(1);
// Retraso entre las lectura para la estabilidad (el punto y coma
cierra la sentencia)
}

Ing. Ronald N. Kopp

Pgina 26

Arduino

5. Fading : disminucin temporal de la intensidad de las seales radio elctricas.


Este ejemplo de muestra el uso de la funcin analogWrite() en la decoloracin de
un LED apagndolo y encendindolo. AnalogWrite() utiliza la modulacin
mediante pulsos (PWM), incrementando o decrementando la seal de salida
mediante pequeos intervalos, para crear un efecto de iluminacin o atenuacin.

Hardware Required
Arduinoboard
Breadboard
a LED
a 220 ohm resistor

Circuit
Conectamos el nodo (la pata ms larga, positivo) de nuestro LED al pin de salida
digital 9 en nuestro Arduino a travs de una resistencia de 220 ohmios. Y
Conectamos el ctodo (la pata ms corta, negativo) directamente a tierra.
Ing. Ronald N. Kopp

Pgina 27

Arduino

Schematic

Ing. Ronald N. Kopp

Pgina 28

Arduino

Code
Ing. Ronald N. Kopp

Pgina 29

Arduino
Despus de configurar el pin 9 como una salida, no hay nada ms quehacer en el
comando setup () de nuestro cdigo.
pinMode(led, OUTPUT);

La funcin analogWrite() que se va a utilizar en el bucle principal de nuestro


cdigo requiere dos argumentos: Aquel que le diga a la funcin en que pin va a
escribir, y uno que le indique cul es el valor de PWM que debe escribir.
analogWrite(led, brightness);

Nombre
Ejemplo

analogWrite()
int outpin = 29;
int val = 0;
void setup() {
}

Descripci
n

Sintaxis
Parmetro

void loop() {
analogWrite(outpin, val); // escribe un valor en el pin 29 PWM
val = (val + 10) % 255; // incrementa el valor y lo mantiene en el
rango 0-255
}
El comando analogWrite() asigna un valor en el pin de salida PWM.
Los valores posibles por defecto estn en el rango de 0-255 (ver el
comando setPWMResolution()). Nota: analogWrite es un alias para el
comando PWMWrite(). Usar analogWrite() en un pin sin capacidad
PWM hace que el pin sea colocado en HIGH sin ningn otro efecto.
analogWrite(pin, valor)
Pin
Valor

Int: el nmero del pin de salida PWM


Int: un valor en el rango de 0 - 255

Con el fin de atenuar el LED apagndolo y encendindolo, aumentamos


gradualmente su valor PWM de 0 (completamente apagado) a 255
(completamente encendidos) y, a continuacin, de nuevo a 0 una vez ms para
completar el ciclo. En el boceto de abajo, el valor PWM se ajusta mediante una
variable llamada brightness. Cada vez que pasa a travs del bucle, aumenta el
valor de la variable en fadeAmount.
brightness = brightness + fadeAmount;
int fadeAmont = 5
Ing. Ronald N. Kopp

Pgina 30

Arduino
Si el brillo llega a los extremos en cualquiera de sus valores (0 255), entonces
fadeAmount se cambia a negativo. En otras palabras, si fadeAmount es 5, cuando
brightness llegue a 255 fadeAmountse se establecer en -5. Esto har que vaya
disminuyendo la intensidad en escalones de 5, hasta llegar a 0. Al llegar a este
valor fadeAmount cambiar nuevamente de -5 a 5 y esto har que vaya
aumentando en escalones de 5 hasta llegar a 255. Como vemos el brillo no solo
cambia de atenuacin sino tambin de direccin.

if (brightness == 0 || brightness == 255) {


fadeAmount = -fadeAmount ;
};

Nombre
Ejemplo

Descripci
n

Sintaxis

if()
true || false // Evala verdadero porque el primero es verdadero
false || true // Evala verdadero porque el segundo es verdadero
true || true // Evala verdadero porque ambas son verdadero
false || false // Evala falso porque ambas son falso
Permite al programa tomar una decisin sobre que bloque de cdigo
ejecutar. Si la expresin evala true, las instrucciones encerradas
en bloque son ejecutadas y si la expresin evala false las
instrucciones no son ejecutada
if (expresin) {
declaraciones
}

Parmetro
Expresin
Declaraci
n

Nombre
Ejemplo

Descripci
n
Sintaxis
Parmetro

Cualquier expresin que evale true o false


Una o ms instrucciones para ser ejecutadas

== (equality)
int a = 23;
int b = 23;
if (a == b) {
Serial.print("las variables a y b son iguales");
}
Determina si dos valores son equivalentes. El operador de igualdad
es diferente del operador de asignacin
valor1 == valor2
Valor1
Valor2

Ing. Ronald N. Kopp

int, float, char, byte, boolean


int, float, char, byte, boolean
Pgina 31

Arduino

Nombre
Ejemplo

Descripci
n

Sintaxis
Parmetro

|| (logical OR)
true || false // Evala verdadero porque el primero es verdadero
false || true // Evala verdadero porque el segundo es verdadero
true || true // Evala verdadero porque ambas son verdadero
false || false // Evala falso porque ambas son falso
Permite al programa tomar una decisin sobre que bloque de cdigo
ejecutar. Si la expresin evala true, las instrucciones encerradas
en bloque son ejecutadas y si la expresin evala false las
instrucciones no son ejecutada
expresin1 || expresin2
Expresin
1
Expresin
2

Cualquier expresin vlida


Cualquier expresin vlida

Como vemos el brillo no solo cambia de atenuacin sino tambin de direccin.

analogWrite() permite cambiar el valor PWM muy fcilmente, por que el retraso
(dalay) al final del boceto controla la velocidad de atenuacin (fade). Intentemos
cambiar el valor de demora (dalay) y ver cmo cambia el programa.
delay(30);

int led = 9;
int brightness = 0;
int fadeAmount = 5;

// el pin que el LED est conectado


// lo brillante que esta el LED
// cuantos escalones se desvanecer el LED por vez

// el setup se ejecuta de rutina una vez cuando se presiona RESET o se enciende


la placa:
void setup() {
// inicializamos el pin 9 como una salida:
pinMode(led, OUTPUT);
}
// la rutina loop se ejecuta una y otra vez por siempre:
void loop() {
// escribimos el valor de la variable brightness en el pin 9:
analogWrite(led, brightness);
// cambiamos el brillo para la prxima vez que se traviese el bucle:
Ing. Ronald N. Kopp

Pgina 32

Arduino
brightness = brightness + fadeAmount;
// invertimos la direccin de la decoloracin en los extremos de la atenuacin:
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// Esperarmos 30 milisegundos para ver el efecto de atenuacin
delay(30);
}

6. Analog Read Voltage: lectura analgica de tensin


En este ejemplo se muestra cmo leer una entrada analgica sobre el pin 0,
convertir los valores de analogRead() en tensin, e imprimirlo en el monitor
serial.

Hardware Required
ArduinoBoard
a variable resistor, like a potentiometer

Circuit

Ing. Ronald N. Kopp

Pgina 33

Arduino

Conectamos los tres cables del potencimetro a la placa Arduino. La primera de


las patas exteriores del potencimetro va a tierra. La otra pata exterior va a los 5
voltios. Y la pata del medio, va a la entrada analgica A0.
Al girar el eje del potencimetro, cambia la cantidad de resistencia a cada lado
de la escobilla que est conectado al terminal central del potencimetro. Esto
cambia el voltaje en el terminal central. Cuando la resistencia entre el centro y el
lado conectado a 5 voltios es cercana a cero (y la resistencia en el otro lado est
cerca de 10 kiloohmios), el voltaje en el terminal central se acerca a 5 voltios.
Cuando las resistencias se invierten, la tensin en el terminal central se acerca a
0 voltios, o tierra. Este voltaje es el voltaje analgico que se est leyendo como
una entrada.
El Arduino tiene un circuito en el interior llamado convertidor analgico-digital
que lee este cambio voltaje y lo convierte a un nmero entre 0 y 1023. Cuando el
eje gira todo el recorrido en una direccin, hay 0 voltios que van al pin 0, y el
valor de entrada es 0. Cuando el eje gira todo el recorrido en la direccin
opuesta, hay 5 voltios que van al pin 0 y el valor de entrada es 1023. En el
medio, analogRead() devuelve un nmero entre 0 y 1023 que es proporcional a la
cantidad de voltaje que se aplica al pin.
Schematic

Ing. Ronald N. Kopp

Pgina 34

Arduino

Code
En el siguiente programa, lo nico que haremos en la funcin de configuracin,
es comenzarla comunicacin serie, en 9600 bits de datos por segundo, entre el
Arduino
y
el
ordenador
con
el
comando:
Serial.begin(9600);
Ing. Ronald N. Kopp

Pgina 35

Arduino
A continuacin, en el bucle principal de nuestro cdigo, es necesario establecer
una variable para almacenar el valor de la resistencia (que estar entre 0 y 1023,
perfecto par un tipo de dato entero) que viene desde nuestro potencimetro:
int sensorValue = analogRead(A0);
Para cambiar los valores de 0 a 1023 en un rango que corresponda a la tensin
que la clavija est leyendo, tendremos que crear otra variable, un float, y hacer
un poco de matemticas. Para crear un factor de escala entre 0,0 y 5,0, dividimos
5,0 por 1023,0 y luego lo multiplicamos por sensorValue:
float voltage = sensorValue * (5.0 / 1023.0);
Nombre
Ejemplo

Descripci
n

Sintaxis

float
float a;
a = 1.5387;
float b = -2.984;
float c = a + b;
y "b"

// Declara la variable "a" de tipo float


// Asigna a "a" el valor 1.5387
// Declara la variable "b" y le asigna el valor -2.984
// Declara la variable "c" y le asigna la suma de "a"

Tipo de datos para nmeros de punto flotante, un nmero que tiene


un punto decimal. Los nmeros de punto flotante son usados
frecuentemente para aproximar valores anlogos y continuos
porque tienen ms resolucin que los enteros. Los nmeros de tipo
float pueden ser tan grandes como 3.4028235E+38 y tan pequeos
como -3.4028235E+38. Estos son almacenados como 32 bits (4
bytes) de informacin
float var
float var = valor

Parmetro
Var
Valor

Nombre de variable referenciada al nmero de punto


flotante
cualquier valor de punto flotante

Por ltimo, es necesario imprimir esta informacin para que el monitor serial lo
muestre como un valor decimal (DEC). Nosotros haremos esto con el comando
Serial.println()
con
la
lnea
de
cdigo:
Serial.println(voltage)
Ahora, cuando abrimos el monitor serial en el entorno Arduino, deberamos ver
un flujo constante de nmeros que van desde 0,0 hasta 5,0. A medida que se gira
el potencimetro, esto corresponder a la tensin de entrada en el pin A0.

Ing. Ronald N. Kopp

Pgina 36

Arduino
// el setup se ejecuta de rutina una vez cuando se presiona RESET o se enciende
la placa:
void setup() {
// comienza la comunicacin serial a 9600 bits por segundo:
Serial.begin(9600);
}
// la rutina lopp se ejecuta una y otra vez por siempre:
void loop() {
// leeos la entrada del pin analgico 0 y lo almacenamos en la variable
sensorValue:
int sensorValue = analogRead(A0);
// convertirmos la lectura analgica (que va desde 0 hasta 1023) en un voltaje (0
- 5V):
float voltage = sensorValue * (5.0 / 1023.0);
// imprimimos el valor que se leer:
Serial.println(voltage);
}

Ing. Ronald N. Kopp

Pgina 37

Arduino

Ing. Ronald N. Kopp

Pgina 38

Вам также может понравиться