Arduino Digital.docx

51
Arduino Digital: Detección de cambio de estado (detección de bordes) Una vez que se tiene un pulsador funcionando, a menudo se quiere hacer algo de acción basado en las veces que se pulsa el botón. Para ello, es necesario saber que el botón cambia el estado de apagado a encendido, y contar el número de veces que ocurre este cambio de estado. Esto se conoce como detección de cambio de estado o detección de bordes. El IDE del Arduino nos proporciona una herramienta que nos permite enviar y visualizar los datos que se manejan a través del puerto Serial. Dicha herramienta se conoce como Monitor Serial y se puede encontrar en el menú de herramientas, en la opción “Monitor Serial”. En el presente proyecto se usara dicha herramienta para visualizar nuestros datos. Hardware Requerido Tarjeta Arduino Pulsador Resistencia (10K ohm) Protoboard LED Resistencia (220 ohm) Circuito Conectar los tres cables a la tarjeta Arduino. Los dos primeros cables, rojo y negro, se conectan hacia las filas verticales en un lado del protoboard para proporcionar una fuente de 5 voltios y tierra. El tercer cable se conecta desde el pin digital 2 hacia una pata del pulsador. La otra pata del pulsador se conecta hacia hacia la fuente de 5 voltios y la resistencia, donde esta ultima se conecta a tierra. Al presionar el pulsador se conectan los dos puntos. Cuando el pulsador esta abierto (no presionado) no hay conexión entre sus 2 patas. Así que el pin es conectado hacia tierra y lo lee como LOW, o 0. Cuando el pulsador esta cerrado (presionado), esto crea una conexión entre sus dos patas, conectando el pin a 5 voltios, así que el pin lo lee como HIGH, o 1. También conectamos una resistencia de 220-ohm al pin 13. Después conectamos la pata larga de un LED (la pata positiva, llamada ánodo) a la resistencia. Mientras que la pata corta (la pata negativa, llamada cátodo) a tierra. Esquemático

Transcript of Arduino Digital.docx

Arduino Digital: Deteccin de cambio de estado (deteccin de bordes)

Una vez que se tiene un pulsador funcionando, a menudo se quiere hacer algo de accin basado en las veces que se pulsa el botn. Para ello, es necesario saber que el botn cambia el estado de apagado a encendido, y contar el nmero de veces que ocurre este cambio de estado. Esto se conoce como deteccin de cambio de estado o deteccin de bordes.El IDE del Arduino nos proporciona una herramienta que nos permite enviar y visualizar los datos que se manejan a travs del puerto Serial. Dicha herramienta se conoce como Monitor Serial y se puede encontrar en el men de herramientas, en la opcin Monitor Serial. En el presente proyecto se usara dicha herramienta para visualizar nuestros datos.Hardware Requerido Tarjeta Arduino Pulsador Resistencia (10K ohm) Protoboard LED Resistencia (220 ohm)Circuito

Conectar los tres cables a la tarjeta Arduino. Los dos primeros cables, rojo y negro, se conectan hacia las filas verticales en un lado del protoboard para proporcionar una fuente de 5 voltios ytierra. El tercer cable se conecta desde el pin digital 2 hacia una pata del pulsador. La otra pata del pulsador se conecta hacia hacia la fuente de 5 voltios y la resistencia, donde esta ultima se conecta atierra. Al presionar el pulsador se conectan los dos puntos. Cuando el pulsador esta abierto (no presionado) no hay conexin entre sus 2 patas. As que el pin es conectado haciatierray lo lee como LOW, o 0. Cuando el pulsador esta cerrado (presionado), esto crea una conexin entre sus dos patas, conectando el pin a 5 voltios, as que el pin lo lee como HIGH, o 1.Tambin conectamos una resistencia de 220-ohm al pin 13. Despus conectamos la pata larga de un LED (la pata positiva, llamada nodo) a la resistencia. Mientras que la pata corta (la pata negativa, llamada ctodo) atierra.Esquemtico

Cdigo:/* Deteccin de cambio de estado (deteccin de bordes) A menudo, no es necesario conocer el estado de una entrada digital todo el tiempo, pero usted slo tiene que saber cuando la entrada cambia de un estado a otro. Por ejemplo, usted quiere saber cuando un botn pasa de OFF a ON. Esto se conoce como deteccin de cambio de estado, o la deteccin de bordes.

Este ejemplo muestra como detectar cuando un pulsador cambia de OFF a ON y de OFF a ON */

// las constantes no cambiaran su valor.constintbuttonPin=2; // el nmero del pin, entrada del pulsadorconstintledPin=13; // el nmero del pin, salida al LED

