Fonction map()
La fonction map() permet de convertir une valeur d’une plage de départ vers une plage
d’arrivée de manière proportionnelle.
Syntaxe
map(valeur, de_borne_inf, de_borne_sup, vers_borne_inf, vers_borne_sup);
Principe
Elle prend une valeur qui se trouve dans l’intervalle [de_borne_inf, de_borne_sup] et la projette
linéairement dans l’intervalle [vers_borne_inf, vers_borne_sup].
Formule mathématique appliquée :
résultat = (valeur - de_borne_inf) * (vers_borne_sup - vers_borne_inf) / (de_borne_sup -
de_borne_inf) + vers_borne_inf
Caractéristiques importantes
Travaille uniquement avec des entiers (long en interne). Le résultat est un entier
(troncature, pas d’arrondi).
Utile pour convertir une lecture analogique (0–1023) en pourcentage (0–100), en angle (0–
180), en tension (0–5000 mV), etc.
Ne modifie pas la valeur d’origine, elle renvoie une nouvelle valeur.
Structure de contrôle : switch / case
Le switch est une structure de contrôle qui permet de choisir entre plusieurs blocs d’exécution
selon la valeur d’une variable (entière ou caractère). C’est une alternative plus lisible qu’une
longue série de if...else if.
Syntaxe
switch (variable) {
case valeur1:
// instructions si variable == valeur1
break;
case valeur2:
// instructions si variable == valeur2
break;
// … autres cas
default:
// instructions si aucune correspondance
break;
}
Points clés
break : sort du switch ; sans lui, l’exécution continue au case suivant (effet fall-through).
default : optionnel, exécuté si aucun case ne correspond.
La variable testée doit être de type entier (int, char, byte, etc.) ou énumération.
L'instruction « millis() » en Arduino
millis() est une fonction qui retourne le temps écoulé depuis le démarrage du programme (mise
sous tension ou reset), en millisecondes.
Caractéristiques principales :
Élément Description
Type de retour `unsigned long` (entier non signé sur 32 bits)
Valeur maximale Environ 49,7 jours (au-delà, elle revient à 0)
Précision 1 milliseconde
Paramètres Aucun
Exemple simple :
unsigned long tempsDepart = millis(); // stocke l'instant présent
```
Utilisation typique (chronométrage sans `delay()`) :
unsigned long precedent = 0;
const long intervalle = 1000; // 1 seconde
void loop() {
if (millis() - precedent >= intervalle) {
precedent = millis();
// Faire quelque chose toutes les secondes
digitalWrite(13, !digitalRead(13)); // clignote sans bloquer
}
// Autres tâches exécutées normalement ici
}
Avantage majeur :
Permet de gérer des temporisations sans bloquer le programme (contrairement à `delay()` qui
stoppe tout pendant la pause).
void maFonction()
En programmation Arduino (qui est basée sur C++), le mot-clé void sert à déclarer
qu'une fonction ne retourne aucune valeur.
void maFonction() {
// du code ici
// pas de "return" nécessaire
}
Une fonction void peut :
Exécuter des instructions
Modifier des variables
Appeler d'autres fonctions
Mais elle ne peut pas renvoyer de résultat utilisable comme une valeur.
Exemple correct :
void allumerLED() {
digitalWrite(13, HIGH); // action, pas de retour
}