SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
Introducción práctica la uso de la tarjeta Arduino.
Un sistema “open hardware” para artistas y diseñadores

Prácticas Nivel I

Arduclema

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Prácticas Nivel I
Relación de Prácticas programadas
Salidas Digitales:
1.
2.

Manejo de una salida digital. Intermitente
Secuencia básica de 3 LED´s. Semáforo

Entradas digitales:
3.
4.
5.
6.
7.
8.

Lectura de un pulsador
Contando eventos I
Contando eventos II
Gobierno de una lámpara mediante un relé
Generador de notas musicales
Timbre de llamada

Entradas Analógicas
9. Potenciómetro como entrada analógica
10. Midiendo Luz con Arduino
11. Midiendo Temperatura con Arduino
Salidas Analógicas
12. Variando la Intensidad de un LED
13. Control de la velocidad de un motor
14. Control de la velocidad de un motor mediante un potenciómetro

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Kit de Componentes a utilizar

1N4001

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Proceso de montaje de una aplicación

Esquema eléctrico

Esquema de conexionado

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Proceso de montaje de una aplicación

GND

Pin10

Protoboard

Arduclema

Unidas en línea horizontal
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas Digitales
Los Pines:
0,1,2,3,4,5,6,7,8,9,10,11,12, 13
se pueden utilizar como
Entradas o salidas digitales
Si realizamos transmisiones a
trabes de TX y Rx estos pines
quedan inutilizados para E/S

Los pines 3,5,6,10,11,12 se
pueden utilizar como salidas
analógicas tipo PWM

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas Digitales
Instrucciones relacionadas
pinMode(pin, mode)
pinMode(pin, OUTPUT); // configura ‘pin’ como salida
Nº PIN

Modo

INPUT (entrada)
OUTPUT (salida)

digitalWrite(pin, value)
digitalWrite(pin, HIGH); // deposita en el 'pin' un valor HIGH (alto o 1)

