.. note::
Ciao, benvenuto nella community SunFounder per appassionati di Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci la tua conoscenza di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
**Perché unirti a noi?**
- **Supporto esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra community e del nostro team.
- **Impara e condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
- **Anteprime esclusive**: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
- **Sconti speciali**: Approfitta di sconti esclusivi sui nostri nuovi prodotti.
- **Promozioni e omaggi**: Partecipa a promozioni speciali e omaggi durante le festivitĂ .
👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi!
2.2.1 Fotoresistore
======================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
A seconda della versione del 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. Consente al controller di distinguere
tra giorno e notte e implementare funzioni di controllo della luce, come
l'accensione delle lampade notturne. Questo progetto è molto simile a quello
con il potenziometro, con la differenza che qui si misura la variazione di
tensione in funzione della luce percepita.
Componenti
-------------
.. image:: img/list_2.2.1_photoresistor.png
Principio
------------
Un fotoresistore o fotocellula è una resistenza variabile controllata dalla
luce. La sua resistenza diminuisce all'aumentare dell'intensitĂ della luce
incidente; in altre parole, presenta fotoconduttività . Un fotoresistore può
essere applicato in circuiti per rilevatori sensibili alla luce, così come in
circuiti di accensione e spegnimento in base alla presenza di luce o oscuritĂ .
.. image:: img/image196.png
:width: 200
:align: center
Schema del Circuito
----------------------
.. image:: img/image321.png
.. image:: img/image322.png
Procedura Sperimentale
-------------------------
**Passo 1:** Costruisci il circuito.
.. image:: img/image198.png
:width: 800
**Passo 2:** Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/2.2.1/
**Passo 3:** Compila il codice.
.. raw:: html
.. code-block::
gcc 2.2.1_Photoresistor.c -lwiringPi
**Passo 4:** Esegui il file eseguibile.
.. raw:: html
.. code-block::
sudo ./a.out
Quando il codice è in esecuzione, la luminosità del LED varierà in base
all'intensitĂ della luce rilevata dal fotoresistore.
.. note::
Se non funziona dopo l'esecuzione o appare un messaggio di errore: \"wiringPi.h: File o directory non esistente\", fai riferimento a :ref:`faq_c_nowork`.
**Codice**
.. 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 di avvio
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
// ModalitĂ single-end
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
// ODD
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,odd); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
// Selezione
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))<