Voiture télécommandé a infrarouge

Bonjour, j'aimerais savoir si quelqu'un peut m'aider pour mon projet. j'ai fait le programme mais il ne marche pas si quelqu'un peut m'aider.
voici le programme:
#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int moteur_gauche=2;
const int moteur_droit=9;
int allumer_gauche, allumer_droit;

void setup()
{ irrecv.enableIRIn();
allumer_gauche=0;
allumer_droit=0;
pinMode(moteur_gauche, OUTPUT);
pinMode(moteur_droit, OUTPUT);
}

void loop()
{ if (irrecv.decode(&results)) {
// MOTEUR GAUCHE
if (results.value==0xFF22DD) //fast back
if (allumer_gauche==0 )
{allumer_gauche=1;
digitalWrite(moteur_gauche, HIGH);
}
}
//MOTEUR DROIT
if (results.value==0xFFC23D) //fast forward
{
if (allumer_droit==0 )
{allumer_droit=1;
digitalWrite(moteur_droit, HIGH);
}
}
//MOTEUR STOP
//moteur droit
if (results.value==0xFFA25D) //power
{
if (allumer_droit==1 )
{allumer_droit=0;
digitalWrite(moteur_droit, LOW);
}
}
//moteur gauche
if (results.value==0xFFA25D) //power
{
if (allumer_gauche==1 )
{allumer_gauche=0;
digitalWrite(moteur_gauche, LOW);
}
}
//MARCHE AVANT
//droit
if (results.value==0xFF906F) //up
{
if (allumer_droit==0 )
{allumer_droit=1;
digitalWrite(moteur_droit, HIGH);
}
}
//gauche
if (results.value==0xFF906F) //up
{
if (allumer_gauche==0 )
{allumer_gauche=1;
digitalWrite(moteur_gauche, HIGH);
}
}
irrecv.resume(); // Recoit la valeur suivante
}

: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”

Merci d’éditer votre post pour rajouter les balises de de code, c’est quasiment illisible tel quel:

  • sélectionner la partie du texte qui correspond au code
  • appuyez sur l’icône </> dans la barre d’outils pour indiquer que c’est du code

(Assurez vous aussi d’indenter le code correctement dans l’IDE avant de le copier pour le coller ici. Cela se fait en pressant ctrlT sur PC ou cmdT sur un Mac)

Il faudrait expliquer ce que tu entends par 'il ne marche pas'. Ça compile ou pas ? Si oui, que se passe-t-il et pourquoi ça ne correspond pas à ce que tu attends ?

Bonjour noemarchal1

Ton gros problème est l'indentation, tel que ton programme est indenté, il était difficile de "voire" pourquoi il ne fonctionnait pas,
En effet, il suffisait de déplacer cette accolade:

image

en fin de loop(),

image

bien indenté, tu aurais presque certainement trouvé le problème.
Je te mets ma version de ton programme:

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int moteur_gauche=2;
const int moteur_droit=9;
int allumer_gauche, allumer_droit;

void setup()
{ 
	irrecv.enableIRIn();
	allumer_gauche=0;
	allumer_droit=0;
	pinMode(moteur_gauche, OUTPUT);
	pinMode(moteur_droit, OUTPUT);
}

void loop()
{ 
	if (irrecv.decode(&results)) 
	{
		// MOTEUR GAUCHE
		if (results.value==0xFF22DD)
		{ //fast back
			if (allumer_gauche==0 )
			{
				allumer_gauche=1;
				digitalWrite(moteur_gauche, HIGH);
			}
		}
		//MOTEUR DROIT
		if (results.value==0xFFC23D) //fast forward
		{
			if (allumer_droit==0 )
			{
				allumer_droit=1;
				digitalWrite(moteur_droit, HIGH);
			}
		}
		//MOTEUR STOP
		//moteur droit
		if (results.value==0xFFA25D) //power
		{
			if (allumer_droit==1 )
			{
				allumer_droit=0;
				digitalWrite(moteur_droit, LOW);
			}
		}
		//moteur gauche
		if (results.value==0xFFA25D) //power
		{
			if (allumer_gauche==1 )
			{
				allumer_gauche=0;
				digitalWrite(moteur_gauche, LOW);
			}
		}
		//MARCHE AVANT
		//droit
		if (results.value==0xFF906F) //up
		{
			if (allumer_droit==0 )
			{
				allumer_droit=1;
				digitalWrite(moteur_droit, HIGH);
			}
		}
		//gauche
		if (results.value==0xFF906F) //up
		{
			if (allumer_gauche==0 )
			{
				allumer_gauche=1;
				digitalWrite(moteur_gauche, HIGH);
			}
		}
		irrecv.resume(); // Recoit la valeur suivante
	}
}

