Feux de départ pour course de voiture rc

Bonjour/bonsoir à toutes et tous.

Nouveau dans le monde de la programmation de carte Arduino je souhaite réaliser un protocole de feux de départ pour du rc drift.
Je voudrais réaliser une rampe avec 4 leds (une rouge, deux oranges et une verte).
Au branchement de l'Arduino (elegoo uno r3) il faut que la led rouge s'allume et reste allumée.
Puis via la télécommande infrarouge fourni dans le kit je voudrais lancer une sorte de décompte en appuyant sur un bouton de celle-ci comme suit : La led Rouge s'éteint une seconde puis se rallume, une seconde après une deuxième led (Orange) s'allume en plus puis une seconde après une troisième led (Orange aussi) s'allume et une seconde après les trois leds s'éteignent pour allumer la quatrième led (la Verte) et 5 seconde après la led verte s'éteint et la rouge se rallume et reste allumée jusqu'au prochaine appuis sur la télécommande.
J'ai réussi à faire le protocole pour les leds, j'ai réussi à initialiser la télécommande IR mais pour le reste je suis à la ramasse...

Voici mon message d'erreur :

C:\Users\Stéphane\Downloads\copy_of_feux_de_d_part1 (3)\copy_of_feux_de_d_part1 (3).ino:51:1: error: expected declaration before '}' token
Plusieurs bibliothèque trouvées pour "IRremote.h"
  Utilisé: C:\Users\Stéphane\Documents\Arduino\libraries\IRremote
  Non utilisé: C:\Users\Stéphane\Documents\Arduino\libraries\IRremote-3.9.0
exit status 1

Compilation error: expected declaration before '}' token

Et voici ma programmation :

// C++ code
#include <IRremote.h>

int counter;

int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN); //le capteur infrarouge est connecté à la broche 8
decode_results results;

void setup()
{ irrecv.enableIRIn(); // Initialise le recepteur infrarouge

pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);

digitalWrite(13, HIGH);
}

void loop()
{ if (irrecv.decode(&results)) {

if (results.value==0xFF0FD)//on appuie sur la touche pause de la télécommande
{
for (counter = 0; counter < 1; ++counter) {
digitalWrite(13, LOW);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(12, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(11, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
delay(5000); // Wait for 5000 millisecond(s)
digitalWrite(10, LOW);
}
}
else { digitalWrite(13, HIGH); }
}

irrecv.resume();
}

Désolé, même pour publié sur le forum j'ai eu du mal. En espérant avoir posté au bon endroit.
D'avance merci.

Amicalement, Stéphane.

:warning:
Post mis dans la mauvaise section, on parle anglais dans les forums généraux. déplacé vers le forum francophone.

Merci de prendre en compte les recommandations listées dans Les bonnes pratiques du Forum Francophone

Salut.
Il ne me donne aucun message d'erreur, mais je vous suggère d'apporter quelques modifications afin qu'il réponde comme vous l'avez expliqué.

// C++ code
#include <IRremote.h>

int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN); //le capteur infrarouge est connecté à la broche 8
decode_results results;

void setup()
{ irrecv.enableIRIn(); // Initialise le recepteur infrarouge
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT); 
  digitalWrite(13, HIGH); 
}

void loop() { 
  if (irrecv.decode(&results)) {
    if (results.value == 0xFF0FD) { //on appuie sur la touche pause de la télécommande
      digitalWrite(13, LOW);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(13, HIGH);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(12, HIGH);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(11, HIGH);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(13, LOW);
      digitalWrite(12, LOW);
      digitalWrite(11, LOW);
      digitalWrite(10, HIGH);
      delay(5000); // Wait for 5000 millisecond(s)
      digitalWrite(10, LOW);
      digitalWrite(13, HIGH);
    }   
  }
  irrecv.resume();
}

Bonsoir.

Merci beaucoup pour votre aide, c'est cool vraiment.
J'ai essayé avec votre code mais rien, juste la led rouge qui s'allume et si j'appuie sur le bouton play/pause de la téléco rien ne se passe.
Le truc bizarre c'est que lorsque j'ouvre le moniteur série aucun bouton de la téléco ne s'affiche.
Je vois bien la led du récepteur IR s'allumé mais rien d'autre.
J'ai l'impression qu'il ne reconnait pas la télécommande.

C'est logique, le code n'envoie rien au moniteur série, alors faisons-le et vérifions que le code envoyé "0xFF0FD" est le bon.

