Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime speciali.

  • Sconti esclusivi: Approfitta di sconti riservati sui nostri prodotti più recenti.

  • Promozioni festive e concorsi: Partecipa a concorsi e promozioni durante le festività.

👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

2.2.1 Fotoresistore

Nota

../_images/mcp3008_and_adc0834.jpg

A seconda della versione del tuo kit, identifica se hai ADC0834 o MCP3008 e procedi con la sezione corrispondente.

Introduzione

Il fotoresistore è un componente comunemente utilizzato per rilevare l’intensità della luce ambientale. Aiuta il controllore a riconoscere il giorno e la notte e a realizzare funzioni di controllo della luce come le lampade notturne. Questo progetto è molto simile a quello del potenziometro, ma in questo caso il cambiamento di tensione è legato alla rilevazione della luce.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/list_2.2.1_photoresistor.png

È sicuramente comodo acquistare un kit completo, ecco il link:

Nome

ARTICOLI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

ADC0834

-

Fotoresistore

ACQUISTA

Schema Elettrico

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

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/image198.png

Passo 2: Vai nella cartella del codice.

cd ~/raphael-kit/python/

Passo 3: Esegui il file eseguibile.

sudo python3 2.2.1_Photoresistor.py

Quando il codice è in esecuzione, la luminosità del LED cambierà in base all’intensità della luce rilevata dal fotoresistore.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Ma prima devi accedere al percorso del codice come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import ADC0834
import time
LedPin = 22
def setup():
    global led_val
    # Imposta le modalità GPIO sulla numerazione BCM
    GPIO.setmode(GPIO.BCM)
    # Imposta la modalità di LedPin come output e livello iniziale su High (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    ADC0834.setup()
    # Imposta Led come canale pwm e frequenza a 2KHz
    led_val = GPIO.PWM(LedPin, 2000)
    # Inizializza con il valore 0
    led_val.start(0)
def destroy():
    # Ferma tutti i canali pwm
    led_val.stop()
    # Rilascia le risorse
    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: # Quando viene premuto 'Ctrl+C', il programma destroy() verrà eseguito.
        destroy()

Spiegazione del Codice

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

Leggi il valore analogico di CH0 di ADC0834. Per impostazione predefinita, la funzione getResult() è utilizzata per leggere il valore di CH0, quindi se desideri leggere altri canali, inserisci 1, 2 o 3 all’interno delle parentesi della funzione getResult(). Successivamente, è necessario stampare il valore utilizzando la funzione print. Poiché l’elemento che cambia è il ciclo di lavoro di LedPin, la formula di calcolo analogVal*100/255 è necessaria per convertire analogVal in percentuale. Infine, ChangeDutyCycle() viene chiamata per scrivere la percentuale in LedPin.

Immagine del Fenomeno

../_images/image199.jpeg