Lic. Gerardo Espinoza Ramrez Instituto Tecnolgico Superior de Ciudad Serdn.
3.1.1. Lectura analgica
Sentencia analogRead()
valor = analogRead(Pin);
Ejemplo 3.1. Lectura de un potencimetro. En este ejemplo se utiliza un pin analgico como entrada para leer los valores de un potencimetro, una vez que la lectura del potencimetro alcanza un valor de 500 entonces se enciende un diodo LED. //[[[DECLARACIN DE VARIABLES]]]
int valorPot; // Se declara la variable 'valorPot' la cual guardar el valor ledo del potencimetro. int pinLed=5; // Se declara la variable 'pinLed' que almacena el valor 5 del pin de la tarjeta Arduino.
//[[[DECLARACIN DE VARIABLES]]]
//[[[CONFIGURACIN (SE EJECUTA SLO UNA VEZ)]]] void setup() { pinMode(pinLed, OUTPUT); // Se establece a 'pinLed' como una salida digital. } //[[[CONFIGURACIN (SE EJECUTA SLO UNA VEZ)]]]
//[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]] void loop() { valorPot=analogRead(A0); // Se lee el valor analgico del pin 'A0' donde se encuentra conectado el potencimetro, una vez ledo el valor se guarda en // la variable 'valorPot'. if(valorPot>=500) // Condicin: SI la variable 'valorPot' es MAYOR O IGUAL a 500: { digitalWrite(pinLed, HIGH); // Escribir un 'ALTO' en el 'pinLed'. } else // En otro caso. { digitalWrite(pinLed, LOW); // Escribir un 'BAJO' en el 'pinLed'. } }//[[[BUCLE (CICLO REPETITIVO) DE FUNCIONAMIENTO]]]
3.2 Uso del PWM. Sentencia analogWrite()
analogWrite(pin, valor); 3.2.1 Escritura analgica Ejemplo 3.2. Encendido de un diodo LED por PWM. En este ejemplo se utiliza la modulacin por ancho de pulso para encender un diodo LED de manera gradual, esto se hace incrementando una variable de uno en uno iniciando desde cero, una vez que se llega al valor de 255 el mismo diodo LED se debe apagar, se vuelve a iniciar el proceso anterior una vez que se reinicia la tarjeta Arduino, mientras no se haga esto el diodo LED permanece apagado. void setup() { pinMode(pinLed, OUTPUT); // Se establece a 'pinLed' como una salida digital. } void loop() { if(brillo <= 255) // Condicin: SI la variable 'brillo' es MENOR O IGUAL a 255: { analogWrite(pinLed, brillo); // Se escribe el valor actual de la variable 'brillo' en el 'pinLed' (pin 5). delay(30); // Se hace una pequea pausa para evitar que el aumento se vaya de forma corrida. brillo = brillo + 1; // Se incrementa en uno a la variable 'brillo' para que de forma gradual se incremente la intensidad de luz que emite el diodo LED. } else // En otro caso. { // Si la variable brillo ha alcanzado el valor mximo que es 255 se hace lo siguiente: digitalWrite(pinLed, LOW); // Se escribe en el 'pinLed' un 'BAJO' para apagar el diodo LED. } }
Ejemplo 3.3. Encendido de un diodo LED utilizando ciclo for. En este ejemplo se utiliza la modulacin por ancho de pulso para encender un diodo LED de manera gradual esto se hace utilizando el ciclo repetitivo for iniciando en el valor cero hasta un valor de 255, incrementando en intervalos de 3. int brillo; // Se declara la variable 'brillo'. int pinLed=5; // Se declara la variable 'pinLed' que almacena el valor 5 del pin de la tarjeta Arduino.
void setup() { pinMode(pinLed, OUTPUT); // Se establece a 'pinLed' como una salida digital. } void loop() { for(brillo=0;brillo<=255;brillo=brillo+3) // Ciclo: INICIA con la variable 'brillo' IGUAL a CERO; { // SE REPITE mientras 'brillo' sea MENOR O IGUAL a 255; SE INCREMENTA en 3 unidades en cada repeticin.
analogWrite(pinLed, brillo); // Se escribe el valor actual de la variable 'brillo' en el 'pinLed'. delay(30); // Se hace una pequea pausa para evitar que el aumento se vaya de forma corrida. } } Practica 3.1. Diodo LED incremento y decremento con PWM. Se va a aumentar y disminuir la luminosidad de un diodo led usando PWM. Para ello se conecta un diodo LED al pin 5, implementando un ciclo for que va desde 0 hasta 255 se debe hacer incrementar la intensidad de luz del diodo LED, una vez terminado este ciclo se debe iniciar otro pero con los parmetros de 255 a 0 para decrementar la intensidad de luz del mismo diodo LED. int brillo; // Se declara la variable 'brillo'. int pinLed=5; // Se declara la variable 'pinLed' que almacena el valor 5 del pin de la tarjeta Arduino.
void setup() { pinMode(pinLed, OUTPUT); // Se establece a 'pinLed' como una salida digital. }
void loop() { for(brillo=0;brillo<=255;brillo++) // Ciclo: INICIA con la variable 'brillo' IGUAL a CERO; { // SE REPITE mientras 'brillo' sea MENOR O IGUAL a 255; SE INCREMENTA en una unidad en cada repeticin. analogWrite(pinLed, brillo); // Se escribe el valor actual de la variable 'brillo' en el 'pinLed'. delay(30); // Se hace una pequea pausa. } for(brillo=255;brillo>=0;brillo--) // Ciclo: INICIA con la variable 'brillo' IGUAL a 255; { // SE REPITE mientras 'brillo' sea MAYOR O IGUAL a CERO; SE DECREMENTA en una unidad en cada repeticin. analogWrite(pinLed, brillo); // Se escribe el valor actual de la variable 'brillo' en el 'pinLed'. delay(30); // Se hace una pequea pausa. } } Practica 3.2. Luz de LED en funcin de la luz en ambiente. Se leer el valor analgico de una FOTORESISTENCIA. Cuando la lectura del valor de la fotoresistencia se encuentre entre 0 y 512 el LED debe estar apagado, si el valor ledo se encuentra entre valores 512 y 1024 el LED debe encender. int pinLed=5; // Se declara la variable 'pinLed' que almacena el valor 5 del pin de la tarjeta. int estadoFTR; // Se declara la variable 'estadoFTR' donde se guardar el valor entero analgico ledo desde la FOTORESISTENCIA. void setup() { pinMode(pinLed, OUTPUT); // Se establece a 'pinLed' como una salida digital. } void loop() { estadoFTR=analogRead(A0); // Se lee y guarda el valor analgico proporcionado por la FOTORESISTENCIA. if(estadoFTR<512) // Condicin: SI la variable 'estadoFTR' es MENOR a 512: { digitalWrite(pinLed, LOW); // Se escribe un 'BAJO' en 'pinLed'. } else // En otro caso. { // Entonces la variable 'estadoBoton' es mayor a 512, es por eso que accede a esta seccin. digitalWrite(pinLed, HIGH); // Se escribe un 'ALTO' en 'pinLed'. } } Practica 3.3. Medidor de luz ambiente. Se utiliza una fotorresistencia para captar la luz en el ambiente. Habr tres niveles de intensidad de luz medibles, BAJO, MEDIO, ALTO. Si el valor analgico ledo de la fotorresistencia se encuentra entre 0 y 300 entonces el LED enciende a una intensidad de 80. Si se encuentra entre 300 y 600 enciende a 160, y si el valor ledo es mayor a 600 entonces el LED enciende a 255. Esto se hace utilizando la propiedad PWM sobre el diodo LED. Proyecto 3. Incrementar luminosidad de LED con un botn. Se tiene que incrementar la luminosidad de un diodo LED conectado al pin 5 a travs de la pulzacin de un botn. El botn estar conectado al pin 2. Con la pulsacin del botn aumenta la luminosidad del LED hasta llegar a su valor mximo (255). Una vez que se llega al valor mximo el sistema se reinicia, el LED se apaga y vuelve a empezar.