// declaracion de variablesintbuttonPushCounter=0;// contador para el numero de pulsadasintbuttonState=0; // estado actual del pulsadorintlastButtonState=0; // estado anterior del pulsador

voidsetup(){// inicializa el pin 2 como pin de entradapinMode(buttonPin,INPUT);// inicializa el pin 13 como pin de salidapinMode(ledPin,OUTPUT);// inicializa la comunicacin serialSerial.begin(9600);}

voidloop(){// lee el estado del pulsador buttonState=digitalRead(buttonPin);

// compara el estado del pulsador con el estado previo del mismoif(buttonState!=lastButtonState){ // si el estado cambio, el contador incrementa if(buttonState==HIGH){ // si el estado actual es HIGH entonces el pulsador

// cambio de OFF a ON buttonPushCounter++; Serial.println("on"); Serial.print("numero de pulsadores presionados: "); Serial.println(buttonPushCounter); } else{ // si el estado actual del pulsador es LOW entonces el pulsador

// cambio de ON a OFF Serial.println("off"); }}// guarda el estado actual como el ultimo estado, lastButtonState=buttonState;// el LED se enciende cada cuatro pulsadasif(buttonPushCounter%4==0){ digitalWrite(ledPin,HIGH);}else{ digitalWrite(ledPin,LOW);}}

Arduino Analgico: Escritura analgica con 12 LED's

Este ejemplo atenua 12 LED's, uno por uno, usando la tarjeta Arduino Mega.Hardware Requerido Tarjeta Arduino Mega Doce LED's Doce resistencias (220 ohm) ProtoboardCircuito

Conectar la pata ms larga (nodo) de los LED's a las resistencias, las cuales se conectarn a los pines digitales 2-13. Por ltimo, conectar la pata corta de los LED's a tierra.Esquemtico

Cdigo:/* Prueba del comando analogWrite en Arduino Mega El siguiente esquema fue escrito para Arduino Mega y no funcionar para tarjetas previas.

Dentro de la funcin setup(), se usa la funcion loop(), la cual es usada para asignar a los pines digitales 2-13 como pines de salida.

A continuacin, en la funcin loop () del programa, un tro de anidado de for() se utilizan. El primero de estos bucles:

for (int thisPin =lowestPin; thisPin = 0; brightness--) { analogWrite(thisPin, brightness); delay(2);}

Este bucle resta de uno en uno la variable de brightness. Una vez que se llega a cero, el loop() principal entra en accin, y el programa pasa al siguiente pin y se repite todos los pasos mencionados anteriormente.

*/

// declaracion de constantesconstintlowestPin=2;constinthighestPin=13;

voidsetup(){// se configura los pines 2-13 como pines de salidafor(intthisPin=lowestPin;thisPin=255){ intensidad=255; aumentando_intensidad=false; }else{ estado_secuencia=0;// Para quedarnos en el estado 1 } }else{ intensidad=intensidad-1; if(intensidad=255){ intensidad=255; aumentando_intensidad=false; }else{ estado_secuencia=0;// Para quedarnos en el estado 1 } }else{ intensidad=intensidad-1; if(intensidadthreshold){ digitalWrite(ledPin,HIGH);}else{ digitalWrite(ledPin,LOW);}

// imprime el valor analgicoSerial.println(analogValue);delay(1); // retraso entre lecturas para estabilizar}Piano usando Pulsadores

En este proyecto, se usa siete pulsadores que simulan el comportamiento de un piano en donde cada pulsador esta asociado a una nota musical bsica (DO, RE, MI, FA, SOL, LA, SI). Es as que al presionan un pulsador se emite el sonido de la nota musical asociada a esa pulsador.Hardware Requerido Arduino UNO Protoboard 7 Pulsadores Parlante 7 resistencias de 10K 1 resistencia 100Circuito

Reproduciremos los sonidos de las notas musicales bsicas, como se ve en la figura se tiene 7 pulsadores, los cuales corresponden a 7 "teclas", cada una asociada a una nota bsica. El programa se encargar de revisar el estado de cada pulsador, si encuentra que el estado de algun pulsador esta activo(se presiono) entonces emitir la nota asociada al pulsador presionado.Se debe tener en cuenta que mientras se emite el sonido de alguna nota, el programa no realiza nada ms. As mismo, cuando se analisis el estado de los pulsadores, esto se realiza de manera secuencial, con lo cual si se presiona dos o ms pulsadores al mismo tiempo, solo se emitira el sonido de una sola nota.NOTA: Como se puede ver en la figura se hace uso del pin 0 o pin RX, dicho pin es usado por Arduino al momento de programar, por lo tanto si hacemos todas las conexiones y le damos a programar, nos aparecer un error. Por tal motivo, al momento que se va programar se debera desconectar la conexion que tiene el pin 0(pin RX). Despues se conecta normalmente.Esquemtico

Cdigo:/* PIANO usando pulsadores*/

// se definen las constantes// se declaran las frecuencia de las notas bsicasconstintNOTA_DO =262;constintNOTA_RE =294;constintNOTA_MI =330;constintNOTA_FA =349;constintNOTA_SOL=392;constintNOTA_LA =440;constintNOTA_SI =494;

// se declaran los pines asociados a las notas bsicasconstintpulsador_DO =8;constintpulsador_RE =7;constintpulsador_MI =6;constintpulsador_FA =5;constintpulsador_SOL=4;constintpulsador_LA =3;constintpulsador_SI =2;

// se define las notas que se reproducirnintnotas_basicas[]={NOTA_DO,NOTA_RE,NOTA_MI,NOTA_FA,NOTA_SOL,NOTA_LA,NOTA_SI};intpulsadores []={pulsador_DO,pulsador_RE,pulsador_MI,pulsador_FA, pulsador_SOL,pulsador_LA,pulsador_SI};intpulsador_activado=0;

voidsetup(){// se define los pines de entrada y salidafor(intpin=6;pin>0;pin--){ pinMode(pulsadores[pin],INPUT);}}

voidloop(){intpulsador_actual;// se declara como variable local// el bucle analiza el estado de los 7 pulsadoresfor(intpulsador=0;pulsador409){// rango led3 : 410 - 614 digitalWrite(led1,LOW); digitalWrite(led2,LOW); digitalWrite(led3,HIGH); digitalWrite(led4,LOW); digitalWrite(led5,LOW);}elseif(valorPot>205){// rango led2 : 206 - 409 digitalWrite(led1,LOW); digitalWrite(led2,HIGH); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW);}else{// rango led1 : 0 - 205 digitalWrite(led1,HIGH); digitalWrite(led2,LOW); digitalWrite(led3,LOW); digitalWrite(led4,LOW); digitalWrite(led5,LOW);}}

Deteccin de movimiento con PIR

En este tutorial se implementar un circuito detector de movimiento, en el cual usaremos un sensor PIR(Sensor Infrarrojo Pasivo).Los sensores de movimientos PIR no emiten ninguna seal, por eso se les denomina sensor pasivo. Cuando un objeto tiene una temperatura diferente a la del medio y se encuentra dentro del campo de captacin del sensor, la radiacin calrica del objeto ser captada por los lentes del sensor e inmediatamente este se acciona. Este sensor puede detectar todo cuerpo que irradie calor. Los rayos infrarrojos que provienen de un objeto o un ser vivo son detectados por el sensor mediante un sistema de lentes Fresnel o mediante un espejo que contiene cristales piroelctricos.Este sensor cuenta con dos potencimetros acoplados. El potencimetro Sx nos sirve para ajustar el alcance de sensado y con el potencimetro Tx podemos ajustar el tiempo de reaccin o tiempo de deteccin.Estos sensores son empleados mayormente enalarmas, puertas automticas y para el ahorro de energa.Hardware Requerido Un sensor PIR Un led Una resistencia de 220 Arduino UNO Protoboard CablesCircuito

Esquemtico

En el uso de un PIR, se recomienda esperar un tiempo de 10 segundos antes de empezar con el sensado para que se realice la calibracin del sensor.Usaremos un led que nos indicar cuando se ha producido una deteccin. El led se encender cuando se detecte algn objeto y se mostrar en el monitor serial un mensaje de deteccin. Cuando el objeto se encuentre fuera de rango; es decir, cuando ya no pueda ser detectado por el PIR, en el monitor serial se mostrar un mensaje de fin de deteccin y se apagar el led.Cdigo:#include // Libreria a usar para la visualizacion en display de 7 segmentos

// Se crea una instancia de la clase Paruro7Seg llamada Seg// para llamar al constructor.// El constructor usa la funcion configPin() por lo que pasamos los argumentos de esa funcion.Paruro7Seg Seg(2,3,4);// pines: diplay de las unidades, decenas y centenas

intpirEstado=0;intpirEstadoAnterior=0;intpinPir=9; // pin del sensorintbotonPin=8;

intbotonEstado=0;floatcontador=0;// cuenta el numero de detecciones, se inicia en cero

voidsetup(){Serial.begin(9600);pinMode(pinPir,INPUT);pinMode(botonPin,INPUT);digitalWrite(pinPir,LOW);// se inicializa el PIR y el LED

Serial.print("Calibrando sensor ");for(inti=0;i