.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte Experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprender y Compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Vistas Exclusivas**: Obtén acceso anticipado a anuncios de nuevos productos y adelantos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más nuevos.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy.
2.2.1 Fotoresistor
=====================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
Dependiendo de la versión de tu kit, identifica si tienes **ADC0834** o **MCP3008** y procede con la sección correspondiente.
Introducción
---------------
El fotoresistor es un componente comúnmente utilizado para medir la
intensidad de la luz ambiental. Ayuda al controlador a reconocer el
día y la noche, y a realizar funciones de control de luz, como la de
una lámpara nocturna. Este proyecto es muy similar al de un potenciómetro,
y podrías pensar que cambia el voltaje para detectar la luz.
Componentes
-----------
.. image:: img/list_2.2.1_photoresistor.png
Principio
----------
Un fotoresistor o celda fotoeléctrica es un resistor variable controlado por
la luz. La resistencia de un fotoresistor disminuye a medida que aumenta la
intensidad de la luz incidente; en otras palabras, exhibe fotoconductividad.
Un fotoresistor se puede aplicar en circuitos de detección de luz y en circuitos
de conmutación activados por luz y oscuridad.
.. image:: img/image196.png
:width: 200
:align: center
Diagrama Esquemático
--------------------------
.. image:: img/image321.png
.. image:: img/image322.png
Procedimientos Experimentales
----------------------------------
**Paso 1:** Construir el circuito.
.. image:: img/image198.png
:width: 800
**Paso 2:** Acceder a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/2.2.1/
**Paso 3:** Compilar el código.
.. raw:: html
.. code-block::
gcc 2.2.1_Photoresistor.c -lwiringPi
**Paso 4:** Ejecutar el archivo ejecutable.
.. raw:: html
.. code-block::
sudo ./a.out
Una vez ejecutado el código, el brillo del LED variará según la intensidad
de luz que detecte el fotoresistor.
.. note::
Si no funciona después de ejecutarlo, o aparece un mensaje de error: "wiringPi.h: No such file or directory", consulta :ref:`faq_c_nowork`.
**Código**
.. code-block:: c
#include
#include
#include
typedef unsigned char uchar;
typedef unsigned int uint;
#define ADC_CS 0
#define ADC_CLK 1
#define ADC_DIO 2
#define LedPin 3
uchar get_ADC_Result(uint channel)
{
uchar i;
uchar dat1=0, dat2=0;
int sel = channel > 1 & 1;
int odd = channel & 1;
digitalWrite(ADC_CLK, 1);
delayMicroseconds(2);
digitalWrite(ADC_CLK, 0);
delayMicroseconds(2);
pinMode(ADC_DIO, OUTPUT);
digitalWrite(ADC_CS, 0);
// Bit de inicio
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
// Modo de un solo extremo
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
// IMPAR
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,odd); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
// Selección
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,sel); delayMicroseconds(2);
digitalWrite(ADC_CLK,1);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
for(i=0;i<8;i++)
{
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,0); delayMicroseconds(2);
pinMode(ADC_DIO, INPUT);
dat1=dat1<<1 | digitalRead(ADC_DIO);
}
for(i=0;i<8;i++)
{
dat2 = dat2 | ((uchar)(digitalRead(ADC_DIO))<