télécommande TV automatique

j'ai trouvé sur le GitHub le IRsendRawDemo qui envoie exactement le même code 20DF10EF que ma télco LG
sauf que les "Raw"s diffèrent un peu j'ai gardé ceux fournis.
je l'ai chargé : çà ne marche toujours pas
j'ai prêté mon Picoscope je le récupère dans quelques jours.

Etes-vous vraiement sûr que le récepteur IR sur la télé est bien là où vous croyez?

oui le récepteur TV c’est un petit rond en bas à droite à coté du voyant rouge/vert de marche/arret.

je ne sais pas utiliser irrecvdumpv2 j’ai des messages d’erreur par contre irrecvdump çà va.

Bonjour à tous , enfin il y a du progrès :
j'ai encore changé de Led IR et çà marche aussitôt; c'est à n'y rien comprendre ,les deux seules différences sont

  • la tension de seuil que je mesure maintenant à 978mV alors que la précédente était à 990mV
    -ici j'ai mis une résistance de 100 ohms en série avec la cathode , l'anode étant directement sur la pin 3 du uno

j'ai aussi amélioré les connexions mais bon…

je continue à developper mon projet que j'espère bientôt présenter dans "projets finis"

Je remercie sincèrement les gentils contributeurs qui ont sacrifié de leur temps pour me venir en aide
C'est franchement très sympa ,on se sent mois seul.

Au plaisir de vous revoir
Je rends hommage particulière à Artouste , je me souviens que tu m'as déjà aidé précédemment.

Artouste ,excuse moi d'avoir écorché ton nom à plusieurs reprises.
J'ai rectifié.

Tu peux corriger : Quick Edit.

Bonjour,
Pourquoi quand je veux utiliser IRrecvDumpV2 j'ai cette erreur à la vérification/compilation:
'class decode_results' has no member named 'address'?

pourtant il a été vérifié ce programme puisque c'est le concepteur qui l'a écrit !

merci d'avance

hello
pour tester, je viens d'installer celle ci

compile sans problème sous 1.8.10

bonsoir oui dfgh chez moi aussi celle là fonctionne mais j’aurais bien voulu tester la V2

oui, une fois installée, dans les exemples tu as bien "IRrecvDumpV2"

que tu retrouves bien ICI

Bonjour,
dfgh, effectivement en chargeant la dernière version de Arduino ,en virant de la libraire l'ancienne IRremote et en installant celle que tu m'as désigné çà compile bien maintenant
je vais pouvoir l 'essayer.

un grand merci à toi.

Bonjour me revoilà avec mon projet qui a bien avancé, il est maintenant fonctionnel
je le mets ci-dessous , messieurs les modérateurs si vous le voulez bien dîtes-moi s’il est
acceptable dans la rubrique “Projets finis”

/* Je reçois la télé  via un boîtier IPTV connecté à ma box mais la mise en marche  est assez lente et oblige à plusieurs manipulations de la télécommande
   j'ai voulu automatiser tout çà:
   La télécommande ,un peu simpliste, n'a pas de touche numérique;
   Elles ont été décodées avec IRrecvDump de la bibliothèque IRremote et un récepteur IR récupéré  sur un ancien décodeur
   ceci  n'est pas traité ici.

   L'Arduino a une Led infrarouge sur la pin 3.
   
   La fonction "clavier" permet le pilotage à partir du bandeau du monitor série en simulant la télécommande d'origine ,c'est utile pour la mise au point.
   La fonction "séquence" réalise  après appui sur un bouton ,une suite chronologique comme on le ferait manuellement à la télécommande.
   La fonction "roue codeuse" a été ajoutée pour sélectionner la chaîne a démarrer parmi plusieurs.
   Sur l'écran d'accueil des chaînes (gratuites)de Molotov la disposition est la suivante quand on quitte le bandeau du haut:
   TF1  FRANCE2 FRANCE3 FRANCE5 M6  ARTE
   C8    W9    (TMC)  (TFX)  (LCP) FRANCE O etc...  
   ce qui justifie les déplacements vers le bas ou vers la droite.
   Voilà mon programme ,les pros  vont sans doute trouver à améliorer mais ,tel quel, il est fonctionnel .
   merci de votre attention
   guillaumetell
*/
#include <IRremote.h>
IRsend irsend;
char data = 0;
long int marche = 0x01FE817E;// touche marche / arret
long int bas = 0x1FE02FD; //touche bas
long int droite = 0x1FE9C63; //touche droite
long int gauche = 0x1FEEC13; //touche gauche
long int OK = 0x1FEC837; //touche OK
long int plus = 0x1FEE11E; //augmente le son
//unsigned long millis();
const byte bp = 7;//un bouton poussoir

byte choix = 1; //choix de la chaîne TF1 par défaut
void setup() {
  Serial.begin(9600);
  pinMode(bp, INPUT_PULLUP);
}

void loop() {
  clavier();
  sequence();
  rouecodeuse();
}

