potentiel kit IR

Support pour le kit de communication infra rouge (IR)

potentiel kit IR

Message non lude marlo » Ven 1 Fév 2013 19:17

bonsoir,
après avoir décoder une télécommande de lecteur dvd portable et testé le code qui allume ou éteint une led, voila deux jours entier que je cherche mais en vain à modifier un peu le code pour arriver à mes fins.
Je souhaite faire clignoter une led de 3 façons différentes pilotée par trois boutons de ma télécommande. La led doit clignoter en boucle tant qu'un bouton n'est pas pressé.
Je suis débutant et malgré mon acharnement rien n'y fait.
Si quelqu'un à une idée simple à me souffler :oops:
merci beaucoup
marlo
marlo
 
Messages: 2
Inscription: Ven 1 Fév 2013 19:02

Re: potentiel kit IR

Message non lude Sarish » Jeu 7 Fév 2013 17:13

Bonjour,
Le plus simple je pense est de faire un système du style, variable et variable_old, je m'explique
La structure du code serait :

si code recues = code ancien
{faire clignoter led}
sinon
{faire clignoter 1,2,3 fois la led
code ancien = code recues }

En espérant que cela puisse t'aider.
Sarish
 
Messages: 33
Inscription: Lun 9 Juil 2012 10:22

Re: potentiel kit IR

Message non lude marlo » Jeu 7 Fév 2013 22:41

merci de ta réponse, j'essaye de le mettre en oeuvre mais je n'arrive pas à définir "oldvalues" au début du code.
je poste ce début de code qui n’exécute qu'une fois le clignotement en fonction de chaque boutons pressés et non un clignotement en boucle :

Code: Tout sélectionner
#include <IRremote.h>

#define RECV_PIN 11
#define LEDPIN 6

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
  pinMode(LEDPIN, OUTPUT);
  irrecv.enableIRIn(); // Start receiver
  Serial.begin(9600);
}

void loop() {
   
  // If IR message is received
  if (irrecv.decode(&results)) {
    if (results.value == 0x4FB02FD) {
      Serial.println("OFF");
digitalWrite(LEDPIN, LOW);
    }
    else if (results.value == 0x4FB906F) {
      Serial.println("1");
              digitalWrite(LEDPIN, HIGH);
  delay(15);
  digitalWrite(LEDPIN, LOW);
  delay(200);
    }
    else if (results.value == 0x4FB32CD) {
      Serial.println("2");
           digitalWrite(LEDPIN, HIGH);
  delay(15);
  digitalWrite(LEDPIN, LOW);
  delay(2000);
    }
    else if (results.value == 0x4FB20DF) {
      Serial.println("3");
            digitalWrite(LEDPIN, HIGH);
  delay(15);
  digitalWrite(LEDPIN, LOW);
  delay(20000);
    }
    else {
      Serial.print("unexpected value: ");
      Serial.println(results.value, HEX);
    }
    irrecv.resume(); // Resume (needed)
  }
}


j'ai aussi essayé avec switch/case sans résultat plus probant, dans un autre registre, j'ai trouvé un code qui fait clignoter en continue la led mais une fois lancé, le programme ne sort plus de la boucle en pressant une autre touche.
J'ai l'impression qu'il ne faut pas utiliser la fonction delay() pour pouvoir sortir de la boucle mais je ne voit vraiment pas comment faire.
sinon je crois qu'un génie à posté ce code : http://arduino.cc/forum/index.php?topic=118842.0;wap2
qui fonctionnerait peut être pour ce que je veux faire mais je ne comprend pas comment il a calculer la durée des pulses.
Si un connaisseur a le temps
merci d'avance
marlo
 
Messages: 2
Inscription: Ven 1 Fév 2013 19:02

Re: potentiel kit IR

Message non lude Sarish » Ven 8 Fév 2013 09:54

var_old est une variable tout comme var elle se définit de la même façon, ne vas pas croire que var_old aura la valeur précédente de var, c'est a toi de jongler avec les variables.

Code: Tout sélectionner
loop
{
acquisition du code;
if (code_recues == code_ancien)
{
faire clignoter led;
}else if (code_recues == clignotement type 1)
{
faire le clignotement type 1;
}else if (code_recues == clignotement type 2)
{
faire le clignotement type 2;
}else if (code_recues == clignotement type 3)
{
faire le clignotement type 3;
}
code_ancien = code_recues;
}
Sarish
 
Messages: 33
Inscription: Lun 9 Juil 2012 10:22


Retourner vers Kit Communication IR

Qui est en ligne

Utilisateurs parcourant ce forum: Google Feedfetcher et 1 invité