Bonjour c'est un petit mémo qui regroupe plusieurs façons de faire clignoter une led toutes les secondes si ça peut servir à quelqu'un.
si vous avez d'autre astuces je les ajouterai à la suite.
1/ la méthode la plus courante
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
digitalWrite(ledpin, HIGH); // allume la led
delay(500); // bloque le programme pendant 500ms
digitalWrite(ledpin, LOW); // éteint la led
delay(500); // bloque le programme pendant 500ms
}
2/ en inversant la sortie suivant sont état
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
digitalWrite(ledpin, !digitalRead(ledpin) ); // allume la led si elle est éteinte, et l'éteint si elle est allumée
delay(500); // bloque le programme pendant 500ms
}
3/ en utilisant une variable
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
boolean s;
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
digitalWrite(ledpin, s ); // allume la led ou l'éteint suivant l'état de "s"
if (s==false) s=true; else s=false; // inverse s
delay(500); // bloque le programme pendant 500ms
}
4/ en inversant une variable identique au 3 mais plus simple
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
boolean s=0;
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
digitalWrite(ledpin, s ); // allume la led ou l'éteint suivant l'état de "s"
s=!s; // inverse s
delay(500); // bloque le programme pendant 500ms
}
5/ sans bloquer le programme et en utilisant le modulo de millis()
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
// ne bloque pas le programme
digitalWrite( ledpin , millis() / 500 % 2 ); // fait clignoter la led avec le modulo de millis() de 2, soit 1 ou 0
}
6/ en utilisant un timer avec la fonction millis()
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
unsigned long mtemps=0; // mémorisation du temps + 500ms
boolean s=true; // état de la sortie
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
// ne bloque pas le programme
unsigned long temps = millis(); // lecture du temps système, utiliser une variable comme "temps" permet de l'utiliser pour d'autres action dans le programme
if ( temps >= mtemps ) // si le temps est écoulé
{
digitalWrite( ledpin , s ); // allume la led selon l'état du bit "s"
s=!s; // inverse l'état de "s"
mtemps=mtemps+500; // mémorise le temps +500
}
}
7/ avec 2 timer, un pour allumer et l'autre pour éteindre la led
// clignotant 1s
const int ledpin = 13; // n° de la led verte de la carte
unsigned long mtemps=0; // mémorisation du temps
unsigned int on=50; // déffinit le temps d'allumage de la led
unsigned int off=950; // déffinit le temps d'extinction de la led, pour faire 1s l'addition de "on" et de "off" doit faire 1000.
boolean s=true; // état de la sortie
void setup() {
pinMode(ledpin, OUTPUT); // la broche "13" est une sortie
}
void loop() {
// ne bloque pas le programme
unsigned long temps = millis(); // lecture du temps système, utiliser une variable comme "temps" permet de l'utiliser pour d'autres action dans le programme
if ( temps >= mtemps ) // si le temps est écoulé
{
digitalWrite( ledpin , s ); // allume la led selon l'état du bit "s"
if ( s ) mtemps = mtemps + on; else mtemps = mtemps + off; // mémorise le temps + la valeur de "on" ou de "off" suivant l'état de "s"
s=!s; // inverse l'état de "s" de "true" passe à "false" ou de "false" à "true"
}
}
j'attend vos réaction ...