Cordialement
jpbbricole

jpbbricole, merci beaucoup

le programme compile et se télécharge mais dès que je le l'utilise sur mon montage plus rien ne répond. J'ai déja changer plusieurs fois mon montage rien ne change

Tu es certain de la validité des codes émis par la télécommande?

C'est quoi ton montage?

J'ai légèrement modifié le programme `du post #4.
Ainsi, chaque fois que tu presses une touche de ta télécommande, il doit y avoir d'affiché dans le moniteur de l'IDE Arduino, à 115200 ceci:

Code recu 0xFF30CF
Code recu 0xFF18E7
Code recu 0xFF7A85
Code recu 0xFF10EF
Code recu 0xFF38C7
Code recu 0xFF5AA5
Code recu 0x24AE7D4F
Code recu 0xD29C1888
Code recu 0x8300B75
Code recu 0x49B0F626

Si tu n'as rien, vérifies ton câblage, si tu as quelque chose, est ce que les codes affichés sont ceux attendus.

Le code modifié:

#include <IRremote.h>

int RECV_PIN = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
const int moteur_gauche=2;
const int moteur_droit=9;
int allumer_gauche, allumer_droit;

void setup()
{
	Serial.begin(115200);
	
	irrecv.enableIRIn();
	allumer_gauche=0;
	allumer_droit=0;
	pinMode(moteur_gauche, OUTPUT);
	pinMode(moteur_droit, OUTPUT);
}

void loop()
{
	if (irrecv.decode(&results))
	{
		if (results.value != 0xFFFFFFFF)
		{
			Serial.print("Code recu 0x");
			Serial.println(results.value, HEX);
		}
		// MOTEUR GAUCHE
		if (results.value==0xFF22DD)
		{ //fast back
			if (allumer_gauche==0 )
			{
				allumer_gauche=1;
				digitalWrite(moteur_gauche, HIGH);
			}
		}
		//MOTEUR DROIT
		if (results.value==0xFFC23D) //fast forward
		{
			if (allumer_droit==0 )
			{
				allumer_droit=1;
				digitalWrite(moteur_droit, HIGH);
			}
		}
		//MOTEUR STOP
		//moteur droit
		if (results.value==0xFFA25D) //power
		{
			if (allumer_droit==1 )
			{
				allumer_droit=0;
				digitalWrite(moteur_droit, LOW);
			}
		}
		//moteur gauche
		if (results.value==0xFFA25D) //power
		{
			if (allumer_gauche==1 )
			{
				allumer_gauche=0;
				digitalWrite(moteur_gauche, LOW);
			}
		}
		//MARCHE AVANT
		//droit
		if (results.value==0xFF906F) //up
		{
			if (allumer_droit==0 )
			{
				allumer_droit=1;
				digitalWrite(moteur_droit, HIGH);
			}
		}
		//gauche
		if (results.value==0xFF906F) //up
		{
			if (allumer_gauche==0 )
			{
				allumer_gauche=1;
				digitalWrite(moteur_gauche, HIGH);
			}
		}
		irrecv.resume(); // Recoit la valeur suivante
	}
}

Cordialement
jpbbricole

Oui mes codes sont valide mon montage:

rebonjour, mes codes sont valides, je suppose que je doit manquer de puissance d'alimentation
MERCI BEAUCOUP DE TON IMPLICATION

Facile à vérifier. Utilises une alimentation extérieure pour la partie moteur+L293D. Tu pourrais commencer avec un vieux chargeur de téléphone (mais pas trop vieux quand même, il faudrait qu'il puisse fournir au moins 1 Ampère). Ne pas oublier de réunir les masses entre cette nouvelle alimentation et ta Uno.

je me suis fabriquer un coupleur de pile en 3d avec 4pille AAA est la cela fonctionne

Super. Bonne continuation

merci de votre aide cela ma beaucoup aidé

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