Arduino Practicas
Arduino Practicas
Arduino Practicas
Prcticas Nivel I
Arduclema
Prcticas Nivel I
Relacin de Prcticas programadas
Salidas Digitales: 1. 2. Manejo de una salida digital. Intermitente Secuencia bsica de 3 LEDs. Semforo
Entradas digitales: 3. 4. 5. 6. 7. 8. Lectura de un pulsador Contando eventos I Contando eventos II Gobierno de una lmpara mediante un rel Generador de notas musicales Timbre de llamada
Entradas Analgicas 9. Potencimetro como entrada analgica 10. Midiendo Luz con Arduino 11. Midiendo Temperatura con Arduino Salidas Analgicas 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 potencimetro
1N4001
Esquema elctrico
Esquema de conexionado
GND
Pin10
Protoboard
Arduclema
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 analgicas tipo PWM
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)
Intermitente. Ejemplo bsico 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.
Protoboard
Arduclema En el caso de conectar a la salida Pin13 no se necesita poner la resistencia de 220 ohmios en las dems salidas SI SIEMPRE
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
Pin13
LED significa "Light Emiting Diode". Son diodos que se iluminan cuando pasa la electricidad.
PIN 8
220 ohm
Activa ledPin1 PIN6=HIGH Delay (200 ms) Desactivar ledPin1 PIN6=LOW Delay (200 ms)
Activa ledPin2 PIN7=HIGH Delay (200 ms) Desactivar ledPin2 PIN7=LOW Delay (200 ms)
Activa ledPin3 PIN8=HIGH Delay (200 ms) Desactivar ledPin3 PIN8=LOW 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. Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
Montaje
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 analgicas tipo PWM
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 ledo en Pin
Pulsado No Pulsado Valor=1 Valor=0
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
LED
Es un caso especfico de divisor resistivo. Sirve para leer valores digitales sin que el valor de entrada sea indeterminado.
Resistencia Pulsador
Pin entrada
PIN GND
Importante!
Se trata de contar las veces que se pulsa un botn 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 nmero de impulsos generados se enva al PC para que se visualice en la pantalla.
PIN 13 220 ohm Configuracin E/S SD PIN 13 LED ED PIN 7 Botn valor=0; contador=0 estadoanteriorboton=0 Botn +5V PIN7 10K
Asignacin de variables
Programa
/* Programa Contador Prctica 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 transmisin 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; } Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
GND Pin13 + 5v
Pin7
CONTADOR DE 0 A 10 PIN 13 220 ohm Configuracin E/S SD PIN 13 LED ED PIN 7 Botn valor=0; contador=0 estadoanteriorboton=0 Botn +5V PIN7
LED
10K
Se trata de realizar una variacin sobre el ejemplo anterior de tal manera que cuando el valor del contador llegue a 10 se ponga a cero y comience de nuevo.
no
Continua ->
Una vez iniciado el programa debemos pulsar el botn Monitorizar para poder ver en la pantalla el valor del numero de eventos contados
Valor CONTADOR
GND Pin13 + 5v
Pin7
Componentes: el Rel es un dispositivo, que funciona como un interruptor controlado por un circuito elctrico en el que, por medio de un electroimn, se acciona un juego de uno o varios contactos que permiten abrir o cerrar otros circuitos elctricos independientes.
/* 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); }
Montaje
Para la resolucin de este ejemplo se sugiere crear un procedimiento llamado nota al que se incoar cuando se pulse el pulsador conectado en el PIN 5
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); } }
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
Entradas Analgicas
Existen 6 canales de entrada analgica: AN0 .. AN5. Las entradas analgicas deben variar entre 0 y 5v. La conversin se realiza con una precisin de 10 Bits (0 a 1024)
Entradas analgicas
Divisor de tensin resistivo
Un divisor de tensin es una configuracin de circuito elctrico que reparte la tensin de una fuente entre una o ms impedancias conectadas en serie. Un divisor resistivo es un caso especial donde ambas impedancias, son puramente resistivas. Arduino slo puede leer voltajes, y muchos sensores son resistivos (varan la resistencia). Por eso hay que usar circuitos de este tipo para leer el valor de los sensores.
Entradas analgicas
El uso de un potencimetro y uno de los pines de entrada analgicadigital de Arduino (ADC) permite leer valores analgicos que se convertirn en valores dentro del rango de 0-1024. Es posible utilizar un potencimetro simular una entrada analgica o bien un sensor de tipo resistivo. Es posible tambin conectar Sensores cuya salida sea de 0 a 5v.
Entradas analgicas
analogRead(pin)
Lee el valor de un determinado pin definido como entrada analgica con una resolucin de 10 bits. Esta instruccin slo 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 analgicos (0-5) a diferencia de pines digitales, no necesitan ser declarados como INPUT u OUPUT ya que son siempre INPUTs.
Prcticas con Arduclema Nivel I. Jos Manuel Ruizopen lab viernes Gutirrez 36
Se trata de configurar un canal de entrada analgico pin 5 y enviar el valor ledo al PC para visualizarlo
Se conectan tres cables a la tarjeta Arduino. El primero va a tierra desde uno de los terminales externos (1 o 3) del potencimetro. El segundo va desde la salida de 5 voltios hacia el otro terminal externo del potencimetro. EL tercero va desde la entrada analgica #5 hasta el terminal interno del potencimetro. Girando el dial o ajustando el potencimetro, cambiamos el valor de la resistencia variable. Esto produce oscilaciones dentro del rango de 5 y 0 voltios, que son capturados por la entrada analgica.
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
Valor ledo
Prcticas con Arduclema Nivel I. Jos Manuel Ruizopen lab viernes Gutirrez 40
Salidas analgicas
Arduino en su versin ATMega 168 ofrece 6 salidas analgicas del Tipo PWM en los pines de E/S digitales 11,10,9,6,5 y 3.
Naturalmente que estas pueden ser tambin configuradas como E/S digitales El valor de la salida oscilar entre 0 y 5v en 255 pasos
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
Salidas analgicas
PWM
El chip Atmega de Arduino, como muchos microcontroladores, no puede generar una salida analgica, por lo que tiene que utilizar la tcnica PWM (Pulse Width Modulation). PWM consiste en simular mediante una salida digital un salida analgica.
Salidas analgicas
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 analgicas 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 analgicos, al contrario que los digitales no necesitan ser configurados como INPUT (entrada) u OUPUT (salida)
Salidas analgicas
analogWrite(pin, value)
analogWrite(pin, valor); // escribe 'valor' en el 'pin' definido como analgico
Esta instruccin sirve para escribir un pseudo-valor analgico utilizando el procedimiento de modulacin por ancho de pulso (PWM) a uno de los pins de Arduino marcados como pin PWM.. El valor que se puede enviar a estos pines de salida analgica puede darse en forma de variable o constante, pero siempre con un margen de 0-255.
Componentes a utilizar
La tensin que sacaremos a la salida 10 (analgica tipo PWM) variara en forma de rampa ascendente y descendente de manera cclica 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) Obsrvese que los incrementos del valor de la tensin van de 5 en 5 y tenemos que considerar que 0v equivale a 0 y 5 v. equivale a 255.
Componentes a utilizar
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez
/* Control de la velocidad de un motor mediante un potencimetro */ int valor = 0; // variable que contiene el valor a sacar por el terminal analgico int motor = 10; // motor conectado al PIN 10 int potenciometro=0; // Se define la entrada analgica void setup() { } // No es necesario void loop() { valor = analogRead(potenciometro); // se lee el valor de la entrada analgica y se asigna a val analogWrite(motor, valor); // Se manda a la salida analgica 0 el valor ledo delay(30); // espera 30 ms para que el efecto sea visible }
Prcticas con Arduclema Nivel I. Jos Manuel Ruiz Gutirrez