SIK Experiment Guide for the Arduino 101/Genuino 101 Board (Spanish)
This Tutorial is Retired!
This tutorial covers concepts or technologies that are no longer current. It's still here for you to read and enjoy, but may not be as useful as our newest tutorials.
Experimento 7: Leer un fotorresistor
Introducción
En el experimento 2 tuvo que usar un potenciómetro, que varía la resistencia con el control del mando y, a su vez, cambia la tensión que lee el pin de entrada analógica. En este circuito utilizará un fotorresistor, que cambia la resistencia en función de la cantidad de luz que recibe el sensor. Se analizará la luz de la habitación y un LED se encenderá si hay mucha oscuridad y se apagará si hay mucha luz. En otras palabras: va a fabricar una lamparilla.
Elementos necesarios
Necesitará los siguientes elementos:
- 1x placa de pruebas
- 1x placa Arduino 101 o Genuino 101
- 1x LED
- 1x resistencia de 100 Ω
- 7x cables puente
- 1x fotorresistencia
- 1x resistencia 10K
¿No tiene el SIK?
Si está realizando este experimento y no dispone del SIK, le sugerimos que use estos elementos:
También necesitará una placa Arduino 101 O Genuino 101.
Presentación del fotorresistor
El fotorresistor cambia su resistencia en función de la luz a la que se expone. Para utilizar la placa 101, tendrá que construir un divisor de tensión con una resistencia de 10.000 ohmios como se muestra en el diagrama de cableado de este experimento. La placa 101 no puede leer los cambios en la resistencia, solo los de tensión. Un divisor de tensión permite convertir un cambio en la resistencia a un valor de tensión correspondiente.
Los divisores de tensión permiten el uso de sensores basados en la resistencia, como el fotorresistor, en un sistema basado en tensión. A medida que explore diferentes sensores, encontrará más basados en la resistencia que solo tienen dos pines (como es el caso de los fotorresistores). Para usarlos con la placa 101, necesitará crear un divisor de tensión como el de este experimento. Para obtener más información acerca de las resistencias en general, consulte nuestro tutorial sobre resistencias y también nuestro tutorial sobre los divisores de tensión.
Nota: asegúrese de que está utilizando la resistencia de 10.000 ohmios en el divisor de tensión con los sensores de este kit. De lo contrario, obtendrá resultados extraños e incoherentes.
Conexión del hardware
¿Preparado para comenzar a conectar todo? Consulte el diagrama de cableado siguiente para ver cómo está conectado todo.
Componentes polarizados | Preste especial atención a las marcas de los componentes que indican cómo colocarlo en la placa de pruebas. Los componentes polarizados solo se pueden conectar a un circuito en una sola dirección. |
Diagrama de cableado del experimento
Abrir el boceto
Abra el software IDE de Arduino en su ordenador. La codificación en el lenguaje de Arduino controlará el circuito. Abra el código del circuito 7; para ello, acceda a "101 SIK Guide Code" (Guía de códigos de SIK 101) que ha descargado y guardado en la carpeta "Examples" (Ejemplos) anteriormente.
Para abrir el código vaya a: File > Examples > 101 SIK Guide Code > Circuit_07 (Archivo > Ejemplos > Guía de códigos de SIK 101 > Circuito_07)
También puede copiar y pegar el siguiente código en el IDE de Arduino. Cárguelo y vea qué es lo que ocurre.
language:cpp
/*
SparkFun Inventor's Kit
Example sketch 07
PHOTORESISTOR
Read a photoresistor (light sensor) to detect "darkness" and turn on an LED when it is "dark" and turn back off again when it is "bright."
This sketch was written by SparkFun Electronics,
with lots of help from the Arduino community.
This code is completely free for any use.
Visit http://learn.sparkfun.com/products/2 for SIK information.
Visit http://www.arduino.cc to learn more about Arduino.
*/
// As usual, we'll create constants to name the pins we're using.
// This will make it easier to follow the code below.
const int sensorPin = 0;
const int ledPin = 9;
// We'll also set up some global variables for the light level a calibration value and //and a raw light value
int lightCal;
int lightVal;
void setup()
{
// We'll set up the LED pin to be an output.
pinMode(ledPin, OUTPUT);
lightCal = analogRead(sensorPin);
//we will take a single reading from the light sensor and store it in the lightCal //variable. This will give us a prelinary value to compare against in the loop
}
void loop()
{
//Take a reading using analogRead() on sensor pin and store it in lightVal
lightVal = analogRead(sensorPin);
//if lightVal is less than our initial reading (lightCal) minus 50 it is dark and //turn pin 9 HIGH. The (-50) part of the statement sets the sensitivity. The smaller //the number the more sensitive the circuit will be to variances in light.
if(lightVal < lightCal - 50)
{
digitalWrite(9,HIGH);
}
//else, it is bright, turn pin 9 LOW
else
{
digitalWrite(9,LOW);
}
}
Código a tener en cuenta
lightCal = analogRead(sensorPin);
lightCal es una variable de calibración. La placa 101 obtiene una única lectura del sensor de luz en la configuración y utiliza este valor para compararlo con el valor lightVal del bucle. Este valor no cambia en el bucle, ya que se establece en la función de configuración. Para actualizar este valor, puede pulsar el botón de reinicio, o apagar y encender la placa.
if(lightVal < lightCal -50)
Si la variable del valor de luz que se actualiza constantemente en el bucle es inferior al valor de calibración establecido en la configuración menos 50, hay oscuridad y el LED se debe encender. La parte (-50) de esta instrucción es un valor de sensibilidad. Cuanto mayor sea el valor, menos sensible será el circuito; cuanto menor sea el valor, más sensible será a las condiciones de iluminación.
Lo que debería ver
El LED debería encenderse cuando hay más oscuridad y apagarse cuando hay más luz. Ponga la mano sobre el sensor y, a continuación, retírela. Si no funciona, asegúrese de que ha montado el circuito correctamente y que ha verificado y cargado código en la placa. De lo contrario, consulte la sección Solución de problemas.
Solución de problemas
El LED no se enciende
Es posible que haya estado proyectando una sombra sobre el sensor cuando cargaba el código. Asegúrese de que el sensor está expuesto a la luz ambiental de la sala y pulse el botón de reinicio maestro o vuelva a cargar el código. Esto restablecerá el valor de calibración en la configuración.
Sigue sin funcionar
Es posible que haya creado una instrucción lógica incorrectamente. Compruebe el código y ajuste el nivel de sensibilidad un poco más alto o más bajo. Asegúrese de que no hay un punto y coma después de la instrucción if(). Este es un error muy común y difícil de detectar.