Nota

¡Hola! Bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas.

¿Por qué unirse?

  • Soporte experto: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Preestrenos exclusivos: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más nuevos.

  • Promociones festivas y sorteos: Participa en sorteos y promociones festivas.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

2.2.1 Fotoresistor

Nota

../_images/mcp3008_and_adc0834.jpg

Dependiendo de la versión de su kit, identifique si tiene ADC0834 o MCP3008 y continúe con la sección correspondiente.

Introducción

El fotorresistor 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 realizar funciones de control de luz, como una lámpara nocturna. Este proyecto es muy similar al del potenciómetro, y podrías pensar en él como un cambio de voltaje para detectar la luz.

Componentes necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/list_2.2.1_photoresistor.png

Es definitivamente conveniente comprar un kit completo, aquí tienes el enlace:

Nombre

COMPONENTES EN ESTE KIT

ENLACE

Raphael Kit

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

ADC0834

-

Fotoresistor

COMPRAR

Diagrama esquemático

../_images/image321.png ../_images/image322.png

Procedimientos experimentales

Paso 1: Construye el circuito.

../_images/image198.png

Paso 2: Ve a la carpeta del código.

cd ~/raphael-kit/python/

Paso 3: Ejecuta el archivo ejecutable.

sudo python3 2.2.1_Photoresistor.py

Cuando el código esté en ejecución, el brillo del LED cambiará según la intensidad de la luz detectada por el fotorresistor.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import ADC0834
import time
LedPin = 22
def setup():
    global led_val
    # Establecer los modos GPIO en numeración BCM
    GPIO.setmode(GPIO.BCM)
    # Configurar todos los modos de LedPin en salida y nivel inicial en High (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Configurar led como canal pwm y frecuencia a 2KHz
    led_val = GPIO.PWM(LedPin, 2000)
    # Comenzar todos con valor 0
    led_val.start(0)
def destroy():
    # Detener todos los canales pwm
    led_val.stop()
    # Liberar recursos
    GPIO.cleanup()
def loop():
    while True:
        analogVal = ADC0834.getResult()
        print ('analog value = %d' % analogVal)
        led_val.ChangeDutyCycle(analogVal*100/255)
        time.sleep(0.2)
if __name__ == '__main__':
    setup()
    try:
        loop()
    except KeyboardInterrupt: # Cuando se presiona 'Ctrl+C', se ejecutará el programa destroy().
        destroy()

Explicación del Código

def loop():
    while True:
        analogVal = ADC0834.getResult()
        print ('analog value = %d' % analogVal)
        led_val.ChangeDutyCycle(analogVal*100/255)
        time.sleep(0.2)

Lee el valor analógico del CH0 de ADC0834. Por defecto, la función getResult() se usa para leer el valor del CH0, por lo que si deseas leer otros canales, por favor ingresa 1, 2 o 3 en () de la función getResult(). Luego, necesitas imprimir el valor a través de la función print. Debido a que el elemento cambiante es el ciclo de trabajo de LedPin, se necesita la fórmula computacional, analogVal*100/255 para convertir analogVal en porcentaje. Finalmente, se llama a ChangeDutyCycle() para escribir el porcentaje en LedPin.

Imagen del Fenómeno

../_images/image199.jpeg