<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[[Débutant] Les interruptions]]></title><description><![CDATA[<p dir="auto">Les interruptions c'est quoi ?</p>
<p dir="auto">C'est une fonction qui est définis sur une broche. Lorsque la broche change d'état (paramètrable dans le code), le code en cour est stoppé et le sous programme mis en argument vas être démarré.</p>
<p dir="auto">Utilité: Je devais faire un chrono (pour la course en cours, si des gens connaissent).</p>
<p dir="auto">Seulement, il fallait ce dire: la voiture peut partir à tout moment.</p>
<p dir="auto">Alors au début j'avais dans l'idée de mettre une condition dans le bloc while(), mais très mauvaise idée! Surtout que la course est au ms près!</p>
<p dir="auto">Alors j'ai découvert les interruptions <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> .</p>
<p dir="auto">Mise en place:</p>
<p dir="auto">La fonction de arduino est: attachInterrupt( pin, ISR, mode);</p>
<p dir="auto">pin -&gt; entre 0 et 5, elle correspond à des broches définis suivant le type de carte:</p>
<p dir="auto"><img src="https://i.imgur.com/i4PPgwH.png" alt="i4PPgwH.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">ISR -&gt; C'est le sous programme à executé, il dois être sans argument.</p>
<p dir="auto">Mode -&gt; Mode de détection: LOW, CHANGE, RISING, FALLING,  HIGH.</p>
<p dir="auto">Exemple de code:</p>
<p dir="auto"><img src="https://i.imgur.com/VbPWF2c.png" alt="VbPWF2c.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Mon code de chronométre "normal":</p>
<pre><code>#include &lt;Wire.h&gt;
#include &lt;Adafruit_RGBLCDShield.h&gt;

Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

volatile int time_start = 0; 
volatile int time_stop = 0;
volatile int time_final = 0;
volatile boolean isrunning = false;
volatile boolean isended = false;
boolean display_wait = false;
boolean display_running = false;
boolean display_ended = false;

void setup() {
  lcd.begin(16, 2);
  attachInterrupt(0, count_start, RISING);
  attachInterrupt(1, count_stop, RISING);
  lcd.print("En attente...");
}

void loop() {
  if (isrunning == true){
    if (display_running == false){
      display_wait = false;
      display_ended = false;
      display_running = true;
      lcd.clear();
      lcd.print("Comptage...");
    }
  }else if (isended == true){
   if (display_ended == false){
      display_wait = false;
      display_running = false;
      display_ended = true;
      lcd.clear();
      lcd.print("Temps : " + time_final);
      lcd.print(" ms");
   } 
  }else{
    if (display_wait == true){
      display_running = false;
      display_ended = false;
      display_wait = true;
      lcd.clear();
      lcd.print("En attente...");
    }
  }
}

void count_start() {
  if (isrunning == false) {
  display_running = false;
  display_ended = false;
  display_wait = false;
  time_start = millis();
  isended = false;
  isrunning = true;
  }
}

void count_stop(){
  if (isrunning == true){
    time_stop = millis();
    time_final = time_stop - time_start;
    isended = true;
    isrunning = false;
  }
}
</code></pre>
<p dir="auto">Mon code de chronométre "POO"(plus légé et plus rapide):</p>
<pre><code>#include &lt;Wire.h&gt;
#include &lt;Adafruit_RGBLCDShield.h&gt;

enum Status{
 isNull,
 isWaiting,
 isRunning,
 isEnded
};

struct Time {
  int Start;
  int Stop;
  int Final = Stop - Start;
};

Status chrono_status;
Status display_status;
volatile Time chrono_time;
Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield();

void setup(){
  lcd.begin(16, 2);
  attachInterrupt(0, chrono_start, RISING);
  attachInterrupt(1, chrono_stop, RISING);
  display_status = isNull;
  chrono_status = isWaiting;
}

void loop(){
  switch (chrono_status) {
    case isWaiting:
      if (display_status != isWaiting){
        lcd.clear();
        lcd.print("En attente...");
        display_status = isWaiting;
      }
      break;
    case isRunning:
      if (display_status != isRunning){
        lcd.clear();
        lcd.print("Comptage...");
        display_status = isRunning;
      }
      break;
    case isEnded:
      if (display_status != isEnded){
        lcd.clear();
        lcd.print("Temps: ");
        lcd.print(chrono_time.Final);
        lcd.print(" ms");
        display_status = isEnded;
      }
      break;
  }
}

void chrono_start() {
  if (chrono_status != isRunning){
    chrono_time.Start = millis();
    chrono_status = isRunning;
  }
}

void chrono_stop() {
  if (chrono_status == isRunning){
    chrono_time.Stop = millis();
    chrono_status = isEnded;
  }
}
</code></pre>
<p dir="auto">Voila, j'espère que ce petit tuto vous a plus!</p>
<p dir="auto">Pour plus d'informations: <a href="http://www.arduino.cc/en/Reference/AttachInterrupt" rel="nofollow ugc">http://www.arduino.cc/en/Reference/AttachInterrupt</a></p>
]]></description><link>http://new.melinyel.net/topic/1575/débutant-les-interruptions</link><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 18:32:04 GMT</lastBuildDate><atom:link href="http://new.melinyel.net/topic/1575.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 09 May 2015 16:11:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Débutant] Les interruptions on Wed, 13 May 2015 16:51:19 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto">D'accord merci <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> Je te solliciterais surement si j'en achète une <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<p dir="auto">Merci du partage <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
</blockquote>
<p dir="auto">Aucun soucis.</p>
<p dir="auto">Si vous avez du mal à comprendre le code je peux vous l'expliquer !</p>
]]></description><link>http://new.melinyel.net/post/16368</link><guid isPermaLink="true">http://new.melinyel.net/post/16368</guid><dc:creator><![CDATA[Brokeos]]></dc:creator><pubDate>Wed, 13 May 2015 16:51:19 GMT</pubDate></item><item><title><![CDATA[Reply to [Débutant] Les interruptions on Wed, 13 May 2015 16:36:41 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto">Je te conseil le Arduino pour commencer, c'est le plus simple, je trouve.</p>
</blockquote>
<p dir="auto">D'accord merci <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> Je te solliciterais surement si j'en achète une <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<blockquote>
<p dir="auto">Rajout du code du chronométre sous 2 version : Normal, et POO(plus légère et plus rapide)</p>
</blockquote>
<p dir="auto">Merci du partage <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
]]></description><link>http://new.melinyel.net/post/16366</link><guid isPermaLink="true">http://new.melinyel.net/post/16366</guid><dc:creator><![CDATA[Soulalex]]></dc:creator><pubDate>Wed, 13 May 2015 16:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to [Débutant] Les interruptions on Wed, 13 May 2015 14:40:15 GMT]]></title><description><![CDATA[<p dir="auto">Rajout du code du chronométre sous 2 version : Normal, et POO(plus légère et plus rapide)</p>
]]></description><link>http://new.melinyel.net/post/16361</link><guid isPermaLink="true">http://new.melinyel.net/post/16361</guid><dc:creator><![CDATA[Brokeos]]></dc:creator><pubDate>Wed, 13 May 2015 14:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to [Débutant] Les interruptions on Sun, 10 May 2015 18:29:46 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto">Merci pour ce petit tutoriel <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<p dir="auto">Un jour il faudrait que je m'achète un Arduino ou un Raspberry pour faire quelques bidouilles ^^</p>
</blockquote>
<p dir="auto">Je te conseil le Arduino pour commencer, c'est le plus simple, je trouve.</p>
]]></description><link>http://new.melinyel.net/post/16315</link><guid isPermaLink="true">http://new.melinyel.net/post/16315</guid><dc:creator><![CDATA[Brokeos]]></dc:creator><pubDate>Sun, 10 May 2015 18:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to [Débutant] Les interruptions on Sun, 10 May 2015 17:55:46 GMT]]></title><description><![CDATA[<p dir="auto">Merci pour ce petit tutoriel <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<p dir="auto">Un jour il faudrait que je m'achète un Arduino ou un Raspberry pour faire quelques bidouilles ^^</p>
]]></description><link>http://new.melinyel.net/post/16314</link><guid isPermaLink="true">http://new.melinyel.net/post/16314</guid><dc:creator><![CDATA[Soulalex]]></dc:creator><pubDate>Sun, 10 May 2015 17:55:46 GMT</pubDate></item></channel></rss>