// C++ code
#include <IRremote.h>

int RECV_PIN = 8;
IRrecv irrecv(RECV_PIN); //le capteur infrarouge est connecté à la broche 8
decode_results results;
int code;

void setup() {
  Serial.begin (9600);
  irrecv.enableIRIn(); // Initialise le recepteur infrarouge
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  digitalWrite(13, HIGH);
}

void loop() {
  if (irrecv.decode(&results)) {
    code = results.value;
    Serial.println (code);
    if (code == 0xFF0FD) { //on appuie sur la touche pause de la télécommande
      digitalWrite(13, LOW);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(13, HIGH);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(12, HIGH);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(11, HIGH);
      delay(1000); // Wait for 1000 millisecond(s)
      digitalWrite(13, LOW);
      digitalWrite(12, LOW);
      digitalWrite(11, LOW);
      digitalWrite(10, HIGH);
      delay(5000); // Wait for 5000 millisecond(s)
      digitalWrite(10, LOW);
      digitalWrite(13, HIGH);
    }
    irrecv.resume();
  }
}

Bonjour.

En fait je me suis servi de ce code pour reconnaitre la téléco IR.
Tout ça était fourni dans le kit.
Peut être n'ai je pas enregistré le code, je suis perdu pour le moment...

//www.elegoo.com
//2016.12.9

#include "IRremote.h"

int receiver = 8; // Signal Pin of IR receiver to Arduino Digital Pin 8

/*-----( Declare objects )-----*/
IRrecv irrecv(receiver);     // create instance of 'irrecv'
decode_results results;      // create instance of 'decode_results'

/*-----( Function )-----*/
void translateIR() // takes action based on IR code received

// describing Remote IR codes 

{

  switch(results.value)

  {
  case 0xFFA25D: Serial.println("POWER"); break;
  case 0xFFE21D: Serial.println("FUNC/STOP"); break;
  case 0xFF629D: Serial.println("VOL+"); break;
  case 0xFF22DD: Serial.println("FAST BACK");    break;
  case 0xFF02FD: Serial.println("PAUSE");    break;
  case 0xFFC23D: Serial.println("FAST FORWARD");   break;
  case 0xFFE01F: Serial.println("DOWN");    break;
  case 0xFFA857: Serial.println("VOL-");    break;
  case 0xFF906F: Serial.println("UP");    break;
  case 0xFF9867: Serial.println("EQ");    break;
  case 0xFFB04F: Serial.println("ST/REPT");    break;
  case 0xFF6897: Serial.println("0");    break;
  case 0xFF30CF: Serial.println("1");    break;
  case 0xFF18E7: Serial.println("2");    break;
  case 0xFF7A85: Serial.println("3");    break;
  case 0xFF10EF: Serial.println("4");    break;
  case 0xFF38C7: Serial.println("5");    break;
  case 0xFF5AA5: Serial.println("6");    break;
  case 0xFF42BD: Serial.println("7");    break;
  case 0xFF4AB5: Serial.println("8");    break;
  case 0xFF52AD: Serial.println("9");    break;
  case 0xFFFFFFFF: Serial.println(" REPEAT");break;  

  default: 
    Serial.println(" other button   ");

  }// End Case

  delay(500); // Do not get immediate repeat


} //END translateIR
void setup()   /*----( SETUP: RUNS ONCE )----*/
{
  Serial.begin(9600);
  Serial.println("IR Receiver Button Decode"); 
  irrecv.enableIRIn(); // Start the receiver

}/*--(end setup )---*/


void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
{
  if (irrecv.decode(&results)) // have we received an IR signal?

  {
    translateIR(); 
    irrecv.resume(); // receive the next value
  }  
}/* --(end main loop )-- */


Et après avoir télécharger le code, je vois dans mon moniteur serie les touches sur lequel j'appuis.

Dans votre code, vous comparez si la touche 0xFF0FD a été enfoncée et que cette touche n'existe pas.Ne devrait-il pas être 0xFF02FD ?

Bonsoir gonpazzi.

Vous avez un œil de lynx!!!
Effectivement l'erreur venait de là, mille mercis à vous. :pray:
Tous fonctionne à merveille, je suis super heureux.
Merci merci merci.

Amicalement, Stéph.

Il a été un plaisir. Si vous continuez avec des petites choses pour RC, nous continuerons sûrement à nous voir.
Salutations jusque-là.

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.