Prérequis :
Matériel :
- 1 x Carte Arduino Nano
- 1 x Led
- 1 x Résistance 220 ohms
- 1 x Multimètre
- 1 x Bouton
- Fils de connexion
- 1 x Breadboard
- 1 x Alimentation 5V
Vidéo de démonstration :
Schéma de câblage :
Code :
#include <avr/sleep.h>
#include <avr/power.h>
#define LED_PIN (13)
#define LED_PINverte (4)
#define Btvert (2)
boolean EtatBtvert;
boolean Reveil;
void setup() {
pinMode(Btvert, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
pinMode(LED_PINverte, OUTPUT);
}
void loop() {
if (digitalRead(Btvert) == LOW && EtatBtvert == 0) {
EtatBtvert = 1;
// Allume la LED
digitalWrite(LED_PIN, 1);
digitalWrite(LED_PINverte, 1);
// Temporise 20 ms
delay(200);
// Eteint la LED
digitalWrite(LED_PIN, 0);
digitalWrite(LED_PINverte, 0);
delay(200);
}
if (digitalRead(Btvert) == HIGH && EtatBtvert == 1 && Reveil == 0) {
EtatBtvert = 0;
delay(200);
Going_To_Sleep();
}
if (digitalRead(Btvert) == HIGH && EtatBtvert == 1 && Reveil == 1) {
EtatBtvert = 0;
Reveil = 0;
delay(200);
}
}
void Going_To_Sleep() {
sleep_enable();
attachInterrupt(digitalPinToInterrupt(Btvert), wakeUp, LOW);
// Il existe cinq modes de veille différents par ordre d'économie d'énergie :
// SLEEP_MODE_IDLE - le mode d'économie d'énergie le plus bas
// SLEEP_MODE_ADC
// SLEEP_MODE_PWR_SAVE
// SLEEP_MODE_STANDBY
// SLEEP_MODE_PWR_DOWN - le mode d'économie d'énergie le plus élevé
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
sleep_enable();
// Entrez maintenant en mode veille.
sleep_mode();
}
void wakeUp() {
// La première chose à faire est de désactiver le sommeil.
sleep_disable();
// Réactiver les périphériques.
power_all_enable();
detachInterrupt(digitalPinToInterrupt(Btvert));
Reveil = 1;
}
Nombre de vues: 1 297