void clavier() {
  //if(Serial.available()) // recherche si donnée présente sur le port série
  {
    data = Serial.read(); // lecture

  }

  if (data == 'm') {

    irsend.sendNEC(marche, 32);

    Serial.print("boot");

    delay(40);

  }
  else if (data == 'b') {
    irsend.sendNEC(bas, 32); //touche bas
    Serial.print("bas");
    delay(40);
  }
  else if (data == 'd') {
    irsend.sendNEC(droite, 32); //touche droite
    Serial.print("droite");
    delay(40);
  }
  else if (data == 'g') {
    irsend.sendNEC(gauche, 32); //touche gauche
    Serial.print("gauche");
    delay(40);
  }
  else if (data == 'o') {
    irsend.sendNEC(OK, 32); //touche OK
    Serial.print("OK");
    delay(40);
  }

  else if (data == 's') {
    irsend.sendNEC(0x1FEE1E, 32); //touche plus de son
    Serial.print("OK");
    delay(40);
  }
}
void sequence()
{

  if (digitalRead(bp) == HIGH) {}

  if (digitalRead(bp) == LOW) {

    irsend.sendNEC(marche, 32); // IPTV:0x1FE817E il faut presque 42s pour la mise en service "écran ANDROID"

    Serial.print("boot");

    delay(42000);
    irsend.sendNEC(bas, 32); //touche bas pour passer de la fenêtre YOUTUBE à celle de MOLOTOV
    Serial.print("bas");
    delay(2000);
    irsend.sendNEC(OK, 32); //touche OK pour valider le choix de MOLOTOV
    Serial.print("OK");
    delay(12000); // temps pour l'apparition de l'écran MOLOTOV
    irsend.sendNEC(bas, 32); //touche bas pour passer de la ligne TV aux fenêtres
    Serial.print("bas");
    delay(3000);
    if (choix == 1) {
      irsend.sendNEC(OK, 32); //touche OK pour valider le choix de la chaîne 1
      Serial.print("OK= TF1");
      delay(2000);
    }
    if (choix == 2) {
      irsend.sendNEC(droite, 32); //touche droite pour se déplacer de la chaîne 1 à la chaîne 2
      Serial.print("droite2= FRANCE 2");
      delay(1000);
    }
    if (choix == 3) {
      for (int i = 1; i < 3; i++) {
        irsend.sendNEC(droite, 32); //touche droite de la 1 à la 3
        Serial.print("droite3= FRANCE 3");
        delay(1000);
      }
    }
    if (choix == 4) {
      //for (int i = 1; i < 3; i++) {
      irsend.sendNEC(bas, 32); // pas de canal+ alors remplacé par france 4
      Serial.print("bas");
      delay(1000);
      //}
      for (int i = 1; i < 6; i++) {
        irsend.sendNEC(droite, 32);
        Serial.print("droite FRANCE 4");
        delay(2000);
      }
    }
    if (choix == 5) {
      for (int i = 1; i < 4; i++) {
        irsend.sendNEC(droite, 32); //touche droite de la 1 à la position  4
        Serial.print("droite4= FRANCE 5");
        delay(1000);
      }
    }
    if (choix == 6) {
      for (byte i = 1; i < 5; i++) {
        irsend.sendNEC(droite, 32); //touche droite de la 1 à la pos 5

        Serial.print("droite5= M6");
        delay(1000);
      }
    }
    if (choix == 7) {
      for (byte i = 1; i < 6; i++) {
        irsend.sendNEC(droite, 32); //touche droite de la 1 à la pos 6
        Serial.print("droite6= ARTE");
        delay(2000);
      }
    }
    if (choix == 8) {
      irsend.sendNEC(bas, 32); //touche bas de la 1 à la pos 7
      Serial.print("bas7=C8");
      delay(1000);
    }

    if (choix == 0) { //ici rien prévu donc on revient au choix 1

      delay(1000);
    }
    irsend.sendNEC(OK, 32); //touche OK pour valider le choix de la chaîne
    Serial.print("OK");
    delay(5000);
    irsend.sendNEC(OK, 32); //touche OK pour valider la lecture
    Serial.print("OK");
    delay(5000);
    for (byte i = 0; i < 6; i++) {
      irsend.sendNEC(plus, 32); //touche volume +
      Serial.print("augmenter de son");
      delay(1000);
    }
  }
}

void rouecodeuse() {

  int  val = analogRead(A0);//0 à 1023
  if (val < 50) {
    choix = 0; //aucune chaîne
  }
  if (val > 100 && val < 150) {
    choix = 1;
  }
  if (val > 200 && val < 300) {
    choix = 2;
  }
  if (val > 350 && val < 420) {
    choix = 3;
  }
  if (val > 480 && val < 540) {
    choix = 4;
  }
  if (val > 600 && val < 680) {
    choix = 5;
  }
  if (val > 740 && val < 800) {
    choix = 6;
  }
  if (val > 850 && val < 930) {
    choix = 7;
  }
  if (val > 950 && val < 1024) {
    choix = 8; //les positions 8 et 9 sont identiques sur ma roue codeuse
  }
}

:slight_smile: cool