.. note::
Bonjour, bienvenue dans la communauté Facebook des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 ! Explorez plus en profondeur les possibilités des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés.
**Pourquoi nous rejoindre ?**
- **Support d'experts** : Résolvez vos problèmes après-vente et vos défis techniques avec l'aide de notre communauté et de notre équipe.
- **Apprendre & Partager** : Échangez des astuces et des tutoriels pour développer vos compétences.
- **Aperçus exclusifs** : Bénéficiez d'un accès anticipé aux annonces de nouveaux produits et aux avant-premières.
- **Réductions spéciales** : Profitez de réductions exclusives sur nos derniers produits.
- **Promotions festives et concours** : Participez à des tirages au sort et à des promotions spéciales.
👉 Prêt à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !
2.2.1 Photoresistor
===================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
Selon la version de votre kit, identifiez si vous disposez du **ADC0834** ou du **MCP3008** et suivez la section correspondante.
Introduction
---------------
Un photo-résistance est un composant couramment utilisé pour mesurer l'intensité
lumineuse dans la vie quotidienne. Il aide le contrôleur à reconnaître le jour et
la nuit et à réaliser des fonctions de contrôle de la lumière, telles que les lampes
de nuit. Ce projet est très similaire à celui du potentiomètre, sauf qu'il change
la tension pour détecter la lumière.
Composants
-------------
.. image:: img/list_2.2.1_photoresistor.png
Principe
----------
Une photo-résistance ou cellule photoélectrique est une résistance variable contrôlée
par la lumière. La résistance d'une photo-résistance diminue avec l'augmentation de
l'intensité lumineuse incidente ; en d'autres termes, elle présente une photoconductivité.
Une photo-résistance peut être utilisée dans des circuits de détection de lumière, ainsi
que dans des circuits de commutation activés par la lumière ou l'obscurité.
.. image:: img/image196.png
:width: 200
:align: center
Schéma de câblage
--------------------
.. image:: img/image321.png
.. image:: img/image322.png
Procédures expérimentales
-----------------------------
**Étape 1 :** Construisez le circuit.
.. image:: img/image198.png
:width: 800
**Étape 2 :** Allez dans le dossier du code.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/c/2.2.1/
**Étape 3 :** Compilez le code.
.. raw:: html
.. code-block::
gcc 2.2.1_Photoresistor.c -lwiringPi
**Étape 4 :** Exécutez le fichier exécutable.
.. raw:: html
.. code-block::
sudo ./a.out
Une fois le code exécuté, la luminosité de la LED variera en fonction de
l'intensité lumineuse détectée par la photo-résistance.
.. note::
Si le programme ne fonctionne pas après l'exécution, ou s'il y a un message d'erreur : "wiringPi.h: No such file or directory", veuillez vous référer à :ref:`faq_c_nowork`.
**Code**
.. 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);
// Start bit
digitalWrite(ADC_CLK,0);
digitalWrite(ADC_DIO,1); delayMicroseconds(2);
digitalWrite(ADC_CLK,1); delayMicroseconds(2);
//Single End mode
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);
//Select
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))<