digitalWrite(pin, LOW; // deposita en el 'pin' un valor HIGH (alto o 1)

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 1: Manejo de una salida digital. Intermitente
/* /INTERMITENTE
*/
int ledPin = 13;
/ / Definición de la salida en el PIN 13
void setup()
//Configuración
{
pinMode(ledPin, OUTPUT); // designa la salida digital al PIN 1
}
void loop()
// bucle de funcionamiento
{
digitalWrite(ledPin, HIGH); // activa el LED
delay(1000);
// espera 1 seg. (tiempo encendido)
digitalWrite(ledPin, LOW); // desactiva el LED
delay(1000);
// espera 1 seg. (tiempo apagado)
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 1: Manejo de una salida digital. Intermitente

Intermitente. Ejemplo básico con Arduino. Encendido
y apagado de un led con una cadencia de 1 sg. usando
el PIN 13 como salida no es necesario usar una
resistencia para el led la salida 13 de Arduino la lleva
incorporada.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 1: Manejo de una salida digital. Intermitente
Montaje
GND
Pin13

Protoboard

Arduclema
En el caso de conectar a la salida Pin13 no se necesita poner la
resistencia de 220 ohmios en las demás salidas SI SIEMPRE
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Información sobre montaje: Diodo LED
Diodo LED: Polaridad, terminal positivo el más largo.
Transforma la electricidad en luz (actuador).
Para que no se destruya debe ir acompañado por una resistencia limitadora de corriente.
LED conectado al pin del Arduino con una resistencia de 220 Ohms.
La pata corta siempre a tierra y la positiva, más larga del lado de la
resistencia. Se conecta siempre a un pin digital. Si queremos que
simplemente se encienda lo conectaremos a un pin digital normal y si
queremos que lo haga gradualmente a un PWM.
La salida digital de Arduino PIN13 ya lleva conectado
una resistencia internamente por lo que cuando
conectemos un led a esa salida no es necesario ponerle
resistencia en serie

Pin13
LED significa "Light Emiting Diode".
Son diodos que se iluminan cuando
pasa la electricidad.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 2: Secuencia básica de 3 LED´s. Semáforo
ledPin1

PIN 6

220 ohm
ledPin2

PIN 7

220 ohm
ledPin3

PIN 8

220 ohm

Intermitente

Configuración E/S
SD PIN 6 ledPin1
SD PIN 7 ledPin2
SD PIN 8 ledPin3

Activa ledPin1
PIN6=HIGH

Activa ledPin2
PIN7=HIGH

Activa ledPin3
PIN8=HIGH

Delay (200 ms)

Delay (200 ms)

Delay (200 ms)

Desactivar ledPin1
PIN6=LOW

Desactivar ledPin2
PIN7=LOW

Desactivar ledPin3
PIN8=LOW

Delay (200 ms)

Delay (200 ms)

Delay (200 ms)

Se trata de encender y apagar 3 LEDs colocados en las salidas 6, 7 y 8 (PIN6, PIN7
y PIN8) con una cadencia de 200 ms.
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 2: Secuencia básica de 3 LED´s. Semáforo

Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 2: Secuencia básica de 3 LED´s. Semáforo
Las variables asignadas a cada led son ledPin1, ledPin2 y ledPin3
// Encedido y apagado de 3 LEDs
int ledPin1 = 6; // Define las salidas de los LED´s
int ledPin2 = 7;
int ledPin3 = 8;
void setup() { // Configura las SALIDAS
pinMode(ledPin1, OUTPUT); // declarar LEDs como SALIDAS
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
digitalWrite(ledPin1, LOW); // Apaga los LEDs
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
void loop(){ //Bucle de Funcionamiento
digitalWrite(ledPin1, HIGH); // Apaga y enciende los leds cada 200 ms
delay(200);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, HIGH);
delay(200);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, HIGH);
delay(200);
digitalWrite(ledPin3, LOW);
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Entradas Digitales
Los Pines:
0,1,2,3,4,5,6,7,8,9,10,11,12, 13
se pueden utilizar como
Entradas o salidas digitales
Si realizamos transmisiones a
trabes de TX y Rx estos pines
quedan inutilizados para E/S

Los pines 3,5,6,10,11,12 se
pueden utilizar como salidas
analógicas tipo PWM

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Entradas Digitales
Instrucciones relacionadas
pinMode(pin, mode)
pinMode(pin, INPUT);
Nº PIN

Modo

// configura ‘pin’ como salida
INPUT (entrada)
OUTPUT (salida)

digitalRead(pin)
valor = digitalRead(Pin); // hace que 'valor sea iguala al estado leído
en ´Pin´
Pulsado

Valor=1

No Pulsado

Valor=0
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 3: Lectura de un pulsador
Lectura
Pulsador

Configuración E/S
SD PIN 13 LED
ED PIN 10 Pulsador
value=0 (estado Pulsador)

LED

PIN 13
Botón

10K

+5V
PIN10

Hacer que
value=Pulsador
Hacer que
LED=valor

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 3: Lectura de un pulsador

•

Es un caso específico de divisor resistivo.

•

Sirve para leer valores digitales sin que el
valor de entrada sea indeterminado.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 3: Lectura de un pulsador

Resistencia
Pulsador

Pin entrada

PIN GND

EVITAR EL USO DE LA RESITENCIA: Es posible evitar el uso
de la resistencia utilizando la instrucción que provoca el mismo efecto
solo que habilitando internamente esa resistencia en ese caso la entrada
sencillamente seria colocar el pulsador entre masa (GND) y la entrada.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
EVITAR EL USO DE LA RESITENCIA EN LA ENTRADA CON PULSADOR: Es
posible evitar el uso de la resistencia utilizando la instrucción que provoca el mismo efecto solo que
habilitando internamente esa resistencia en ese caso la entrada sencillamente seria colocar el pulsador
entre masa (GND) y la entrada.

¡Importante!

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 3: Lectura de un pulsador
Montaje
Resistencia de 10K

Pulsador

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 3: Lectura de un pulsador
/* Pulsador
Detecta si el botón ha sido presionado o no y enciende el LED en consecuencia.
Massimo Banzi * */
int ledPin = 13;
// PIN del LED
int inPin = 10;
// PIN del pulsador
int value = 0;
// Valor del pulsador
void setup() {
pinMode(ledPin, OUTPUT);
// Inicializa el pin 13 como salida digital
pinMode(inPin, INPUT);
// Inicializa el pin 10 como entrada
digital
} void loop() {
value = digitalRead(inPin);
// Lee el valor de la entrada digital
digitalWrite(ledPin, value);
}

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 4: Contando eventos I
LED

CONTADOR

Se trata de contar las
veces que se pulsa un
botón conectado en la
entrada 7 de Arduino a
la vez que cada vez que
contamos encendemos
el led conectado en la
salida 13. El valor de la
variable que almacena el
número de impulsos
generados se envía al
PC para que se visualice
en la pantalla.

PIN 13 220 ohm
Configuración E/S
SD PIN 13 LED
ED PIN 7 Botón
valor=0; contador=0
estadoanteriorboton=0

Botón

10K

+5V
PIN7

Hacer que
valor=Boton
Hacer que
LED=valor

valor=1

no

si

valor <>
estadoanteriorboton

si

Haz que
contador=contador+1
Imprime
contador

no
Haz que
estadoanteriorboton=valor

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Asignación de
variables

Configuración
Puerto y E/S

Programa

/* Programa Contador Práctica 4: Contando eventos I
*/
int LED = 13;
int Boton = 7;
int valor = 0;
int contador = 0;
int estadoanteriorboton = 0;
void setup()
{
beginSerial(9600);
// Configura velocidad de transmisión a 9600
pinMode(LED, OUTPUT); // inicializa como salida digital el pin 13
pinMode(Boton, INPUT); // inicializa como entrada digital el 7
}
void loop()
{
valor = digitalRead(Boton); // lee el valor de la entrada digital pin 7
digitalWrite(LED, valor);
if(valor != estadoanteriorboton){
if(valor == 1){
contador++;
printInteger(contador);
serialWrite(10);
serialWrite(13);
}
}
estadoanteriorboton = valor;
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 4: Contando eventos I
Montaje

GND
Pin13
+ 5v

Pin7

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 5: Contando eventos II

LED

CONTADOR DE 0 A 10
PIN 13 220 ohm

Se trata de realizar una
variación sobre el
ejemplo anterior de tal
manera que cuando el
valor del contador
llegue a 10 se ponga a
cero y comience de
nuevo.

Configuración E/S
SD PIN 13 LED
ED PIN 7 Botón
valor=0; contador=0
estadoanteriorboton=0

Botón

10K

+5V
PIN7

Hacer que
valor=Boton
Hacer que
LED=valor

valor=1

no

si

valor <>
estadoanteriorboton

si

Haz que
contador=contador+1
Imprime
contador

no
si
contador=10

no

Haz que
contador=0

Haz que
estadoanteriorboton=valor

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 5: Contando eventos II
* Detecta si el botón conectado a la entrada 7 ha sido presionado y enciende el
LED
* Envía al PC el valor de la variable de cuenta ""Contador" vía puerto serie.
/* Programa Contador de 0 a 10
*/
int LED = 13;
int Boton = 7;
int valor = 0;
int contador = 0;
int estadoanteriorboton = 0;
void setup()
{
beginSerial(9600);
// Configura velocidad de transmisión a
9600
pinMode(LED, OUTPUT); // inicializa como salida digital el pin 13
pinMode(Boton, INPUT); // inicializa como entrada digital el 7
}

Continua ->

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 5: Contando eventos II
void loop()
{
valor = digitalRead(Boton); // lee el valor de la entrada digital pin 7
digitalWrite(LED, valor); // manda el valor leído a la salida
if(valor != estadoanteriorboton){ //Testea si ha cambiado el valor botón
if(valor == 1){
contador++;
printInteger(contador); // envía al puerto el valor de contador
serialWrite(10);
serialWrite(13);
if (contador==10) {
// Limita la cuenta al valor 10
contador=0;
}
}
}
estadoanteriorboton = valor;
}

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 5: Contando eventos II
MONITORIZAR

Una vez iniciado el programa
debemos pulsar el botón
“Monitorizar” para poder ver
en la pantalla el valor del
numero de eventos contados

Valor CONTADOR

7

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 5: Contando eventos II
Montaje

GND
Pin13
+ 5v

Pin7

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 6: Gobierno de una lámpara mediante un relé
Este sencillo ejemplo enseña como encender una bombilla de 220V de
corriente alterna (AC) mediante un circuito de 5V de corriente continua
(DC) gobernado por Arduino. Se puede utilizar con cualquier otro
circuito de 220V con un máximo de 10A (con el relé del ejemplo).

Componentes: el Relé es un dispositivo, que
funciona como un interruptor controlado por un
circuito eléctrico en el que, por medio de un
electroimán, se acciona un juego de uno o varios
contactos que permiten abrir o cerrar otros
circuitos eléctricos independientes.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 6: Gobierno de una lámpara mediante un relé

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 6: Gobierno de una lámpara mediante un relé
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 6: Gobierno de una lámpara mediante un relé
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 6: Gobierno de una lámpara mediante un relé

/* Enciende y apaga una bombilla de 220V, cada 2 segundos, mediante un
relé conectado al PIN 8 de Arduino */
int relayPin = 8;
// PIN al que va conectado el relé
void setup(){
pinMode(relayPin, OUTPUT);
}
void loop() {
digitalWrite(relayPin, HIGH); // ENCENDIDO
delay(2000);
digitalWrite(relayPin, LOW); // APAGADO
delay(2000);
}

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 7: Generador de notas musicales
Se trata de generar hasta 8 notas musicales por
una de las salidas analógicas de Arduino –PIN10Se debe crear un array (vector) de datos compuesto por los valores correspondientes a las 8
notas que se pretende sacar:
int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
Se deben definir también el tiempo de pausa entre nota y nota y el tiempo de pausa de fin de
secuencia de notas:
int tnota=100;
int pausa=100;
Las iteraciones para el recorrido de las 8 notas se realizan con una instrucción de tipo for:
for(n=0;n<8;n++)
El tiempo de activado y desactivado de la salida del zumbador también se resuelve con un
bucle for:
for(m=0;m<=tnota;m++){
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 7: Generador de notas musicales
// Generador de Notas Musicales
int piezo=10;
int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; //cadena con los tiempos que
corresponden a las distintas notas
int n=0;
int m= 0;
int tnota=100;
//nº de repeticiones del pulso. Nos da la duración de la nota
int pausa=100;
void setup() {
pinMode(piezo,OUTPUT);
}
void loop(){
for(n=0;n<8;n++){ //iteración que recorre la lista con las duraciones de los pulsos de cada nota
for(m=0;m<=tnota;m++){
digitalWrite(piezo,HIGH);
delayMicroseconds(notas[n]); //Tiempo en microsegundos que está a 5V la salida del piezoeléctrico
digitalWrite(piezo,LOW);
delayMicroseconds(notas[n]); //Tiempo en microsegundos que está a 0V la salida del piezoeléctrico
}
delay(pausa); //tiempo en silencio entre escalas
}
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 7: Generador de notas musicales

Montaje

Recordar que el zumbador
piezoeléctrico tiene
polaridad (+) y (-)

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 8: Timbre de llamada
Se trata de realizar un timbre a través de un zumbador (salida 10) que emita dos tonos
recogidos de una colección de ocho tonos, por ejemplo el tono 0 y el tono 6.
El timbre se activa mediante un pulsador conectado en el PIN5 (entrada digital).
int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956};
tono0=1915

tono6=1014

Para la resolución de este ejemplo se sugiere crear un procedimiento llamado nota al
que se incoará cuando se pulse el pulsador conectado en el PIN 5

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 8: Timbre de llamada
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 8: Timbre de llamada
//Timbre de llamada
int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; //definición de
matriz de 8 notas
int puls=5; // designación del pulsador de llamada
int zumb=10; // designación de la salida hacia el zumbador
int tnota=150;
int n=0;
int m=0;
void setup (){
for(n=0;n<4;n++){
pinMode(zumb,OUTPUT);
pinMode(puls,INPUT);
}
}
Continúa
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 8: Timbre de llamada

RUTINA

void nota(){ // rutina que genera los tonos de llamada
for(m=0;m<=tnota;m++){
digitalWrite(zumb,HIGH);
delayMicroseconds(notas[n]);
digitalWrite(zumb,LOW);
delayMicroseconds(notas[n]);
}
}
void loop(){
if(digitalRead(puls)==HIGH){
n=0;
//elegimos la primera nota del timbre
nota();
//que aquí es la primera de la cadena
delay(200);
n=6;
//elegimos la segunda nota del timbre
nota();
//que aquí es la sexta de la cadena
delay(200);
}
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas Digitales -Hacer sonar piezos
Componentes: el piezo eléctrico o "chicharra" es un componente que transforma un
tren de pulsos en sonido. A bajo nivel transforma un cambio de voltaje en un
movimiento físico de dos placas metálicas. También puede ser utilizado como Sensor de
Vibraciones, para ello hay que situarlo en paralelo con una resistencia de 1M y
conectarlo a una entrada analógica.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Entradas Analógicas
Existen 6 canales de entrada
analógica: AN0 .. AN5.
Las entradas analógicas
deben variar entre 0 y 5v.
La conversión se realiza con
una precisión de
10 Bits (0 a 1024)

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Entradas analógicas
Divisor de tensión resistivo
Un divisor de tensión es una configuración de circuito eléctrico que reparte la
tensión de una fuente entre una o más impedancias conectadas en serie.
Un divisor resistivo es un caso especial donde ambas impedancias, son
puramente resistivas.
Arduino sólo puede leer voltajes, y
muchos sensores son resistivos (varían la
resistencia). Por eso hay que usar
circuitos de este tipo para leer el valor de
los sensores.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Entradas analógicas

El uso de un potenciómetro y uno de los pines de entrada analógicadigital de Arduino (ADC) permite leer valores analógicos que se
convertirán en valores dentro del rango de 0-1024.
Es posible utilizar un potenciómetro simular una entrada analógica o
bien un sensor de tipo resistivo. Es posible también conectar Sensores
cuya salida sea de 0 a 5v.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Entradas analógicas
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'
Nota: Los pins analógicos (0-5) a diferencia de pines digitales, no necesitan ser
declarados como INPUT u OUPUT ya que son siempre INPUT´s.

Taller de electrónica para usos creativos

Prácticas con Arduclema Nivel I. José Manuel Ruizopen lab
viernes Gutiérrez
36
Práctica 9: Potenciómetro como entrada analógica

Se trata de
configurar un
canal de entrada
analógico pin 5 y
enviar el valor
leído al PC para
visualizarlo

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 9: Potenciómetro como entrada analógica
/* Programa Entrada Analógica
*/
int potPin = 5; // selecciona el pin de entrada para colocar el potenciómetro
int val = 0;
// variable para almacenar el valor leído por la entrada analógica
void setup() {
beginSerial(9600);
}
void loop() {
val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica
printInteger(val); // Envía al PC el valor analógico leído y lo muestra en
pantalla
serialWrite(10);
delay(100);
}

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 9: Potenciómetro como entrada analógica
AN5

Se conectan tres cables a la tarjeta Arduino. El primero va a tierra desde uno de los terminales
externos (1 o 3) del potenciómetro. El segundo va desde la salida de 5 voltios hacia el otro terminal
externo del potenciómetro. EL tercero va desde la entrada analógica #5 hasta el terminal interno del
potenciómetro.
Girando el dial o ajustando el potenciómetro, cambiamos el valor de la resistencia variable. Esto
produce oscilaciones dentro del rango de 5 y 0 voltios, que son capturados por la entrada analógica.
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 10: Midiendo Luz con Arduino
Una fotocélula (o LDR -Light-Dependent Resistor) es una resistencia que
varia su intensidad según la luz que recibe. Cuanta más luz menos resistencia
ejerce a la corriente.
Una LDR considera un sensor de luminosidad, se pueden usar para apagar
las luces es de día o encenderlas cuando es de noche. Estas variables son de
tipo analógico, como medir el sonido, la inclinación, la presión o el
desplazamiento.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 10: Midiendo Luz con Arduino
Se trata de colocar un sensor de luz LDR conectado a la entrada analógica
AN3 y medir la luz mostrando el resultado en el ordenador
/* Programa Medida de luz
*/
int potPin = 5; // selecciona el pin de entrada para colocar la LDR
int val = 0;
// variable para almacenar el valor leído por la entrada analógica
void setup() {
beginSerial(9600);
}
void loop() {
val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica
printInteger(val); // Envía al PC el valor analógico leído y lo muestra en
pantalla
serialWrite(10);
delay(100);
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 10: Midiendo Luz con Arduino
Para mostrar el
valor en pantalla
debemos pulsar el
Botón MONITOR y
en la parte de abajo
leeremos el valor

Valor leído

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 10: Midiendo Luz con Arduino
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 11: Midiendo Temperatura con Arduino
Una resistencia NTC o PTC es una resistencia variable, que varia su valor
dependiendo de la temperatura ambiente.
NTC Cuanta mas temperatura menor será su resistencia.
PTC Cuanto mas temperatura mayor será la resistencia.

Taller de electrónica para usos creativos

Prácticas con Arduclema Nivel I. José Manuel Ruizopen lab
viernes Gutiérrez
40
Práctica 11: Midiendo Temperatura con Arduino
/* Programa Medida de Temperatura
*/
int potPin = 3; // selecciona el pin de entrada para colocar la PTC
int val = 0;
// variable para almacenar el valor leído por la entrada analógica
void setup() {
beginSerial(9600);
}
void loop() {
val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica
printInteger(val); // Envía al PC el valor analógico leído y lo muestra en
pantalla
serialWrite(10);
delay(100);
}

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 11: Midiendo Temperatura con Arduino
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas analógicas
Arduino en su versión
ATMega 168 ofrece 6
salidas analógicas del
Tipo PWM en los pines
de E/S digitales
11,10,9,6,5 y 3.

Naturalmente que estas
pueden ser también
configuradas como E/S
digitales
El valor de la salida oscilará entre 0 y 5v en 255 pasos
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas analógicas

PWM

El chip Atmega de Arduino, como muchos microcontroladores, no puede
generar una salida analógica, por lo que tiene que utilizar la técnica PWM
(Pulse Width Modulation).
PWM consiste en simular mediante una salida digital un salida analógica.

Tres características de las señales PWM:
- Altura (heigth)
– Anchura (width)
- Periodo (period)

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas analógicas
PWM
• El voltaje de salida es la media del tiempo que está a 5V
con respecto del tiempo que está a 0V

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas analógicas
Arduino (chip Atmega8) dispone de 3 pines digitales para PWM: 9,10,11
Arduino (chip Atmega168), Arduino Diecimilla dispone de 6 pines
digitales para PWM: 3, 5, 6, 9, 10 y 11
A diferencia de las entradas analógicas en las que el conversor da valores entre 0
y 1024 para generar una salida digital el rango es de 0 a 255. Donde 0 equivale a
0v. Y 255 equivale a 5 v.
Los pines analógicos, al contrario que los digitales no necesitan ser
configurados como INPUT (entrada) u OUPUT (salida)

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Salidas analógicas
analogWrite(pin, value)
analogWrite(pin, valor); // escribe 'valor' en el 'pin' definido como
analógico

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´s
de Arduino marcados como “pin PWM”..
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.

Importante: No es necesario configurar como salida las salidas PWM,
por defecto Arduino considera que son salidas.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 12:Variando la Intensidad de un LED
Se trata de que enviemos hacia la salida 9 un valor analógico ascendente y
descendente cíclicamente comprendido entre 0 y 255 en incrementos de 5.
Para la realización de este ejercicio se debe empleará una estructura de
programación tipo for que realice el incremento o decremento de una variable
entre 0-255 y 255-0 con un valor te retardo entre cambio de valor de 30 mseg.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 12:Variando la Intensidad de un LED
Listado del programa
/* Variando la intensidad de un LED
*/
int value = 0; // Valor a sacar por la salida analógica PIN 9
int ledpin = 9; // Salida analógicas PIN 9
void setup() { } // no es necesario
void loop()
{
for(value = 0 ; value <= 255; value+=5) // Variación de la variable se salida ente el MIN yMAX
{
analogWrite(ledpin, value);
// Enviar valor a la salida (entre 0 y 255)
delay(30);
// Esperar 30 ms para ver el efecto de variación
}
for(value = 255; value >=0; value-=5) // Variación de la variable de salida entre MAX y MIN
{
analogWrite(ledpin, value);
delay(30);
}
}

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 12:Variando la Intensidad de un LED
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 13:Control de la velocidad de un motor
Control de un motor de cc con un transistor
Con este ejemplo vamos a controlar la
velocidad de un motor de cc mediante la
utilización de un transistor BD137. Se trata de
utilizar la posibilidad de enviar una señal de
PWM a una de las salidas configurables como
salidas analógicas

Componentes a utilizar

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 13:Control de la velocidad de un motor
Control de un motor de cc con un transistor

La tensión que sacaremos a la salida 10 (analógica tipo PWM) variara en
forma de rampa ascendente y descendente de manera cíclica tal como vemos
en la figura. Este efecto lo conseguimos con una estructura del tipo for:
for(valor = 0 ; valor <= 255; valor +=5) (ascendente)
for(valor = 255; valor >=0; valor -=5) (descendente)
Obsérvese que los incrementos del valor de la tensión van de 5 en 5 y
tenemos que considerar que 0v equivale a 0 y 5 v. equivale a 255.

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 13:Control de la velocidad de un motor
Listado del programa

Control de un motor de cc con un transistor

/* Control de la velocidad de un motor
*/
int valor = 0; // variable que contiene el valor a sacar por el terminal analógico
int motor = 10; // motor conectado al PIN 10
void setup() { } // No es necesario
void loop() {
for(valor = 0 ; valor <= 255; valor +=5) {
// se genera una rampa de subida de tensión de 0 a 255 es decir de 0 a 5v
analogWrite(motor, valor);
delay(30); // espera 30 ms para que el efecto sea visible
}
for(valor = 255; valor >=0; valor -=5) {
// se genera una rampa de bajada de tensión de 255 a 0 es decir de 5 a 0v
analogWrite(motor, valor);
delay(30);
}
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 13:Control de la velocidad de un motor
Control de un motor de cc con un transistor
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 14:Control de la velocidad de un motor mediante
un potenciómetro
Se trata de controlar la velocidad a nuestro gusto es decir
mediante un potenciómetro que se coloca en una de las entradas
analógicas y en función del valor que se lea en la entrada así
girará mas o menos rápido el motor.

Componentes a utilizar
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 14:Control de la velocidad de un motor mediante un
potenciómetro

/* Control de la velocidad de un motor mediante un potenciómetro
*/
int valor = 0; // variable que contiene el valor a sacar por el terminal
analógico
int motor = 10; // motor conectado al PIN 10
int potenciometro=0; // Se define la entrada analógica
void setup() { } // No es necesario
void loop() {
valor = analogRead(potenciometro); // se lee el valor de la entrada
analógica y se asigna a val
analogWrite(motor, valor); // Se manda a la salida analógica 0 el
valor leído
delay(30); // espera 30 ms para que el efecto sea visible
}
Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
Práctica 14:Control de la velocidad de un motor mediante un
potenciómetro
Montaje

Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez

Weitere ähnliche Inhalte

Was ist angesagt?

Manual basico de practicas con Arduino uno
Manual basico de practicas con Arduino unoManual basico de practicas con Arduino uno
Manual basico de practicas con Arduino unoRamiro Hernandez Michua
 
Ejemplos de win cupl
Ejemplos de win cuplEjemplos de win cupl
Ejemplos de win cuplRafael Duran
 
Presentación final proyecto electrónico
Presentación final   proyecto electrónicoPresentación final   proyecto electrónico
Presentación final proyecto electrónicoApaivaM
 
Mis proyectos con Arduino
Mis proyectos con ArduinoMis proyectos con Arduino
Mis proyectos con ArduinoJomicast
 
Chipset y bios
Chipset y biosChipset y bios
Chipset y bioslaru1604
 
Microcontroladores ver2.0
Microcontroladores ver2.0Microcontroladores ver2.0
Microcontroladores ver2.0ITS EL ORO
 
Análisis de tarjetas madres biostar.
Análisis de tarjetas madres biostar.Análisis de tarjetas madres biostar.
Análisis de tarjetas madres biostar.Lauriita Balkazar
 
Apuntes s7 200
Apuntes s7 200Apuntes s7 200
Apuntes s7 200edeive
 
Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaMoises Nuñez Silva
 
Tema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionalesTema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionalesAntonio Ortega Valera
 
Bus spi (serial peripheral interface)
Bus spi (serial peripheral interface)Bus spi (serial peripheral interface)
Bus spi (serial peripheral interface)edsonlunarejo
 
CONTADOR BINARIO 8 BITS
CONTADOR BINARIO 8 BITSCONTADOR BINARIO 8 BITS
CONTADOR BINARIO 8 BITSlalo martinez
 

Was ist angesagt? (20)

Manual basico de practicas con Arduino uno
Manual basico de practicas con Arduino unoManual basico de practicas con Arduino uno
Manual basico de practicas con Arduino uno
 
U2S3: Memorias de Sólo Lectura (ROM)
U2S3:  Memorias de Sólo Lectura (ROM)U2S3:  Memorias de Sólo Lectura (ROM)
U2S3: Memorias de Sólo Lectura (ROM)
 
Ejemplos de win cupl
Ejemplos de win cuplEjemplos de win cupl
Ejemplos de win cupl
 
Presentación final proyecto electrónico
Presentación final   proyecto electrónicoPresentación final   proyecto electrónico
Presentación final proyecto electrónico
 
Mis proyectos con Arduino
Mis proyectos con ArduinoMis proyectos con Arduino
Mis proyectos con Arduino
 
Chipset y bios
Chipset y biosChipset y bios
Chipset y bios
 
Microcontroladores ver2.0
Microcontroladores ver2.0Microcontroladores ver2.0
Microcontroladores ver2.0
 
Análisis de tarjetas madres biostar.
Análisis de tarjetas madres biostar.Análisis de tarjetas madres biostar.
Análisis de tarjetas madres biostar.
 
Arduino Uno ejercicios prácticos
Arduino Uno ejercicios prácticos Arduino Uno ejercicios prácticos
Arduino Uno ejercicios prácticos
 
Apuntes s7 200
Apuntes s7 200Apuntes s7 200
Apuntes s7 200
 
Diac(tema 6)
Diac(tema 6)Diac(tema 6)
Diac(tema 6)
 
Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salida
 
STM32 MCU Family
STM32 MCU FamilySTM32 MCU Family
STM32 MCU Family
 
Tema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionalesTema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionales
 
5 Memoria ram
5 Memoria ram5 Memoria ram
5 Memoria ram
 
Bus spi (serial peripheral interface)
Bus spi (serial peripheral interface)Bus spi (serial peripheral interface)
Bus spi (serial peripheral interface)
 
Compuertas lógicas
Compuertas lógicasCompuertas lógicas
Compuertas lógicas
 
CONTADOR BINARIO 8 BITS
CONTADOR BINARIO 8 BITSCONTADOR BINARIO 8 BITS
CONTADOR BINARIO 8 BITS
 
07 Familia Atmega
07 Familia Atmega07 Familia Atmega
07 Familia Atmega
 
Seguidor de linea con arduino
Seguidor de linea con arduinoSeguidor de linea con arduino
Seguidor de linea con arduino
 

Andere mochten auch

Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...Tino Fernández
 
Arduino Full Tutorial
Arduino Full TutorialArduino Full Tutorial
Arduino Full TutorialAkshay Sharma
 
20 Magnificos proyectos para ARDUINO
20 Magnificos proyectos para ARDUINO20 Magnificos proyectos para ARDUINO
20 Magnificos proyectos para ARDUINOdave
 
Ejercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaEjercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaJohnny Parrales
 
Circuitos eléctricos 1º Bto
Circuitos eléctricos 1º BtoCircuitos eléctricos 1º Bto
Circuitos eléctricos 1º Btorlopez33
 
P2: Kiwibot Basic Shield: Semáforo
P2: Kiwibot Basic Shield: SemáforoP2: Kiwibot Basic Shield: Semáforo
P2: Kiwibot Basic Shield: SemáforoJosé Pujol Pérez
 
App inventor bluetooth Arduino
App inventor bluetooth ArduinoApp inventor bluetooth Arduino
App inventor bluetooth ArduinoJosé Pujol Pérez
 
Taller Arduino espacio-RES 3ª Sesion
Taller Arduino espacio-RES 3ª SesionTaller Arduino espacio-RES 3ª Sesion
Taller Arduino espacio-RES 3ª SesionJosé Pujol Pérez
 
Vehiculo controlado por app y Arduino
Vehiculo controlado por app y ArduinoVehiculo controlado por app y Arduino
Vehiculo controlado por app y ArduinoJosé Pujol Pérez
 
Arduino: Programación y Robótica en Secundaria
Arduino: Programación y Robótica en SecundariaArduino: Programación y Robótica en Secundaria
Arduino: Programación y Robótica en SecundariaJosé Pujol Pérez
 
morning!, by Mia Diwasasri
morning!, by Mia Diwasasrimorning!, by Mia Diwasasri
morning!, by Mia DiwasasriSari Asih
 
Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)
Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)
Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)Alessandro Contini
 
Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015Jose Antonio Vacas
 

Andere mochten auch (20)

Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
Libro de proyectos del kit oficial de Arduino en castellano completo - Arduin...
 
Arduino Full Tutorial
Arduino Full TutorialArduino Full Tutorial
Arduino Full Tutorial
 
20 Magnificos proyectos para ARDUINO
20 Magnificos proyectos para ARDUINO20 Magnificos proyectos para ARDUINO
20 Magnificos proyectos para ARDUINO
 
Ejercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo SabikaEjercicios de Arduino resueltos Grupo Sabika
Ejercicios de Arduino resueltos Grupo Sabika
 
Curso Arduino práctico 2014
Curso Arduino práctico  2014Curso Arduino práctico  2014
Curso Arduino práctico 2014
 
Circuitos eléctricos 1º Bto
Circuitos eléctricos 1º BtoCircuitos eléctricos 1º Bto
Circuitos eléctricos 1º Bto
 
P2: Kiwibot Basic Shield: Semáforo
P2: Kiwibot Basic Shield: SemáforoP2: Kiwibot Basic Shield: Semáforo
P2: Kiwibot Basic Shield: Semáforo
 
App inventor bluetooth Arduino
App inventor bluetooth ArduinoApp inventor bluetooth Arduino
App inventor bluetooth Arduino
 
Motores-Arduino
Motores-ArduinoMotores-Arduino
Motores-Arduino
 
Taller Arduino espacio-RES 3ª Sesion
Taller Arduino espacio-RES 3ª SesionTaller Arduino espacio-RES 3ª Sesion
Taller Arduino espacio-RES 3ª Sesion
 
Vehiculo controlado por app y Arduino
Vehiculo controlado por app y ArduinoVehiculo controlado por app y Arduino
Vehiculo controlado por app y Arduino
 
Arduino: Programación y Robótica en Secundaria
Arduino: Programación y Robótica en SecundariaArduino: Programación y Robótica en Secundaria
Arduino: Programación y Robótica en Secundaria
 
Sensor de Movimiento PIR
Sensor de Movimiento PIRSensor de Movimiento PIR
Sensor de Movimiento PIR
 
Iniciación a Arduino
Iniciación a ArduinoIniciación a Arduino
Iniciación a Arduino
 
Manual programacion arduino
Manual programacion arduinoManual programacion arduino
Manual programacion arduino
 
morning!, by Mia Diwasasri
morning!, by Mia Diwasasrimorning!, by Mia Diwasasri
morning!, by Mia Diwasasri
 
Introducción a Arduino r2
Introducción a Arduino r2Introducción a Arduino r2
Introducción a Arduino r2
 
Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)
Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)
Introduction to Arduino @ Open Tech School - Berlin (6 Dec 2012)
 
Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015Robotica Educativa CEP Granada 2015
Robotica Educativa CEP Granada 2015
 
Tema1
Tema1Tema1
Tema1
 

Ähnlich wie Arduino practicas

Practicas IDE
Practicas IDEPracticas IDE
Practicas IDEVisemi VI
 
Practicas con arduino_nivel_1
Practicas con arduino_nivel_1Practicas con arduino_nivel_1
Practicas con arduino_nivel_1Didier Solis
 
Arduino IEEE SB UMH - Mario Pérez Esteso
Arduino IEEE SB UMH - Mario Pérez EstesoArduino IEEE SB UMH - Mario Pérez Esteso
Arduino IEEE SB UMH - Mario Pérez EstesoMario Pérez Esteso
 
Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaMoises Nuñez Silva
 
ARDUINO CAP.2 ARTE ELECTRONICO.ppt
ARDUINO CAP.2  ARTE ELECTRONICO.pptARDUINO CAP.2  ARTE ELECTRONICO.ppt
ARDUINO CAP.2 ARTE ELECTRONICO.pptRamonGutierrez56
 
ARDUINO CAP.2 ARTE ELECTRONICO.ppt
ARDUINO CAP.2  ARTE ELECTRONICO.pptARDUINO CAP.2  ARTE ELECTRONICO.ppt
ARDUINO CAP.2 ARTE ELECTRONICO.pptRamonGutierrez56
 
ARDUINO CAP.2 ARTE ELECTRONICO PARA LA EDUCACION.ppt
ARDUINO CAP.2  ARTE ELECTRONICO PARA LA EDUCACION.pptARDUINO CAP.2  ARTE ELECTRONICO PARA LA EDUCACION.ppt
ARDUINO CAP.2 ARTE ELECTRONICO PARA LA EDUCACION.pptYovanaSaavedra1
 
Taller robotica libre arduino
Taller robotica libre arduinoTaller robotica libre arduino
Taller robotica libre arduinojoseromo10
 

Ähnlich wie Arduino practicas (20)

Practicas con arduino nivel i
Practicas con arduino nivel iPracticas con arduino nivel i
Practicas con arduino nivel i
 
Practicas IDE
Practicas IDEPracticas IDE
Practicas IDE
 
Practicas
PracticasPracticas
Practicas
 
Practicas con arduino_nivel_1
Practicas con arduino_nivel_1Practicas con arduino_nivel_1
Practicas con arduino_nivel_1
 
Arduino 1 jose m. ruiz
Arduino 1   jose m. ruizArduino 1   jose m. ruiz
Arduino 1 jose m. ruiz
 
Sesion 1 Curso Arduino.pdf
Sesion 1 Curso Arduino.pdfSesion 1 Curso Arduino.pdf
Sesion 1 Curso Arduino.pdf
 
Presentacion
PresentacionPresentacion
Presentacion
 
Arduino IEEE SB UMH - Mario Pérez Esteso
Arduino IEEE SB UMH - Mario Pérez EstesoArduino IEEE SB UMH - Mario Pérez Esteso
Arduino IEEE SB UMH - Mario Pérez Esteso
 
Practica de arduino
Practica de arduinoPractica de arduino
Practica de arduino
 
Arduino
Arduino Arduino
Arduino
 
Arduino - Ejercicios Básicos
Arduino - Ejercicios BásicosArduino - Ejercicios Básicos
Arduino - Ejercicios Básicos
 
Arduino + Arddublock.pdf
Arduino + Arddublock.pdfArduino + Arddublock.pdf
Arduino + Arddublock.pdf
 
Práctica04.Programando Arduino
Práctica04.Programando ArduinoPráctica04.Programando Arduino
Práctica04.Programando Arduino
 
Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salida
 
ARDUINO CAP.2 ARTE ELECTRONICO.ppt
ARDUINO CAP.2  ARTE ELECTRONICO.pptARDUINO CAP.2  ARTE ELECTRONICO.ppt
ARDUINO CAP.2 ARTE ELECTRONICO.ppt
 
ARDUINO CAP.2 ARTE ELECTRONICO.ppt
ARDUINO CAP.2  ARTE ELECTRONICO.pptARDUINO CAP.2  ARTE ELECTRONICO.ppt
ARDUINO CAP.2 ARTE ELECTRONICO.ppt
 
ARDUINO CAP.2 ARTE ELECTRONICO PARA LA EDUCACION.ppt
ARDUINO CAP.2  ARTE ELECTRONICO PARA LA EDUCACION.pptARDUINO CAP.2  ARTE ELECTRONICO PARA LA EDUCACION.ppt
ARDUINO CAP.2 ARTE ELECTRONICO PARA LA EDUCACION.ppt
 
Taller robotica libre arduino
Taller robotica libre arduinoTaller robotica libre arduino
Taller robotica libre arduino
 
Taller roboticalibrearduino
Taller roboticalibrearduinoTaller roboticalibrearduino
Taller roboticalibrearduino
 
Taller roboticalibrearduino
Taller roboticalibrearduinoTaller roboticalibrearduino
Taller roboticalibrearduino
 

Arduino practicas

  • 1. Introducción práctica la uso de la tarjeta Arduino. Un sistema “open hardware” para artistas y diseñadores Prácticas Nivel I Arduclema Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 2. Prácticas Nivel I Relación de Prácticas programadas Salidas Digitales: 1. 2. Manejo de una salida digital. Intermitente Secuencia básica de 3 LED´s. Semáforo Entradas digitales: 3. 4. 5. 6. 7. 8. Lectura de un pulsador Contando eventos I Contando eventos II Gobierno de una lámpara mediante un relé Generador de notas musicales Timbre de llamada Entradas Analógicas 9. Potenciómetro como entrada analógica 10. Midiendo Luz con Arduino 11. Midiendo Temperatura con Arduino Salidas Analógicas 12. Variando la Intensidad de un LED 13. Control de la velocidad de un motor 14. Control de la velocidad de un motor mediante un potenciómetro Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 3. Kit de Componentes a utilizar 1N4001 Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 4. Proceso de montaje de una aplicación Esquema eléctrico Esquema de conexionado Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 5. Proceso de montaje de una aplicación GND Pin10 Protoboard Arduclema Unidas en línea horizontal Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 6. Salidas Digitales Los Pines: 0,1,2,3,4,5,6,7,8,9,10,11,12, 13 se pueden utilizar como Entradas o salidas digitales Si realizamos transmisiones a trabes de TX y Rx estos pines quedan inutilizados para E/S Los pines 3,5,6,10,11,12 se pueden utilizar como salidas analógicas tipo PWM Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 7. Salidas Digitales Instrucciones relacionadas pinMode(pin, mode) pinMode(pin, OUTPUT); // configura ‘pin’ como salida Nº PIN Modo INPUT (entrada) OUTPUT (salida) digitalWrite(pin, value) digitalWrite(pin, HIGH); // deposita en el 'pin' un valor HIGH (alto o 1) digitalWrite(pin, LOW; // deposita en el 'pin' un valor HIGH (alto o 1) Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 8. Práctica 1: Manejo de una salida digital. Intermitente /* /INTERMITENTE */ int ledPin = 13; / / Definición de la salida en el PIN 13 void setup() //Configuración { pinMode(ledPin, OUTPUT); // designa la salida digital al PIN 1 } void loop() // bucle de funcionamiento { digitalWrite(ledPin, HIGH); // activa el LED delay(1000); // espera 1 seg. (tiempo encendido) digitalWrite(ledPin, LOW); // desactiva el LED delay(1000); // espera 1 seg. (tiempo apagado) } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 9. Práctica 1: Manejo de una salida digital. Intermitente Intermitente. Ejemplo básico con Arduino. Encendido y apagado de un led con una cadencia de 1 sg. usando el PIN 13 como salida no es necesario usar una resistencia para el led la salida 13 de Arduino la lleva incorporada. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 10. Práctica 1: Manejo de una salida digital. Intermitente Montaje GND Pin13 Protoboard Arduclema En el caso de conectar a la salida Pin13 no se necesita poner la resistencia de 220 ohmios en las demás salidas SI SIEMPRE Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 11. Información sobre montaje: Diodo LED Diodo LED: Polaridad, terminal positivo el más largo. Transforma la electricidad en luz (actuador). Para que no se destruya debe ir acompañado por una resistencia limitadora de corriente. LED conectado al pin del Arduino con una resistencia de 220 Ohms. La pata corta siempre a tierra y la positiva, más larga del lado de la resistencia. Se conecta siempre a un pin digital. Si queremos que simplemente se encienda lo conectaremos a un pin digital normal y si queremos que lo haga gradualmente a un PWM. La salida digital de Arduino PIN13 ya lleva conectado una resistencia internamente por lo que cuando conectemos un led a esa salida no es necesario ponerle resistencia en serie Pin13 LED significa "Light Emiting Diode". Son diodos que se iluminan cuando pasa la electricidad. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 12. Práctica 2: Secuencia básica de 3 LED´s. Semáforo ledPin1 PIN 6 220 ohm ledPin2 PIN 7 220 ohm ledPin3 PIN 8 220 ohm Intermitente Configuración E/S SD PIN 6 ledPin1 SD PIN 7 ledPin2 SD PIN 8 ledPin3 Activa ledPin1 PIN6=HIGH Activa ledPin2 PIN7=HIGH Activa ledPin3 PIN8=HIGH Delay (200 ms) Delay (200 ms) Delay (200 ms) Desactivar ledPin1 PIN6=LOW Desactivar ledPin2 PIN7=LOW Desactivar ledPin3 PIN8=LOW Delay (200 ms) Delay (200 ms) Delay (200 ms) Se trata de encender y apagar 3 LEDs colocados en las salidas 6, 7 y 8 (PIN6, PIN7 y PIN8) con una cadencia de 200 ms. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 13. Práctica 2: Secuencia básica de 3 LED´s. Semáforo Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 14. Práctica 2: Secuencia básica de 3 LED´s. Semáforo Las variables asignadas a cada led son ledPin1, ledPin2 y ledPin3 // Encedido y apagado de 3 LEDs int ledPin1 = 6; // Define las salidas de los LED´s int ledPin2 = 7; int ledPin3 = 8; void setup() { // Configura las SALIDAS pinMode(ledPin1, OUTPUT); // declarar LEDs como SALIDAS pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); digitalWrite(ledPin1, LOW); // Apaga los LEDs digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, LOW); } void loop(){ //Bucle de Funcionamiento digitalWrite(ledPin1, HIGH); // Apaga y enciende los leds cada 200 ms delay(200); digitalWrite(ledPin1, LOW); digitalWrite(ledPin2, HIGH); delay(200); digitalWrite(ledPin2, LOW); digitalWrite(ledPin3, HIGH); delay(200); digitalWrite(ledPin3, LOW); } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 15. Entradas Digitales Los Pines: 0,1,2,3,4,5,6,7,8,9,10,11,12, 13 se pueden utilizar como Entradas o salidas digitales Si realizamos transmisiones a trabes de TX y Rx estos pines quedan inutilizados para E/S Los pines 3,5,6,10,11,12 se pueden utilizar como salidas analógicas tipo PWM Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 16. Entradas Digitales Instrucciones relacionadas pinMode(pin, mode) pinMode(pin, INPUT); Nº PIN Modo // configura ‘pin’ como salida INPUT (entrada) OUTPUT (salida) digitalRead(pin) valor = digitalRead(Pin); // hace que 'valor sea iguala al estado leído en ´Pin´ Pulsado Valor=1 No Pulsado Valor=0 Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 17. Práctica 3: Lectura de un pulsador Lectura Pulsador Configuración E/S SD PIN 13 LED ED PIN 10 Pulsador value=0 (estado Pulsador) LED PIN 13 Botón 10K +5V PIN10 Hacer que value=Pulsador Hacer que LED=valor Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 18. Práctica 3: Lectura de un pulsador • Es un caso específico de divisor resistivo. • Sirve para leer valores digitales sin que el valor de entrada sea indeterminado. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 19. Práctica 3: Lectura de un pulsador Resistencia Pulsador Pin entrada PIN GND EVITAR EL USO DE LA RESITENCIA: Es posible evitar el uso de la resistencia utilizando la instrucción que provoca el mismo efecto solo que habilitando internamente esa resistencia en ese caso la entrada sencillamente seria colocar el pulsador entre masa (GND) y la entrada. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 20. EVITAR EL USO DE LA RESITENCIA EN LA ENTRADA CON PULSADOR: Es posible evitar el uso de la resistencia utilizando la instrucción que provoca el mismo efecto solo que habilitando internamente esa resistencia en ese caso la entrada sencillamente seria colocar el pulsador entre masa (GND) y la entrada. ¡Importante! Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 21. Práctica 3: Lectura de un pulsador Montaje Resistencia de 10K Pulsador Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 22. Práctica 3: Lectura de un pulsador /* Pulsador Detecta si el botón ha sido presionado o no y enciende el LED en consecuencia. Massimo Banzi * */ int ledPin = 13; // PIN del LED int inPin = 10; // PIN del pulsador int value = 0; // Valor del pulsador void setup() { pinMode(ledPin, OUTPUT); // Inicializa el pin 13 como salida digital pinMode(inPin, INPUT); // Inicializa el pin 10 como entrada digital } void loop() { value = digitalRead(inPin); // Lee el valor de la entrada digital digitalWrite(ledPin, value); } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 23. Práctica 4: Contando eventos I LED CONTADOR Se trata de contar las veces que se pulsa un botón conectado en la entrada 7 de Arduino a la vez que cada vez que contamos encendemos el led conectado en la salida 13. El valor de la variable que almacena el número de impulsos generados se envía al PC para que se visualice en la pantalla. PIN 13 220 ohm Configuración E/S SD PIN 13 LED ED PIN 7 Botón valor=0; contador=0 estadoanteriorboton=0 Botón 10K +5V PIN7 Hacer que valor=Boton Hacer que LED=valor valor=1 no si valor <> estadoanteriorboton si Haz que contador=contador+1 Imprime contador no Haz que estadoanteriorboton=valor Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 24. Asignación de variables Configuración Puerto y E/S Programa /* Programa Contador Práctica 4: Contando eventos I */ int LED = 13; int Boton = 7; int valor = 0; int contador = 0; int estadoanteriorboton = 0; void setup() { beginSerial(9600); // Configura velocidad de transmisión a 9600 pinMode(LED, OUTPUT); // inicializa como salida digital el pin 13 pinMode(Boton, INPUT); // inicializa como entrada digital el 7 } void loop() { valor = digitalRead(Boton); // lee el valor de la entrada digital pin 7 digitalWrite(LED, valor); if(valor != estadoanteriorboton){ if(valor == 1){ contador++; printInteger(contador); serialWrite(10); serialWrite(13); } } estadoanteriorboton = valor; } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 25. Práctica 4: Contando eventos I Montaje GND Pin13 + 5v Pin7 Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 26. Práctica 5: Contando eventos II LED CONTADOR DE 0 A 10 PIN 13 220 ohm Se trata de realizar una variación sobre el ejemplo anterior de tal manera que cuando el valor del contador llegue a 10 se ponga a cero y comience de nuevo. Configuración E/S SD PIN 13 LED ED PIN 7 Botón valor=0; contador=0 estadoanteriorboton=0 Botón 10K +5V PIN7 Hacer que valor=Boton Hacer que LED=valor valor=1 no si valor <> estadoanteriorboton si Haz que contador=contador+1 Imprime contador no si contador=10 no Haz que contador=0 Haz que estadoanteriorboton=valor Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 27. Práctica 5: Contando eventos II * Detecta si el botón conectado a la entrada 7 ha sido presionado y enciende el LED * Envía al PC el valor de la variable de cuenta ""Contador" vía puerto serie. /* Programa Contador de 0 a 10 */ int LED = 13; int Boton = 7; int valor = 0; int contador = 0; int estadoanteriorboton = 0; void setup() { beginSerial(9600); // Configura velocidad de transmisión a 9600 pinMode(LED, OUTPUT); // inicializa como salida digital el pin 13 pinMode(Boton, INPUT); // inicializa como entrada digital el 7 } Continua -> Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 28. Práctica 5: Contando eventos II void loop() { valor = digitalRead(Boton); // lee el valor de la entrada digital pin 7 digitalWrite(LED, valor); // manda el valor leído a la salida if(valor != estadoanteriorboton){ //Testea si ha cambiado el valor botón if(valor == 1){ contador++; printInteger(contador); // envía al puerto el valor de contador serialWrite(10); serialWrite(13); if (contador==10) { // Limita la cuenta al valor 10 contador=0; } } } estadoanteriorboton = valor; } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 29. Práctica 5: Contando eventos II MONITORIZAR Una vez iniciado el programa debemos pulsar el botón “Monitorizar” para poder ver en la pantalla el valor del numero de eventos contados Valor CONTADOR 7 Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 30. Práctica 5: Contando eventos II Montaje GND Pin13 + 5v Pin7 Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 31. Práctica 6: Gobierno de una lámpara mediante un relé Este sencillo ejemplo enseña como encender una bombilla de 220V de corriente alterna (AC) mediante un circuito de 5V de corriente continua (DC) gobernado por Arduino. Se puede utilizar con cualquier otro circuito de 220V con un máximo de 10A (con el relé del ejemplo). Componentes: el Relé es un dispositivo, que funciona como un interruptor controlado por un circuito eléctrico en el que, por medio de un electroimán, se acciona un juego de uno o varios contactos que permiten abrir o cerrar otros circuitos eléctricos independientes. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 32. Práctica 6: Gobierno de una lámpara mediante un relé Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 33. Práctica 6: Gobierno de una lámpara mediante un relé Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 34. Práctica 6: Gobierno de una lámpara mediante un relé Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 35. Práctica 6: Gobierno de una lámpara mediante un relé /* Enciende y apaga una bombilla de 220V, cada 2 segundos, mediante un relé conectado al PIN 8 de Arduino */ int relayPin = 8; // PIN al que va conectado el relé void setup(){ pinMode(relayPin, OUTPUT); } void loop() { digitalWrite(relayPin, HIGH); // ENCENDIDO delay(2000); digitalWrite(relayPin, LOW); // APAGADO delay(2000); } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 36. Práctica 7: Generador de notas musicales Se trata de generar hasta 8 notas musicales por una de las salidas analógicas de Arduino –PIN10Se debe crear un array (vector) de datos compuesto por los valores correspondientes a las 8 notas que se pretende sacar: int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; Se deben definir también el tiempo de pausa entre nota y nota y el tiempo de pausa de fin de secuencia de notas: int tnota=100; int pausa=100; Las iteraciones para el recorrido de las 8 notas se realizan con una instrucción de tipo for: for(n=0;n<8;n++) El tiempo de activado y desactivado de la salida del zumbador también se resuelve con un bucle for: for(m=0;m<=tnota;m++){ Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 37. Práctica 7: Generador de notas musicales // Generador de Notas Musicales int piezo=10; int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; //cadena con los tiempos que corresponden a las distintas notas int n=0; int m= 0; int tnota=100; //nº de repeticiones del pulso. Nos da la duración de la nota int pausa=100; void setup() { pinMode(piezo,OUTPUT); } void loop(){ for(n=0;n<8;n++){ //iteración que recorre la lista con las duraciones de los pulsos de cada nota for(m=0;m<=tnota;m++){ digitalWrite(piezo,HIGH); delayMicroseconds(notas[n]); //Tiempo en microsegundos que está a 5V la salida del piezoeléctrico digitalWrite(piezo,LOW); delayMicroseconds(notas[n]); //Tiempo en microsegundos que está a 0V la salida del piezoeléctrico } delay(pausa); //tiempo en silencio entre escalas } } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 38. Práctica 7: Generador de notas musicales Montaje Recordar que el zumbador piezoeléctrico tiene polaridad (+) y (-) Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 39. Práctica 8: Timbre de llamada Se trata de realizar un timbre a través de un zumbador (salida 10) que emita dos tonos recogidos de una colección de ocho tonos, por ejemplo el tono 0 y el tono 6. El timbre se activa mediante un pulsador conectado en el PIN5 (entrada digital). int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; tono0=1915 tono6=1014 Para la resolución de este ejemplo se sugiere crear un procedimiento llamado nota al que se incoará cuando se pulse el pulsador conectado en el PIN 5 Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 40. Práctica 8: Timbre de llamada Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 41. Práctica 8: Timbre de llamada //Timbre de llamada int notas[] = {1915, 1700, 1519, 1432, 1275, 1136, 1014, 956}; //definición de matriz de 8 notas int puls=5; // designación del pulsador de llamada int zumb=10; // designación de la salida hacia el zumbador int tnota=150; int n=0; int m=0; void setup (){ for(n=0;n<4;n++){ pinMode(zumb,OUTPUT); pinMode(puls,INPUT); } } Continúa Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 42. Práctica 8: Timbre de llamada RUTINA void nota(){ // rutina que genera los tonos de llamada for(m=0;m<=tnota;m++){ digitalWrite(zumb,HIGH); delayMicroseconds(notas[n]); digitalWrite(zumb,LOW); delayMicroseconds(notas[n]); } } void loop(){ if(digitalRead(puls)==HIGH){ n=0; //elegimos la primera nota del timbre nota(); //que aquí es la primera de la cadena delay(200); n=6; //elegimos la segunda nota del timbre nota(); //que aquí es la sexta de la cadena delay(200); } } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 43. Salidas Digitales -Hacer sonar piezos Componentes: el piezo eléctrico o "chicharra" es un componente que transforma un tren de pulsos en sonido. A bajo nivel transforma un cambio de voltaje en un movimiento físico de dos placas metálicas. También puede ser utilizado como Sensor de Vibraciones, para ello hay que situarlo en paralelo con una resistencia de 1M y conectarlo a una entrada analógica. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 44. Entradas Analógicas Existen 6 canales de entrada analógica: AN0 .. AN5. Las entradas analógicas deben variar entre 0 y 5v. La conversión se realiza con una precisión de 10 Bits (0 a 1024) Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 45. Entradas analógicas Divisor de tensión resistivo Un divisor de tensión es una configuración de circuito eléctrico que reparte la tensión de una fuente entre una o más impedancias conectadas en serie. Un divisor resistivo es un caso especial donde ambas impedancias, son puramente resistivas. Arduino sólo puede leer voltajes, y muchos sensores son resistivos (varían la resistencia). Por eso hay que usar circuitos de este tipo para leer el valor de los sensores. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 46. Entradas analógicas El uso de un potenciómetro y uno de los pines de entrada analógicadigital de Arduino (ADC) permite leer valores analógicos que se convertirán en valores dentro del rango de 0-1024. Es posible utilizar un potenciómetro simular una entrada analógica o bien un sensor de tipo resistivo. Es posible también conectar Sensores cuya salida sea de 0 a 5v. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 47. Entradas analógicas 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' Nota: Los pins analógicos (0-5) a diferencia de pines digitales, no necesitan ser declarados como INPUT u OUPUT ya que son siempre INPUT´s. Taller de electrónica para usos creativos Prácticas con Arduclema Nivel I. José Manuel Ruizopen lab viernes Gutiérrez 36
  • 48. Práctica 9: Potenciómetro como entrada analógica Se trata de configurar un canal de entrada analógico pin 5 y enviar el valor leído al PC para visualizarlo Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 49. Práctica 9: Potenciómetro como entrada analógica /* Programa Entrada Analógica */ int potPin = 5; // selecciona el pin de entrada para colocar el potenciómetro int val = 0; // variable para almacenar el valor leído por la entrada analógica void setup() { beginSerial(9600); } void loop() { val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica printInteger(val); // Envía al PC el valor analógico leído y lo muestra en pantalla serialWrite(10); delay(100); } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 50. Práctica 9: Potenciómetro como entrada analógica AN5 Se conectan tres cables a la tarjeta Arduino. El primero va a tierra desde uno de los terminales externos (1 o 3) del potenciómetro. El segundo va desde la salida de 5 voltios hacia el otro terminal externo del potenciómetro. EL tercero va desde la entrada analógica #5 hasta el terminal interno del potenciómetro. Girando el dial o ajustando el potenciómetro, cambiamos el valor de la resistencia variable. Esto produce oscilaciones dentro del rango de 5 y 0 voltios, que son capturados por la entrada analógica. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 51. Práctica 10: Midiendo Luz con Arduino Una fotocélula (o LDR -Light-Dependent Resistor) es una resistencia que varia su intensidad según la luz que recibe. Cuanta más luz menos resistencia ejerce a la corriente. Una LDR considera un sensor de luminosidad, se pueden usar para apagar las luces es de día o encenderlas cuando es de noche. Estas variables son de tipo analógico, como medir el sonido, la inclinación, la presión o el desplazamiento. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 52. Práctica 10: Midiendo Luz con Arduino Se trata de colocar un sensor de luz LDR conectado a la entrada analógica AN3 y medir la luz mostrando el resultado en el ordenador /* Programa Medida de luz */ int potPin = 5; // selecciona el pin de entrada para colocar la LDR int val = 0; // variable para almacenar el valor leído por la entrada analógica void setup() { beginSerial(9600); } void loop() { val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica printInteger(val); // Envía al PC el valor analógico leído y lo muestra en pantalla serialWrite(10); delay(100); } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 53. Práctica 10: Midiendo Luz con Arduino Para mostrar el valor en pantalla debemos pulsar el Botón MONITOR y en la parte de abajo leeremos el valor Valor leído Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 54. Práctica 10: Midiendo Luz con Arduino Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 55. Práctica 11: Midiendo Temperatura con Arduino Una resistencia NTC o PTC es una resistencia variable, que varia su valor dependiendo de la temperatura ambiente. NTC Cuanta mas temperatura menor será su resistencia. PTC Cuanto mas temperatura mayor será la resistencia. Taller de electrónica para usos creativos Prácticas con Arduclema Nivel I. José Manuel Ruizopen lab viernes Gutiérrez 40
  • 56. Práctica 11: Midiendo Temperatura con Arduino /* Programa Medida de Temperatura */ int potPin = 3; // selecciona el pin de entrada para colocar la PTC int val = 0; // variable para almacenar el valor leído por la entrada analógica void setup() { beginSerial(9600); } void loop() { val = analogRead(potPin); // lee el valor del canal de ENTRADA analógica printInteger(val); // Envía al PC el valor analógico leído y lo muestra en pantalla serialWrite(10); delay(100); } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 57. Práctica 11: Midiendo Temperatura con Arduino Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 58. Salidas analógicas Arduino en su versión ATMega 168 ofrece 6 salidas analógicas del Tipo PWM en los pines de E/S digitales 11,10,9,6,5 y 3. Naturalmente que estas pueden ser también configuradas como E/S digitales El valor de la salida oscilará entre 0 y 5v en 255 pasos Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 59. Salidas analógicas PWM El chip Atmega de Arduino, como muchos microcontroladores, no puede generar una salida analógica, por lo que tiene que utilizar la técnica PWM (Pulse Width Modulation). PWM consiste en simular mediante una salida digital un salida analógica. Tres características de las señales PWM: - Altura (heigth) – Anchura (width) - Periodo (period) Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 60. Salidas analógicas PWM • El voltaje de salida es la media del tiempo que está a 5V con respecto del tiempo que está a 0V Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 61. Salidas analógicas Arduino (chip Atmega8) dispone de 3 pines digitales para PWM: 9,10,11 Arduino (chip Atmega168), Arduino Diecimilla dispone de 6 pines digitales para PWM: 3, 5, 6, 9, 10 y 11 A diferencia de las entradas analógicas en las que el conversor da valores entre 0 y 1024 para generar una salida digital el rango es de 0 a 255. Donde 0 equivale a 0v. Y 255 equivale a 5 v. Los pines analógicos, al contrario que los digitales no necesitan ser configurados como INPUT (entrada) u OUPUT (salida) Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 62. Salidas analógicas analogWrite(pin, value) analogWrite(pin, valor); // escribe 'valor' en el 'pin' definido como analógico 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´s de Arduino marcados como “pin PWM”.. 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. Importante: No es necesario configurar como salida las salidas PWM, por defecto Arduino considera que son salidas. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 63. Práctica 12:Variando la Intensidad de un LED Se trata de que enviemos hacia la salida 9 un valor analógico ascendente y descendente cíclicamente comprendido entre 0 y 255 en incrementos de 5. Para la realización de este ejercicio se debe empleará una estructura de programación tipo for que realice el incremento o decremento de una variable entre 0-255 y 255-0 con un valor te retardo entre cambio de valor de 30 mseg. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 64. Práctica 12:Variando la Intensidad de un LED Listado del programa /* Variando la intensidad de un LED */ int value = 0; // Valor a sacar por la salida analógica PIN 9 int ledpin = 9; // Salida analógicas PIN 9 void setup() { } // no es necesario void loop() { for(value = 0 ; value <= 255; value+=5) // Variación de la variable se salida ente el MIN yMAX { analogWrite(ledpin, value); // Enviar valor a la salida (entre 0 y 255) delay(30); // Esperar 30 ms para ver el efecto de variación } for(value = 255; value >=0; value-=5) // Variación de la variable de salida entre MAX y MIN { analogWrite(ledpin, value); delay(30); } } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 65. Práctica 12:Variando la Intensidad de un LED Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 66. Práctica 13:Control de la velocidad de un motor Control de un motor de cc con un transistor Con este ejemplo vamos a controlar la velocidad de un motor de cc mediante la utilización de un transistor BD137. Se trata de utilizar la posibilidad de enviar una señal de PWM a una de las salidas configurables como salidas analógicas Componentes a utilizar Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 67. Práctica 13:Control de la velocidad de un motor Control de un motor de cc con un transistor La tensión que sacaremos a la salida 10 (analógica tipo PWM) variara en forma de rampa ascendente y descendente de manera cíclica tal como vemos en la figura. Este efecto lo conseguimos con una estructura del tipo for: for(valor = 0 ; valor <= 255; valor +=5) (ascendente) for(valor = 255; valor >=0; valor -=5) (descendente) Obsérvese que los incrementos del valor de la tensión van de 5 en 5 y tenemos que considerar que 0v equivale a 0 y 5 v. equivale a 255. Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 68. Práctica 13:Control de la velocidad de un motor Listado del programa Control de un motor de cc con un transistor /* Control de la velocidad de un motor */ int valor = 0; // variable que contiene el valor a sacar por el terminal analógico int motor = 10; // motor conectado al PIN 10 void setup() { } // No es necesario void loop() { for(valor = 0 ; valor <= 255; valor +=5) { // se genera una rampa de subida de tensión de 0 a 255 es decir de 0 a 5v analogWrite(motor, valor); delay(30); // espera 30 ms para que el efecto sea visible } for(valor = 255; valor >=0; valor -=5) { // se genera una rampa de bajada de tensión de 255 a 0 es decir de 5 a 0v analogWrite(motor, valor); delay(30); } } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 69. Práctica 13:Control de la velocidad de un motor Control de un motor de cc con un transistor Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 70. Práctica 14:Control de la velocidad de un motor mediante un potenciómetro Se trata de controlar la velocidad a nuestro gusto es decir mediante un potenciómetro que se coloca en una de las entradas analógicas y en función del valor que se lea en la entrada así girará mas o menos rápido el motor. Componentes a utilizar Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 71. Práctica 14:Control de la velocidad de un motor mediante un potenciómetro /* Control de la velocidad de un motor mediante un potenciómetro */ int valor = 0; // variable que contiene el valor a sacar por el terminal analógico int motor = 10; // motor conectado al PIN 10 int potenciometro=0; // Se define la entrada analógica void setup() { } // No es necesario void loop() { valor = analogRead(potenciometro); // se lee el valor de la entrada analógica y se asigna a val analogWrite(motor, valor); // Se manda a la salida analógica 0 el valor leído delay(30); // espera 30 ms para que el efecto sea visible } Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez
  • 72. Práctica 14:Control de la velocidad de un motor mediante un potenciómetro Montaje Prácticas con Arduclema Nivel I. José Manuel Ruiz Gutiérrez