Voici un exemple de programme Arduino qui lit la température d'un capteur LM35 et l'affiche sur
un afficheur 7 segments à anode commune à 4 chiffres.
### Matériel nécessaire :
- Arduino Uno
- Capteur de température LM35
- Afficheur 7 segments à anode commune à 4 digits
- Résistances (si nécessaire)
- Fils de connexion
### Schéma de connexion :
1. Connectez le pin de sortie du LM35 à l'une des entrées analogiques de l'Arduino (par exemple
A0).
2. Connectez les pins de l'afficheur 7 segments aux pins numériques de l'Arduino. Dans un
afficheur à anode commune, les pattes des segments doivent être connectées à la masse pour
être activées.
### Exemple de code Arduino :
```cpp
// Pins de l'afficheur 7 segments
const int a = 2;
const int b = 3;
const int c = 4;
const int d = 5;
const int e = 6;
const int f = 7;
const int g = 8;
const int dp = 9; // point décimal, si nécessaire
// Pin du capteur LM35
const int lm35Pin = A0;
// Définition des segments pour les chiffres de 0 à 9
const int digitSegments[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, // 0
{0, 1, 1, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1}, // 2
{1, 1, 1, 1, 0, 0, 1}, // 3
{0, 1, 1, 0, 0, 1, 1}, // 4
{1, 0, 1, 1, 0, 1, 1}, // 5
{1, 0, 1, 1, 1, 1, 1}, // 6
{1, 1, 1, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1}, // 8
{1, 1, 1, 1, 0, 1, 1} // 9
};
// Pins pour les chiffres de l'afficheur
const int digitPins[4] = {10, 11, 12, 13};
void setup() {
// Initialisation des pins de l'afficheur comme sorties
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dp, OUTPUT);
// Initialisation des pins des chiffres
for (int i = 0; i < 4; i++) {
pinMode(digitPins[i], OUTPUT);
Serial.begin(9600);
void loop() {
// Lire la valeur analogique du capteur
int sensorValue = analogRead(lm35Pin);
// Convertir la valeur analogique en température en °C
float voltage = sensorValue * (5.0 / 1023.0);
float temperatureC = voltage * 100;
// Afficher la température sur le moniteur série
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
// Convertir la température en un nombre entier
int tempToShow = (int)temperatureC;
// Afficher la température sur l'afficheur 7 segments
displayNumber(tempToShow);
delay(1000); // Attendre 1 seconde avant la prochaine lecture
void displayNumber(int num) {
// Afficher un nombre à 4 chiffres sur l'afficheur 7 segments
int digits[4] = {0, 0, 0, 0};
digits[3] = num % 10; // Unité
num /= 10;
digits[2] = num % 10; // Dizaines
num /= 10;
digits[1] = num % 10; // Centaines
num /= 10;
digits[0] = num % 10; // Milliers
// Afficher chaque chiffre sur l'afficheur
for (int i = 0; i < 4; i++) {
// Activer le digit courant
for (int j = 0; j < 4; j++) {
digitalWrite(digitPins[j], (j == i) ? LOW : HIGH); // LOW pour activer le digit
displayDigit(digits[i]);
delay(5); // Petit délai pour éviter le scintillement
void displayDigit(int num) {
// Définir les segments en fonction du chiffre
digitalWrite(a, digitSegments[num][0]);
digitalWrite(b, digitSegments[num][1]);
digitalWrite(c, digitSegments[num][2]);
digitalWrite(d, digitSegments[num][3]);
digitalWrite(e, digitSegments[num][4]);
digitalWrite(f, digitSegments[num][5]);
digitalWrite(g, digitSegments[num][6]);
```
### Explications :
- **Lecture de la température** : Le code lit la température à partir du capteur LM35, qui produit
une tension proportionnelle à la température.
- **Affichage sur l'afficheur** : Les chiffres sont affichés sur l'afficheur 7 segments à anode
commune. Les segments sont activés par la mise à la masse (LOW), tandis que les pattes des
chiffres sont activées par l'entrée HIGH.
- **Fonction `displayNumber`** : Cette fonction décompose le nombre en chiffres individuels et
les affiche successivement sur l'afficheur.
Assurez-vous de bien câbler le circuit selon votre matériel et de tester le programme. Si vous
avez des questions ou besoin d'aide supplémentaire, n'hésitez pas à demander !