# Carte Arduino

# Explication du code IRS-SI

---

## 1. Les bibliothèques

```cpp
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <rgb_lcd.h>
#include <AM2302-Sensor.h>

```

On charge les outils nécessaires : SPI et Ethernet pour la connexion réseau, Wire pour le bus I2C, rgb\_lcd pour l'écran, AM2302 pour le capteur température/humidité.

---

## 2. La configuration

```cpp
#define PIN_DHT        A0
#define PIN_BOUTON     2
#define PIN_LUMINOSITE A3

```

On déclare les broches utilisées. Si tu changes un câble de place, tu modifies juste ici sans toucher au reste du code.

---

## 3. Les objets

```cpp
rgb_lcd lcd;
EthernetServer serveur(PORT_HTTP);
AM2302::AM2302_Sensor capteurDHT(PIN_DHT);

```

On crée les 3 composants principaux : l'écran, le serveur web sur le port 80, et le capteur DHT.

---

## 4. Le setup — initialisation

```cpp
lcd.begin(16, 2);
lcd.setRGB(0, 0, 255);
lcd.print("Initialisation");

```

L'écran démarre en bleu et affiche "Initialisation".

```cpp
if (Ethernet.begin(mac)) {
    lcd.setRGB(0, 255, 0);
    lcd.print(Ethernet.localIP());
    serveur.begin();
} else {
    lcd.setRGB(255, 0, 0);
    lcd.print("ERREUR reseau");
    while (true) { }
}

```

On demande une adresse IP au routeur (DHCP). Si ça marche → écran vert + affichage de l'IP. Si ça échoue → écran rouge + blocage total.

---

## 5. La boucle principale

```cpp
if (digitalRead(PIN_BOUTON) == LOW) {
    lireCapteurs();
    afficherSurLCD();
}

```

En permanence : si le bouton est pressé, on lit les capteurs et on affiche sur l'écran.

```cpp
EthernetClient client = serveur.available();
if (client) {
    traiterRequeteHTTP(client);
}

```

En permanence aussi : si quelqu'un se connecte via un navigateur, on lui répond.

---

## 6. La lecture des capteurs

```cpp
void lireCapteurs() {
    capteurDHT.read();
    temperature = capteurDHT.get_Temperature();
    humidite    = capteurDHT.get_Humidity();
    luminosite  = analogRead(PIN_LUMINOSITE);
}

```

On interroge le capteur DHT pour la temp/humidité, et on lit la valeur analogique du capteur de luminosité (0 = sombre, 1023 = pleine lumière).

---

## 7. La page web

```cpp
client.println("HTTP/1.1 200 OK");
...
client.print("<p>Temperature : <b>"); client.print(temperature, 1);
client.print("<p>Humidite    : <b>"); client.print(humidite, 0);
client.print("<p>Luminosite  : <b>"); client.print(luminosite);

```

On envoie une page HTML simple au navigateur avec les 3 valeurs des capteurs en temps réel.