Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[Arduino, C++] gestion des sleep-modes



  1. #1
    man_of_steel

    [Arduino, C++] gestion des sleep-modes

    Bonjour à tous !!

    Dans le projet sur lequel je bosse, je dois gérer la mise en veille de l'arduino et sa sortie de veille. Pour cela, j'avais prévu d'utiliser les interruptions sur les pin 2 ou 3 grâce à un interrupteur de pression (que je modélise pour l'instant avec un simple bouton poussoir).
    Dans le principe ça fonctionne comme ça : lorsque la pression dépasse un certain seuil, l'interrupteur envoie un signal détecté comme une interruption de type RISING.
    Mon problème est que je n'arrive pas à sortir l'arduino de son état de veille.
    Je vous joins le code :
    Code:
    #define LedPin 13
    #include <avr/interrupt.h>
    #include <avr/power.h>
    #include <avr/sleep.h>
    
    void mode_actif(){ // passage en mode actif : exécuté si la pin 2 passe de l'état bas à l'état haut 
      detachInterrupt(0);
      digitalWrite(LedPin, HIGH); }
    
    void mode_passif(){ // passage en mode passif
      attachInterrupt(0, mode_actif, RISING); 
      digitalWrite(LedPin, LOW); // éteindre la led en mode veille  
    /*CHOIX DU MODE DE SOMMEIL */
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    /* REGLAGE DU BIT D'ACTIVATION DE LA VEILLE */
      sleep_enable();
    /* MET L'ARDUINO EN VEILLE */
      sleep_mode(); 
    /* DESACTIVE LE MODE VEILLE */
      sleep_disable(); }
    
    void setup() { 
      Serial.begin(9600);
      pinMode(13,OUTPUT); 
      pinMode(2,INPUT);
      digitalWrite(LedPin, HIGH); }
    
    void loop() {
      delay(5000); // L'arduino reste active pdt 5 sec
      mode_passif();
      while (1==1) { // faire clignoter la led pour signifier que l'arduino n'est plus en veille
        digitalWrite(LedPin, HIGH);
        delay(100);
        digitalWrite(LedPin, LOW);
        delay(100); }
    }
    Merci d'avance pour votre aide précieuse

    -----


  2. Publicité
  3. #2
    jiherve

    Re : [Arduino, C++] gestion des sleep-modes

    Bonsoir
    la sortie de veille se fait sur un ETAT sur INT1 ou INT0 pas un front. Il faut donc avoir configuré les INTi en conséquence.
    JR
    l'électronique c'est pas du vaudou!

  4. #3
    man_of_steel

    Re : [Arduino, C++] gestion des sleep-modes

    Bonsoir,
    C'est un peu flou pour moi, ça voudrait dire que je dois remplacer attachInterrupt(0, mode_actif, RISING) par attachInterrupt(0, mode_actif, HIGH) ?

  5. #4
    jiherve

    Re : [Arduino, C++] gestion des sleep-modes

    Bonsoir
    Peut etre bien moi je n'utilise pas le charabia arduino je programme le 328P direct en assembleur.
    JR
    l'électronique c'est pas du vaudou!

  6. #5
    vincent66

    Re : [Arduino, C++] gestion des sleep-modes

    Bonjour...!

    Petit plus pour les arduinistes, maintenant ça se programme en du vrai C++ et plus en C arduino abâtardi... Mais je crains qu'il y eût des bridages au niveau du compilateur...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  7. A voir en vidéo sur Futura
  8. #6
    lpt1com2

    Re : [Arduino, C++] gestion des sleep-modes

    Et aussi en Basic ou en Pascal...
    Il vaut mieux être le deuxième mari d'une veuve, que le premier

  9. Publicité
  10. #7
    bobflux

    Re : [Arduino, C++] gestion des sleep-modes

    Cet AVR peut sortir du mode sleep sur une interruption, et cela est possible à partir de n'importe quelle pin, en activant la fonction "pin change interrupt". Mais il faut l'activer pour la pin en question, et créer l'ISR correspondant.

    Je te conseille de chercher ces mots-clés, il y a des tutos sur le net à ce sujet, c'est assez simple.

  11. #8
    jiherve

    Re : [Arduino, C++] gestion des sleep-modes

    Bonsoir
    Non en Power down il n'y a que INT0 et INT1 ou l'interfaceTWI (i²c) ou le watchdog table 10.1 page 39 datasheet.
    JR
    l'électronique c'est pas du vaudou!

  12. #9
    bobflux

    Re : [Arduino, C++] gestion des sleep-modes

    Ah oui certes en power down, mais a-t-il vraiment besoin du power down ou un mode sleep suffira-t-il ?

  13. #10
    jiherve

    Re : [Arduino, C++] gestion des sleep-modes

    Re
    çà mon ami nul ne le sait!
    Il est très rare que nous ayons tenants et aboutissants ce qui permet de gloser pendant des pages.
    JR
    l'électronique c'est pas du vaudou!

Sur le même thème :

Discussions similaires

  1. [Energie] Gestion moteur 3V depuis Arduino
    Par onion22 dans le forum Électronique
    Réponses: 5
    Dernier message: 21/03/2016, 19h32
  2. Réponses: 3
    Dernier message: 29/01/2016, 10h44
  3. Gestion boutons arduino
    Par mayonaise dans le forum Électronique
    Réponses: 10
    Dernier message: 21/10/2013, 18h04
  4. programme gestion led avec arduino
    Par axel_67 dans le forum Électronique
    Réponses: 4
    Dernier message: 03/01/2012, 17h29
  5. [pic]-power Managed Modes (run,idle,sleep)
    Par jorg1n dans le forum Électronique
    Réponses: 5
    Dernier message: 29/07/2008, 07h34