Code de test 3 pour comparatif carte Arduino

par skywodd | | Langue : C++ | Licence : GPLv3

Description :

Code de test 3 : mesure de consommation électrique en mode "Power Sleep Down".

Code source :

Voir le code source brut | Télécharger test_sleep.ino | Télécharger test_sleep.ino.zip

/**
 * Code de test 3 : mesure de consommation électrique en mode "Power Sleep Down".
 */

#if defined(__AVR_ATmega2560__)
#define MAX_PIN_NUM A15
#elif defined(__AVR_ATmega328P__)
#define MAX_PIN_NUM A5
#elif defined(__AVR_ATmega32U4__)
#define MAX_PIN_NUM A5
#endif

// Bibliothéque (fournie avec le compilateur) pour les fonctions de mise en veille
#include <avr/sleep.h>

// Bug fix pour Arduino 1.0.6
#define NOT_AN_INTERRUPT -1

void setup() {

  // Port série au repos
  pinMode(0, INPUT);
  pinMode(1, OUTPUT);
  digitalWrite(1, HIGH);

  // Evite les broches flottantes
  for (byte pin = 3; pin <= MAX_PIN_NUM; pin++) {
    pinMode(pin, OUTPUT);
    digitalWrite(pin, LOW);
  }

  // Interruption de sortie de mode sleep (vérif fonctionnement)
  pinMode(2, INPUT_PULLUP);
  // Utilise le mode LOW pour la compatibilité avec les cartes Mega 2560
  attachInterrupt(digitalPinToInterrupt(2), wakeUp, LOW);

  // Mode sleep
  if (digitalRead(2)) {
    sleep_enable();
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_mode(); 
    sleep_disable();
  }

  // Code vérif fonctionnement post mesure
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
}

void wakeUp() {
  detachInterrupt(digitalPinToInterrupt(2));
}