Faire clignoter deux leds à une fréquence différente

bonjours

Je débute depuis peux et j'ai plusieurs problème :
je voudrais faire clignoter deux leds avec un "clignotement" qui ne sois pas a la meme vitesse pour les deux leds . Lorsque j'utilise " delay " pour la 1re led sa mais en pausse le programme de la 2de. Comment puis-je éviter cela?

merci

Bonjour,

Il faut utiliser intelligemment le temps pour faire ce que tu veux.
Regarde ici : http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

:slight_smile: merci de ta réponse je vais essayé sa se soir.

Lorsque je lance le programme sur la page ou tu ma redirigé sa fonctionne et le led " L" rouge sur la carte arduino ( Duemilanove ) s'alume en même temps que la led du montage es-ce normale et que cela signifie t-il? :~

Comment faire exactement sur le même principe clignoter deux led a des vitesse différente seulement si on appuis sur un bouton poussoir ou que une condition soi respecté ?

merci skywodd :smiley:

La led L est branchée sur la pin 13, c'est pour cela qu'elle s'allume en même temps.

Voila un exemple tester et qui fonctionne.
Niveau cablage :
Une led sur D10 et une autre sur D11 (+ la résistance de limitation de courant qui va bien ;))
Un bouton avec une résistance de tirage à l'etat haut sur D8.

Quand le bouton est appuyé, la led sur D10 va clignoter à 1Hz alors que la led sur D11 va clignoter continuellement à 2Hz.
(Ceci n'en a peut être pas l'air mais c'est un début de RTOS :wink: )

const int ledPin1 =  11;
const int ledPin2 =  10;
const int buttonPin =  8;

int ledState1 = LOW; 
int ledState2 = LOW; 
long previousMillis1 = 0;
long previousMillis2 = 0;

long interval1 = 500; 
long interval2 = 1000; 

void setup() {
  pinMode(ledPin1, OUTPUT);    
  pinMode(ledPin2, OUTPUT);    
  pinMode(buttonPin, INPUT);      
}

void loop()
{
  unsigned long currentMillis = millis();

  if(currentMillis - previousMillis1 > interval1) {
    previousMillis1 = currentMillis;   

    if (ledState1 == LOW)
      ledState1 = HIGH;
    else
      ledState1 = LOW;

    digitalWrite(ledPin1, ledState1);
  }

  if((currentMillis - previousMillis2 > interval2) && digitalRead(buttonPin) == LOW) {
    previousMillis2 = currentMillis;   

    if (ledState2 == LOW)
      ledState2 = HIGH;
    else
      ledState2 = LOW;

    digitalWrite(ledPin2, ledState2);
  }
}

merci pour vos réponses rapide :wink:

Il y a aucun " delay " dans ce programme. :smiley:
PARFAIS ,je viens de trouvé ma bible pour un petit moment.

...."(Ceci n'en a peut être pas l'air mais c'est un début de RTOS )"....
RTOS??? qu-est-que sa veut dire ?
:~ :~ :~

merci baptiste :smiley: :smiley: :smiley:

RTOS = real time Os >> système d'exploitation temps réel XD

Voici les débuts d'une librairie intéressante orientée 'évènements' et permet entre autres une programmation plus 'naturelle' du clignotement indépendant de plusieurs leds (voir exemple LedControl)
http://arduino.cc/forum/index.php/topic,51439.0.html

#include <LedControl.h>
void setup() {
  LedControl.startBlink(9,1000,500);
  LedControl.startBlink(8,200);
}
void loop() {
  LedControl.loop();
}

al1fch:
Voici les débuts d'une librairie intéressante orientée 'évènements' et permet entre autres une programmation plus 'naturelle' du clignotement indépendant de plusieurs leds (voir exemple LedControl)

Je garde de coté ça peut toujours être intéressant.
Sinon il y a une option bien plus "naturel" c'est duinOS un RTOS pour arduino.
http://robotgroup.com.ar/duinos/wiki/index.php?title=Main_Page-FR

merci skywood pour DuinOS.

Il y également 'QuantumLeap' , porté sur Arduino !!

Intéressant de voir qu'Arduino commence à etre de plus en plus pris au sérieux !