Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ES
Unas Palabras
Acerca De .:oomlout:.
Somos una pequeña y valerosa empresa centrada en producir
"productos de código abierto encantadoramente divertidos"
Para ver lo que hacemos
http://www.oomlout.com
Acerca De SparkFun
SparkFun es una joven energética empresa que busca hacer la electrónica, accesible y amigable a
todo el mundo - desde niños en educación primaria a ingenieros con un PhD.
http://www.sparkfun.com/
Antes de Empezar
{MONT} Montando las Piezas 2
{INST} Instalando el Software 3
{PROG} Una Introducción a la Programación 4
{ELEC} Una Introducción a la Electrónica 6
Los Circuitos
{CIRC01} Primeros Pasos - (LED Parpadeante) 8
{CIRC02} Diversión con 8 LED - (Múltiples LED) 10
{CIRC03} Gira Motor Gira - (Transistor y Motor) 12
{CIRC04} Un Solo Servo - (Servos) 14
{CIRC05} 8 LEDs Más - (Registro de desplazamiento 74HC595)
16
{CIRC06} Música - (Elementos Piezoeléctricos) 18
{CIRC07} Apretando Botones - (Botón pulsador) 20
{CIRC08} Girando - (Potenciómetros) 22
{CIRC09} Luz - (Fotorresistencia) 24
{CIRC10} Temperatura - (Sensor de Temperatura TMP36)26
{CIRC11} Cargas Grandes - (Relés) 28
{CIRC12} Luz Colorida - (LEDs RGB) 30
{CIRC13} Midiendo Flexiones - (Sensor de Flexión) 32
{CIRC14} Sensado Estravagante - (Potenciómetro Táctil) 34
1
01 MONT .: Construyéndolo :.
montando las
piezas
a programación
Estructura
Cada programa de Arduino void setup(){ } void loop(){ }
Todo el código entre las dos Esta función se ejecuta una vez
(normalmente llamado
llaves será ejecutado una única 'setup' haya finalizado. Después
'sketch') requiere de dos vez cuando tu programa de de haber sido ejecutada una vez,
funciones (también Arduino sea iniciado. se ejecutará otra vez y otra, hasta
Sintáxis
Uno de los elementos // (comentario de /* */(comentario
frustrantes de C es el una línea) multilínea)
Es últil para escribirse notas a uno Si tienes mucho que decir, puedes
formato del código (ésto lo mismo sobre lo que hace cada extenderte por varias líneas. Todo
hace a su vez muy línea de código. Para esto, escribe lo que quede entre estos dos
potente). Si recuerdas lo dos barras y todo hasta el final de símbolos será ignorado en tu
la línea será ignorado por tu programa.
siguiente no deberías tener
programa.
Variables
Un programa no es otra cosa que int (integer) long (long)
instrucciones para mover números El caballo de batalla, almacena Usado cuando un entero no es lo
de un lado a otro de forma números en 2 bytes (16 bits). No suficientemente grande. Usa 4
inteligente. Las variables son tiene decimales y almacenará un bytes (32 bits) de RAM y tiene un
usadas para esa tarea. valor entre -32,768 y 32,767. rango entre -2,147,483,648 y
4
03 PROG
.:Para una referencia completa visita:. programming
http://ardx.org/PROG
primer
Operadores Matemáticos
Err:520
Operadores usados para
manipular números
(funcionan como simples
Operadores de Comparación
Err:520
Operadores usados para
comparaciones lógicas.
Estructura de Control
Los programas dependen if( condición ){ } for(int i = 0
else if( condición ){ } Usado cuando quieres repetir un trozo
de controlar lo que se else { } de código un número de veces
ejecuta a continuación, Ésto ejecutará el código entre las (puedes contar hacia arriba i++ o
llaves si la condición es verdadera y si hacia abajo i-- o usar cualquier
aquí están los elementos no comprobará la condición else if y si variable)
también es falso se ejecutará el código
del else.
Digital
pinMode(pin, modo); pinMode(pin, modo); digitalWrite(pin,
Usado para configurar el modo Usado para configurar el modo valor);
del pin, pin es el número de pin del pin, pin es el número de pin Una vez un pin se configura como
que quieras usar de 0 a 19 (los que quieras usar de 0 a 19 (los OUTPUT (salida), puedes
analógicos 0-5 son 14-19). El analógicos 0-5 son 14-19). El establecerlo como HIGH (alto,
modo puede ser entrada o salida. conectado a 5 voltios) o LOW
Analógico
Arduino es una máquina int analogRead(pin)
0 digital pero tiene la Cuando los pines analógicos de
habilidad de operar en el entrada son establecidos como
mundo analógico (mediante
trucos). He aquí cómo entradas puedes leer su
lidiar con cosas que no voltaje. Se devolverá
son digitales. un valor entre 0
int analogWrite(pin, (para 0 voltios) y
valor);
5
04 ELEC
.:Una Introducción a la Electrónica:.
introducción a
la electrónica
Electronics in Brief
No previous electronic experience is required to have fun with this kit. Here are a few details
about each component to make identifying, and perhaps understanding them, a bit easier. If at
any point you are worried about how a component is used or why it's not working the internet
offers a treasure trove of advice, or we can be contacted at help@oomlout.com
Detalle de Componentes
LED Que hace Nº de Patillas
(Diodo Emisor deluzLuz)
Emite cuando una pequeña corriente lo 2 (una más larga, ésta se conecta al positivo)
atraviesa. (en una única dirección) Cosas a tener en cuenta
Identificador - Solo funciona en una dirección
Se parece a una pequeña bombilla. - Necesita una resistencia limitadora de
corriente
Más Detalles
6
04 ELEC
introducción a
Potenciómetro Nº de Patillas
Que hace
Produce una resistencia variable 3
dependiendo de la posición angular del eje. Cosas a tener en cuenta
Identificador - Comprar accidentalmente los de escala
Pueden estar empaquetados de formas muy logaritmica.
distintas, busca un eje para identificarlo. Más Detalles
http://ardx.org/POTE
Fotorresistencia Nº de Patillas
Que hace
Produce una resistencia variable que 2
depende de la cantidad de luz que incide en Cosas a tener en cuenta
ella. - Recuerda que necesita estar en un divisor
Identificador de tensión antes de que pueda sacar
Normalmente un pequeño disco con una información útil.
superficie lisa y una línea serpenteante que Más Detalles
Si tienes problemas subiendo el programa, una completa guía de resolución de problemas puede
encontrarse en: http://ardx.org/TRBL
El Circuito
Componentes:
CIRC-01 Conector 2 Pines LED Amarillo 5mm Cable
Plantilla Protoboard x4 x1
x1
Esquemático
Arduino
pin 13
patilla larga
+
LED
(diodo emisor de luz)
Resistencia (330ohm)
(naranja-naranja-marrón)
Arduino
pin 13
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS01S
.:view:.
video de montaje
http://ardx.org/VIDE01
8
Código (no hace falta escribir, sólo unos clicks)
CIRC-01
File > Examples > 1.Basic > Blink
ejemplo de la genial página arduino.cc, échale un vistazo para otras ideas)
a
/* Blink
* Enciende un LED por un segundo, entonces lo apaga por otro,
* repetidamente.
* Created 1 June 2005 By David Cuartielles
* http://arduino.cc/en/Tutorial/Blink
* based on an orginal by H. Barragan for the Wiring i/o board
*/
va a dañar).
Mejorándolo
Cambiando el pin: digitalWrite(ledPin, HIGH);
El LED está conectado al pin 13, pero podemos usar delay(tiempo on); //(segundos * 1000)
cualquier pin del Arduino. Para cambiarlo, coge el cable digitalWrite(ledPin, LOW);
conectado al pin 13 y conéctalo al pin de tu elección (de delay(tiempo off); //(segundos * 1000)
0-13) (puedes usar los analógicos 0-5, el analógico 0 es
14...) Control del brillo:
Además del control digital (encendido/apagado), el Arduino
Entonces en el código cambia la línea: puede controlar algunos pines de forma analógica (brillo).
int ledPin = 13; -> int ledPin = nuevopin; (más detalle sobre ésto en los próximos circuitos). Para
jugar con él.
Ahora sube el sketch: (ctrl-u)
Cambia el LED al pin 9: (también cambia el cable)
Cambiar el tiempo de parpadeo: ledPin = 13; -> int ledPin = 9;
¿Descontento con un segundo encendido y otro apagado?
Reemplaza el código dentro de las llaves de loop() con:
En el código cambia las líneas:
Además de controlar el LED, veremos unos simples métodos de programación para mantener
nuestros programas pequeños.
bucles for() - usados cuando quieres ejecutar un trozo de código varias veces.
vectores[] - usados para controlar varias variables de forma sencilla (es un grupo de variables).
El Circuito
Componentes:
CIRC-02 Conector 2 pines LED Amarillo 5mm Cable
Plantilla Protoboard x4 x8
x1
Esquemático
LED
0
0
Pin 6 Pin 7 Pin 8 Pin 9
LED
0
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS02S
.:view:.
video de montaje
http://ardx.org/VIDE02
10
Código (no hace falta escribir, sólo unos clicks)
CIRC-02
Descarga el código desde ( http://ardx.org/CODE02 )
luego copia el texto y pégalo en un sketch vacío de Arduino)
void setup()
{
for(int i = 0; i < 8; i++){
//es un bucle y se repetirá ocho veces
pinMode(ledPins[i],OUTPUT);
//usamos ésto para establecer los pines como salida
}
}
Mejorándolo
Cambiando entre bucles: programa a tu placa para ver las nuevas animaciones.
En la función loop() hay 4 líneas. Las tres últimas empiezan (borra las barras al principio de las líneas 3 y 4)
con '//'. Ésto significa que la línea es tratada como
comentario (no se ejecuta). Para hacer que el programa use Probando tus propias animaciones:
otros bucles cambia el código de void loop() a: Lánzate al código y empieza a cambiar cosas. La idea
//oneAfterAnotherNoLoop(); general es encender un LED con digitalWrite(numeroPin,
oneAfterAnotherLoop(); HIGH); y después apagarlo con digitalWrite(numeroPin,
//oneOnAtATime(); LOW); . Empieza a escribir, cualquier cosa que cambies no
//inAndOut(); romperá nada.
El Circuito
Componentes:
CIRC-03 Conector 2 pines Transistor Cable
Plantilla Protoboard x4 P2N2222AG (TO92)
x1 x1
Esquemático
Arduino
pin 9
resistencia
(10kohm)
Transistor
Base P2N2222AG
Colector Emisor
Diodo
(1N4001) Motor de Juguete
gnd
(masa) (-)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS03S
.:view:.
video de montaje
http://ardx.org/VIDE03
12
Código (no hace falta escribir, sólo unos clicks)
CIRC-03
Descarga el código desde ( http://ardx.org/CODE03 )
entonces simplemente copia el texto y pégalo en un sketch vacío de Arduino)
int motorPin = 9; //pin al que el motor está conectado
/*
* motorOnThenOff() - enciende el motor y luego lo apaga
* (fíjate en que este código es idéntico al usado para
* el LED parpardeante)
*/
void motorOnThenOff(){
int onTime = 2500; //tiempo on
int offTime = 1000; //tiempo off
digitalWrite(motorPin, HIGH);
// enciende el motor On
delay(onTime); // espera onTime milisegundos
Mejorándolo
Controlling speed: motorOnThenOffWithSpeed();
We played with the Arduino's ability to control the // motorAcceleration();
brightness of an LED earlier now we will use the same Then upload the program. You can change the speeds by
feature to control the speed of our motor. The Arduino does changing the variables onSpeed and offSpeed.
this using something called Pulse Width Modulation (PWM).
This relies on the Arduino's ability to operate really, really Accelerating and decelerating:
fast. Rather than directly controlling the voltage coming Why stop at two speeds, why not accelerate and decelerate
from the pin the Arduino will switch the pin on and off very the motor. To do this simply change the loop() code to read
quickly. In the computer world this is going from 0 to 5 volts // motorOnThenOff();
many times a second, but in the human world we see it as a // motorOnThenOffWithSpeed();
voltage. For example if the Arduino is PWM'ing at 50% we motorAcceleration();
see the light dimmed 50% because our eyes are not quick
enough to see it flashing on and off. The same feature Then upload the program and watch as your motor slowly
works with transistors. Don't believe me? Try it out. accelerates up to full speed then slows down again. If you
In the loop() section change it to this would like to change the speed of acceleration change the
// motorOnThenOff(); variable delayTime (larger means a longer acceleration
El Circuito
Componentes:
CIRC-04 Conector 2 pines Conector 3 pines Cable
Plantilla Protoboard x4 x1
x1
Mini Servo
x1
Esquemático
Arduino
pin 9
Mini Servo
señal (blanco)
5v (rojo)
gnd (negro)
gnd
(masa) (-)
5 voltios
(5V)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS04S
.:view:.
video de montaje
http://ardx.org/VIDE04
14
Código (no hace falta escribir, sólo unos clicks)
CIRC-04
File > Examples > Servo > Sweep
example from the great arduino.cc site, check it out for other great ideas)
// Sweep
// by BARRAGAN <http://barraganstudio.com>
#include <Servo.h>
Servo myservo
Mejorándolo
Control con potenciómetro: int servoPin = 9;
Todavía tenemos que experimentar con las entradas, pero si
sigues leyendo hay un programa de ejemplo File > void setup(){
Examples > Servo > Knob. Ésto usa un potenciómetro pinMode(pinServo,OUTPUT);
(CIRC08) para controlar un servo. Puedes encontrar }
instrucciones en la web aquí: http://ardx.org/KNOB
void loop() {
Self timing: int tiempoPulso = 2100; //(el número de microsegundos
Aunque es fácil controlar un servo usando la librería incluida //a parar (1500 90º
en Arduino, es divertido averiguar como programar algo tú // 900 0º 2100 180º)
mismo. Pruébalo. Estamos controlando el pulso digitalWrite(pinServo, HIGH);
directamente, por lo que podemos usar este método para delayMicroseconds(tiempoPulso);
controlar servos en cualquiera de los 20 pines disponibles digitalWrite(pinServo, LOW);
del Arduino (necesitas optimizar mucho este código antes delay(25);
de hacer eso). }
El Circuito
Componentes:
CIRC-05 Conector 2 pines Registro de Desplazamiento
Cable
Plantilla Protoboard x4 74HC595
x1 x1
Esquemático
pin pin pin 5 voltios
4 3 2
74HC595
0
0
+5V 0
1
0
2
data 3
clock 4
latch
5
6
0 7
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS05S
.:view:.
video de montaje
http://ardx.org/VIDE05
16
Código (no hace falta escribir, sólo unos clicks)
CIRC-06
Descárgate el código desde ( http://ardx.org/CODE06 )
copia el texto y pégalo en un sketch vacío de Arduino)
/* Melody
* (cleft) 2005 D. Cuartielles for K3
*
* Éste ejemplo usa un altavoz piezoeléctrico para reproducir canciones. Manda
* una onda cuadrada de la frecuencia apropiada al piezo,
* generando el tono correspondiente.
*
* El cálculo de los tonos se realiza mediante la siguiente
* operación matemática:
*
* timeHigh = periodo / 2 = 1 / (2 * frecuenciaTono)
*
* los diferentes tonos son descritos en la siguiente tabla:
*
* nota
Mejorándolo
Jugando con la velocidad: char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' };
La temporización para cada nota está calculada mediante int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014,
variables, de esta manera podemos modificar el sonido de 956 };
cada nota o la temporización. Para cambiar la velocidad de
la canción necesitas cambiar sólo una línea. Componiendo tus canciones:
int tempo = 300; ---> int tempo = (nuevo nº) El programa está preconfigurado para reproducir 'Twinkle
Cámbialo a un número mayor para decelerar la canción, o a Twinkle Little Star', aunque está programado de manera
un número menor para acelerarla. que cambiar la canción sea sencillo. Cada canción está
Afinando las notas: definida por un entero y dos vectores, el entero length
Si te preocupa que las notas estén un poco desafinadas, define el número de notas, el primer vector notes[] define
también puede arreglarse. Las notas han sido calculadas las notas, y el segundo beats[] define durante cuanto se
mediante una fórmula en el bloque de comentarios al reproducen. Algunos ejemplos:
principio del programa. Pero para ajustar notas individuales, Twinkle Twinkle Little Star
sólo ajusta su valor en el vector tones[] hasta que suenen int length = 15;
bien. (cada nota coincide con su nombre en el vector name char notes[] = {"ccggaagffeeddc "};
[] (p.e. c = 1915 ) int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
El Circuito
Componentes:
CIRC-06 Conector 2 pines Elemento Piezoleléctrico Cable
Plantilla Protoboard x4 x1
x1
Esquemático
Arduino
pin 9
Elemento
Piezoeléctrico
gnd
(masa) (-)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS06S
.:view:.
video de montaje
http://ardx.org/VIDE06
18
Código (no hace falta escribir, sólo unos clicks)
TOKO-06
Prenesite kodo iz ( http://ardx.org/CODE06 )
in jo s kopirajte v Arduin skech)
/* Melody
* (cleft) 2005 D. Cuartielles for K3
*
* This example uses a piezo speaker to play melodies. It sends
* a square wave of the appropriate frequency to the piezo,
* generating the corresponding tone.
*
* The calculation of the tones is made following the
* mathematical operation:
*
* timeHigh = period / 2 = 1 / (2 * toneFrequency)
*
* where the different tones are described as in the table:
*
* note
Mejorándolo
Igranje z hitrostjo izvajanja: 956 };
Izračun timinga temelji na spremenljivkah, torej lahko
spremenimo zvok note ali timinga. Za spreminjanje hitrosti Sestavljanje svojih melodij:
spremenimo samo eno vrstco. Program je prednastavljen da zaigra "Mala zvezdica" ampak
int tempo = 300; ---> int tempo = (novo št.) je s programiran tako, da je spreminjanje not preprosto.
Če bo št. večje bomo melodijo upočasnili, v obratnem Vsaka melodija je opredeljena v enem int in dveh poljih, int
primeru pospešili. length opredeli število not, prvo polje notes[] opredeli
Nastavljanje not: posamezno noto,in drugo polje beats[] opredeljuje, kako
Če ste zaskrbljeni, da toni niso pravilno uglašeni, se da tudi dolgo traja posamezna nota. Nekaj primerov:
za to poskrbeti. Note so bile izračunane po formuli komentar Twinkle Twinkle Little Star
na vrhu skech-a. lahko pa tudi uglasite posamezne tone. int length = 15;
Samo spreminjajte posamezne vrednosti v tones[] (vsaka char notes[] = {"ccggaagffeeddc "};
nota je povezana z imenom v names[] (npr. c = 1915 ) int beats[] = { 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1,
1, 1, 2, 4 };
char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; Happy Birthday (first line)
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, int length = 13;
El Circuito
Componentes:
CIRC-07 Conector 2 pines Botón Cable
Plantilla Protoboard x4 x2
x1
Esquemático Arduino
Pin 2 Pin 3
Arduino 5 voltios
pin 13
resistencia
(pull-up)
LED (10k ohm)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS07S
.:view:.
video de montaje
http://ardx.org/VIDE07
20
Código (no hace falta escribir, sólo unos clicks)
CIRC-07
File > Examples > 2.Digital > Button
ejemplo de la genial página arduino.cc, échale un vistazo para otras ideas)
/*
* Botón
* por DojoDave <http://www.0j0.org>
*
* Enciende y apaga un diodo emisor de luz (LED) conectado al pin digital
* 13, cuando se aprieta el botón conectado al pin 7.
* http://www.arduino.cc/en/Tutorial/Button
*/
int ledPin = 13; // pin al que está conectado al LED
int inputPin = 2; // pin de entrada (para el botón)
int val = 0; // variable para leer el estado del pin
void setup() {
pinMode(ledPin, OUTPUT); // declarar el LED como salida
pinMode(inputPin, INPUT); // declarar el botón como entrada
}
void loop(){
val = digitalRead(inputPin); // leer el valor de entrada
if (val == HIGH) { // comprobar si es ALTO
digitalWrite(ledPin, LOW); // apagar el LED
} else {
digitalWrite(ledPin, HIGH); // encender el LED
}
}
Mejorándolo
On button off button: void loop(){
El ejemplo inicial puede ser un poco decepcionante (p.e. No if (digitalRead(inputPin1) == LOW) {
necesito un Arduino para hacer esto), hagámoslo un poco digitalWrite(ledPin, LOW); // apagar LED
más complicado . Un botón encenderá el LED y otro lo } else if (digitalRead(inputPin2) == LOW) {
apagará. Cambia el código a: digitalWrite(ledPin, HIGH); // encender LED
int ledPin = 13; // pin al que está conectado el LED }
int inputPin1 = 3; // botón 1 }
int inputPin2 = 2; // botón 2 Sube el programa a tu placa y empieza a encender y apagar
el LED.
void setup() { Fading up and down:
pinMode(ledPin, OUTPUT); // declarar LED como salida Usemos los botones para controlar una señal analógica.
pinMode(inputPin1, INPUT); // declarar botón 1 como Para esto necesitarás cambiar el cable al que está
entrada conectado el LED del pin 13 al 9, también cámbialo en el
pinMode(inputPin2, INPUT); // declarar botón 2 como código.
entrada int ledPin = 13; ----> int ledPin = 9;
} Luego cambia el código del loop().
El Circuito
Componentes:
CIRC-08 Conector 2 pines Potenciómetro Cable
Plantilla Protoboard x4 10k ohm
x1 x1
Esquemático
Arduino 5 voltios
pin 13
Arduino
analógico
Potenciómetro pin 0
LED
(diodo
emisor
de luz)
resistencia (330ohm)
(naranja-naranja-marrón)
gnd
(masa) (-)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS08S
.:view:.
video de montaje
http://ardx.org/VIDE08
22
Código (no hace falta escribir, sólo unos clicks)
CIRC-08
File > Examples > 3.Analog > AnalogInput
ejemplo de la genial página arduino.cc, échale un vistazo para otras ideas)
/* Analog Input
* Muestra el uso de la entrada analógica mediante la lectura de un sensor analógico en el pin
* analógico 0 y encendiendo y apagando un diodo emisor de luz (LED) conectado al pin digital 13.
* El tiempo que el LED estará encendido o apagado dependerá del valor obtenido por
* analogRead().
* Creado por David Cuartielles
* Modificado 16 Jun 2009
* Por Tom Igoe
* http://arduino.cc/en/Tutorial/AnalogInput
*/
void setup() {
pinMode(ledPin, OUTPUT); // declara ledPin como salida:
}
void loop() {
sensorValue = analogRead(sensorPin);// lee el valor del sensor:
digitalWrite(ledPin, HIGH); // enciende ledPin
delay(sensorValue); // para el programa durante <sensorValue> milisegundos:
digitalWrite(ledPin, LOW); // apaga ledPin:
Mejorándolo
Conmutando con límites: potenciómetro. Para hacer ésto necesitamos cambiar el pin
A veces querrás conmutar una salida cuando un valor al que está conectado el LED. Mueve el cable del pin 13 al
exceda un límite determinado. Para hacer ésto con un pin 9 y cambia una línea en el código.
potenciómetro, cambia el código del loop() a. int ledPin = 13; ----> int ledPin = 9;
Ahora cambia el código del loop() a.
void loop() { void loop() {
int threshold = 512; int value = analogRead(potPin) / 4;
if(analogRead(sensorPin) > threshold){ digitalWrite(ledPin, analogWrite(ledPin, value);
HIGH);} }
else{ digitalWrite(ledPin, LOW);} Sube el código a la placa y mira como el LED cambia su
} brillo en relación con el giro del potenciómetro. (Nota: la
Ésto hará que el LED se encienda cunado el valor supere razón por la que dividimos el valor por 4 es debido a que la
512 (hacia la mitad), puedes ajustar la sensibilidad función analogRead() devuelve un valor de 0 a 1023 (10
ajustando el valor límite. bits) y analogWrite() toma un valor de 0 a 255 (8 bits) )
Controlando el brillo: Controlando un servo:
Controlemos el brillo de un LED directamente con el Este es un muy buen ejemplo y hace uso de un par de
El Circuito
Componentes:
CIRC-09 Conector 2 pines Fotorresistencia Cable
Plantilla Protoboard x4 x1
x1
Esquemático
Arduino
pin 13 5 voltios
resistencia
(10k ohm)
LED Arduino
pin 0
analógico
resistencia fotorresistencia
(330ohm)
gnd
(masa) (-)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS09S
.:view:.
video de montaje
http://ardx.org/VIDE09
24
Código (no hace falta escribir, sólo unos clicks)
CIRC-09
Descárgate el código desde ( http://ardx.org/CODE09 )
copia el texto y pégalo en un sketch vacío de Arduino)
/*
* Un simple programa que cambiará la
* intensidad de un LED dependiendo de la cantidad de
* luz incidente en la fotorresistencia.
*
*/
//Pin Fotorresistencia
int lightPin = 0; //el pin analógico al que
//la fotorresistencia
//está conectada
//la fotorresistencia no está
//calibrada a ninguna unidad
//value (relative light)
//LED Pin
int ledPin = 9;//el pin al que el LED está coenctado
//estamos controlando el brillo, por lo que
//usaremos unos de los PWM (pines con
//modulación por ancho de pulso)
void setup()
{
pinMode(ledPin, OUTPUT); //establece el pin como
//salida
}
Mejorándolo
Invierte la respuesta: digitalWrite(ledPin, HIGH);
Puede que quieras la respuesta inversa. No te preocupes, }else{
podemos invertir fácilmente esta respuesta, sólo cambia: digitalWrite(ledPin, LOW);
}
analogWrite(ledPin, lightLevel); ----> analogWrite(ledPin, }
255 - lightLevel);
Servo controlado por luz:
Sube el código y mira como ha cambiado: Usemos nuestra nueva capacidad de medir luz para
controlar un servo (y al mismo tiempo modificar un poco el
Luz Nocturna: código de Arduino). Conecta un servo al pin 9 (como en
En vez de controlar el brillo del LED mediante la luz, CIRC-04). Ahora abre el ejemplo Knob (el mismo que
hagamos que se encienda o apague según un valor límite. usamos en CIRC-08) File > Examples > Servo > Knob. Sube
Cambia el código del loop() por. el código a la placa y mira como funciona sin cambiar nada.
void loop(){ UsandoUsing the full range of your servo:
int threshold = 300; Habrás visto que el servo sólo se mueve por una parte de
if(analogRead(lightPin) > threshold){ su rango de funcionamiento. Ésto es debido que el divisor
Una cosa más, éste circuito usa el monitor serie del IDE de Arduino. Para abrirlo, primero
El Circuito
Componentes:
CIRC-10 Conector 2 pines Sensor de Temperatura Cable
Plantilla Protoboard x4 TMP36
x1 x1
Esquemático
Arduino
analógico 5 voltios
pin 0
TMP36
+5v (sensor
de precisión
señal de temperatura)
gnd
gnd
(masa) (-)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS10S
.:view:.
video de montaje
http://ardx.org/VIDE10
28
Código (no hace falta escribir, sólo unos clicks)
CIRC-10
Descárgate el código desde ( http://ardx.org/CODE10 )
copia el texto y pégalo en un sketch vacío de Arduino)
/* ---------------------------------------------
* | Código de Ejemplo del Kit Arduino de Experimentación |
* | CIRC-10 .: Temperatura :. |
* ---------------------------------------------
*
* Un simple programa para devolver la temperatura actual
* a la ventana de depuración del IDE
* Para más detalles sobre este cricuito:
Mejorándolo
Sacando voltaje: Sacando más información:
Ésto es sólo cosa de cambiar una línea. Nuestro sensor saca Añadamos un mensaje a la salida serie para hacer que lo
10 mV por grado centígrado, por lo que para obtener el que aparezca en el monitor serie sea más informativo. Para
voltaje, simplemente mostramos el resultado de getVoltage hacer ésto, primeros volveremos al código inicial y luego
(). cambiaremos:
Serial.println(temperature);
borramos la línea temperature = (temperature - .5) * 100; ---->
Serial.print(temperature);
Sacando grados Fahrenheit: Serial.println(" degrees centigrade");
Otra vez es un simple cambio matemático. Para ir de grados El cambio a la primera línea significa que la siguiente salida
C ----> grados F usamos la fórmula: aparecerá en la misma línea, luego añadiremos texto
( F = (C * 1.8) + 32 ) informativo e iniciaremos una nueva línea.
añadir la línea Cambiando la velocidad serie:
temperature = Si alguna vez quieres mandar muchos datos a través del
(((temperature - .5) * 100)*1.8) + 32; puerto serie, deberemos aumentar la velocidad.
antes de Serial.println(temperature); actualmente transmitimos a 9600 baudios pero velocidades
El Circuito
Componentes:
CIRC-11 Diodo Transistor Relé
Plantilla Protoboard (1N4001) P2N2222AG (TO92) (SPDT)
x1 x1 x1 x1
Resistencia 10k Ohm Resistencia 330 Ohm LED Amarillo LED Rojo
Marrón-Negro-Naranja Naranja-Naranja-Marrón x1 x1
x1 x2
Esquemático
Arduino
pin 2
resistencia
(10kohm)
Transistor
Base P2N2222AG
Colector Emisor
-
com
0
0
NO
NC
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS11S
.:view:.
video de montaje
http://ardx.org/VIDE11
28
Código (no hace falta escribir, sólo unos clicks)
CIRC-11
File > Examples > 1.Basic > Blink
ejemplo de la genial página arduino.cc, échale un vistazo para otras ideas)
/*
* Blink
*
* El ejemplo básico de Arduino. Enciende un LED un segundo,
* luego lo apaga un segundo, sin parar. Usamos el pin 13 porque,
* dependiendo de tu placa, tendrás o un LED incluido
* o una resistencia para que sólo necesites un LED.
*
* http://www.arduino.cc/en/Tutorial/Blink
*/
Mejorándolo
Ver el pulso electromagnético
Reemplaza el diodo por un LED. Lo verás encenderse cada
vez que lo atraviese el pico de tensión que aparece cuando
apagas el relé.
Controlando un Motor
En CIRC-03 controlamos un motor usando un transistor.
Aunque si quieres controlar un motor más grande, un relé
es una buena opción. Para ésto simplemente cambiar el LED
rojo y conecta el motor es un lugar (recuerda saltarte la
resistencia de 330 Ohm).
El Circuito
Componentes:
CIRC-12 Conector 2 pines LED RGB 5mm Cable
Plantilla Protoboard x4 x1
x1
Esquemático
Arduino
rojo
verde
azul
0
verde
azul
rojo
patilla lado
larga plano
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS12
30
Código (no hace falta escribir, sólo unos clicks)
CIRC-12
Descárgate el código desde (http://ardx.org/CODE12S)
copia el texto y pégalo en un sketch vacío de Arduino)
/*Recorre los colores de un LED RGB*/
void setup() {
// No se necesita setup.
}
void loop() {
// Recorrer los colores del rojo al verde
for (greenIntensity = 0;
greenIntensity <= 255;
greenIntensity+=5) {
Mejorándolo
Usando códigos de color HTML veces es posible que se vean los colores individuales de los
Si estás familiarizado con la realización de páginas web LEDs. Una manera de solucionar este problema es hacer
puedes preferir el uso de códigos hexadecimales, cómo que la luz esté más difuminada para que los colores se
haces cuando usas HTML y CSS. El código hexadecimal de mezclen mejor. El LED entregado con el kit está difuminado
colores usa una serie de letras y números como `#FF0000` en vez de transparente para ayudar a mejorar la mezcla de
para el rojo ó `#800080` para el morado. Puedes aprender colores. Si la luz sigue sin estar suficientemente difuminada,
más sobre cómo funciona en la Wikipedia (http://ardx.org/ puedes poner el LED detrás de algún papel o acrílico; o
HEXCOL) y encontrar una lista de colores con su código dentro de una pelota de ping-pong o una bola de
hexadecimal asociado, para así no tener que obtenerlo por poliestireno.
ti mismo.
El Circuito
Componentes:
CIRC-13 Conector 2 pines Flex Sensor Cable
Plantilla Protoboard x4 x1
x1
Esquemático
5 voltios
pin 9
sensor
Mini Servo flexión
señal 0
(blanco)
5v
gnd (rojo)
(negro)
resistencia
(10k ohm)
gnd
(masa) (-)
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS13S
32
Código (no hace falta escribir, sólo unos clicks)
CIRC-13
Descárgate el código desde (http://ardx.org/CODE13S)
copia el texto y pégalo en un sketch vacío de Arduino)
// Basado en
// File > Examples > Servo > Knob
// Controlando la posición de un servo usando un
// potenciómetro (resistencia variable)
// by Michal Rinott // <http://people.interaction-ivrea.it/m.rinott>
#include <Servo.h>
void setup()
{
Serial.begin(9600);
myservo.attach(9);// conecta el servo
// en pin 9 al objecto servo
}
void loop()
Mejorándolo
Calibrando el Rango cambia el valor fromHigh (por defecto 300) con el valor
cuando está completamente doblado.
While the servo is now moving chances are its range isn’t
quite perfect. To adjust the range we need to change the Aplicaciones
values in the map() function.
Con sensores, lo divertido es cuando los usas en curiosas e
map(value, fromLow, fromHigh, inesperadas formas. Aquí están algunas de nuestras
toLow, toHigh) aplicaciones favoritas con sensores de flexión.
El Circuito
Componentes:
CIRC-14 Conector 2 pines LED RGB 5mm Cable
Plantilla Protoboard x4 x1
x1
Esquemático
Arduino
pin 11 pin 10 pin 9
0
resistencia (330ohm) 0
Soft-pot
V+
verde
azul
Punzón
0
patilla
larga
En Internet
.:descarga:.
hoja etiqueta protoboard
http://ardx.org/BBLS14S
34
Código (no hace falta escribir, sólo unos clicks)
CIRC-14
Descárgate el código desde (http://ardx.org/CODE14S)
copia el texto y pégalo en un sketch vacío de Arduino)
// Código de EjemploCIRC-14
// Variará un LED RGB del Rojo-Verde-Azul
// en relación al valor del soft-pot
Mejorándolo
HSB Color (Hue, Saturation & Brightness / Matiz, Saturación Ahora cuando uses el soft-pot notarás una variación de
y Brillo) colores más limpia y plena del rojo al violeta.
Nuestro LED RGB muestra los colores usando códigos
usando el código de color RGB. Aunque es comunmente no Botones Falsos
la manera más sencilla de trabajar con colores (como Debido a la manera que funciona el soft-pot, se puede usar
habrás podido ver en el código de arriba). Un sistema para hacer botones personalizados. Para ésto, deberás
mucho más intuitivo es el HSB. definir un rango de valores correspondiente a un botón. Usa
Información Completa: el código de abajo y la ventana de depuración para
http://ardx.org/HSB determinar los valores ideales.
Para convertir de RGB a HSB todo lo que se necesita es un if(analogRead(0) > minValue &&
poco de matemáticas algo complicadas. Para un programa analogRead(0) < maxValue){
de ejemplo, visita: buttonAction()
http://ardx.org/CODE14MB }
basado en el código original de Ahora cubre el soft-pot con una hoja con botones
www.kasperkamperman.com: http://ardx.org/KASP imprimidos/dibujados
36
.:Notas:. NOTA
notas
.:Espacio para tomar notas:.
0
Este trabajo está protegido bajo una licencia Creative Commons Attribution-Share Alike 3.0 Unported