Nota
¡Hola! Bienvenidos a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Explora en profundidad Raspberry Pi, Arduino y ESP32 junto a otros apasionados.
¿Por qué unirse?
Soporte Experto: Resuelve problemas postventa y desafíos técnicos con ayuda de nuestra comunidad y equipo.
Aprende y Comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.
Acceso Exclusivo: Sé el primero en conocer los nuevos productos y obtener una vista previa.
Descuentos Especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.
Promociones y Sorteos Festivos: Participa en sorteos y promociones durante las festividades.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.
2.2.1 Fotoresistor
Introducción
El fotoresistor es un componente comúnmente utilizado para medir la intensidad de la luz ambiental. Ayuda al controlador a distinguir entre día y noche, y permite funciones de control de luz, como lámparas nocturnas. Este proyecto es muy similar al del potenciómetro, y podrás notar que la variación en el voltaje permite detectar la intensidad de la luz.
Componentes Necesarios
En este proyecto, necesitaremos los siguientes componentes.

Diagrama Esquemático


Procedimientos Experimentales
Paso 1: Monta el circuito.

Paso 2: Accede a la carpeta del código.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Paso 3: Ejecuta el archivo.
sudo python3 2.2.1_Photoresistor.py
Cuando el código esté en ejecución, la intensidad del LED cambiará en función de la luz detectada por el fotoresistor.
Advertencia
Si aparece el error RuntimeError: Cannot determine SOC peripheral base address
, consulta Si gpiozero no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Antes de eso, asegúrate de estar en la ruta de origen raphael-kit/python-pi5
. Una vez modificado el código, puedes ejecutarlo para ver el efecto.
#!/usr/bin/env python3
from gpiozero import PWMLED
import ADC0834
import time
# Inicializar un LED PWM en el pin GPIO 22
led = PWMLED(22)
# Configurar el módulo ADC0834
ADC0834.setup()
# Definir una función para mapear valores de un rango a otro
def MAP(x, in_min, in_max, out_min, out_max):
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
# Bucle principal para leer el valor ADC y controlar el brillo del LED
def loop():
while True:
# Leer valor analógico del ADC
analogVal = ADC0834.getResult()
print('value = %d' % analogVal)
# Mapear el valor ADC a un valor PWM y ajustar el brillo del LED
led.value = float(analogVal / 255)
# Esperar 0.2 segundos
time.sleep(0.2)
# Ejecutar el bucle principal y manejar la interrupción del teclado para una salida ordenada
try:
loop()
except KeyboardInterrupt:
# Apagar el LED antes de salir
led.value = 0
Explicación del Código
Este segmento importa la clase PWMLED de la biblioteca gpiozero, necesaria para controlar LEDs PWM. También incluye el módulo ADC0834 para interactuar con el convertidor analógico-digital y el módulo de tiempo para ejecutar funciones basadas en tiempo como sleep.
#!/usr/bin/env python3 from gpiozero import PWMLED import ADC0834 import time
Inicializa un LED PWM conectado al pin GPIO 22 y configura el módulo ADC0834, preparándolo para su uso en el proyecto.
# Inicializar un LED PWM en el pin GPIO 22 led = PWMLED(22) # Configurar el módulo ADC0834 ADC0834.setup()
Define una función para mapear un valor de un rango a otro, crucial para convertir las lecturas del ADC a un rango adecuado para el control PWM.
# Definir una función para mapear valores de un rango a otro def MAP(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min
Esta sección contiene un bucle que lee continuamente el valor analógico del ADC0834, lo mapea a un valor PWM correspondiente y ajusta el brillo del LED. Se incluye una breve demora (time.sleep(0.2)) para hacer visibles los cambios y evitar sobrecargar la CPU.
# Bucle principal para leer el valor ADC y controlar el brillo del LED def loop(): while True: # Leer valor analógico del ADC analogVal = ADC0834.getResult() print('value = %d' % analogVal) # Mapear el valor ADC a un valor PWM y ajustar el brillo del LED led.value = float(analogVal / 255) # Esperar 0.2 segundos time.sleep(0.2)
Ejecuta la función loop y maneja errores para una finalización ordenada con KeyboardInterrupt. Asegura que el LED se apague cuando el programa se detenga.
# Ejecutar el bucle principal y manejar la interrupción del teclado para una salida ordenada try: loop() except KeyboardInterrupt: # Apagar el LED antes de salir led.value = 0