Pour la partie électronique de ma voiture radiocommandée, j’ai utilisé le kit « ELEGOO Starter Kit ».

Contenu :
- Des leds pour l’éclairage avant et arrière
- Un récepteur infrarouge et sa télécommande
- Une carte électronique
- Une pile de 9V pour l’alimentation
- Des câbles mâle-femelle et femelle-femelle
- Un breadboard pour le câblage
- Des résistances
Exemples de câblage :
La télécommande servira pour commander la voiture dans 2 sens : Avancer et Reculer (touches 2 et 8).
Les Leds, simulant les feux avant et arrière, sont allumées en fonction du sens de marche.
- Fonctionnement de la télécommande et de son récepteur infrarouge.


- Fonctionnement de l’allumage de deux leds.


Programmation : Ce kit offre une interface permettant de réaliser le code ainsi que de téléverser ce code sur la carte électronique Arduino Uno sur laquelle sont branchées les entrées(capteurs/récepteurs : télécommande…) et les sorties (actionneurs qui vont réaliser l’action : moteurs pour faire tourner les roues…)
On distingue 2 parties dans le code :
Programmation : Ce kit offre une interface permettant de réaliser le code ainsi que de téléverser ce code sur la carte électronique Arduino Uno sur laquelle sont branchées les entrées(capteurs/récepteurs : télécommande…) et les sorties (actionneurs qui vont réaliser l’action : moteurs pour faire tourner les roues…)
On distingue 2 parties dans le code :
- Fonction Setup() : La configuration des broches de la carte en entrées/sorties afin de savoir où lire/envoyer l’information.
- Fonction Loop() : qui boucle indéfiniment à l’écoute d’un événement puis réalisation du traitement dans la boucle.
Exemple d’événement : Un appui sur la touche 2 de la télécommande arrive sur une entrée de la carte ce qui déclenche ue rotation en avant des moteurs faisant tourner les roues et allumant les leds associées.
#include "IRremote.h"
const int IR_RECEIVER_PIN = 13; // Signal Pin of IR receiver to Arduino Digital Pin 11
int Red_Led = 9;
int pinM1Avancer = 4; //pin de commande moteur 1
int pinM1Reculer = 12; // pin de commande moteur 1
int pinPWMMoteur1 = 10; // pin PWM moteur 1 (0-255)
int pinM2Avancer = 8; //pin de commande moteur 2
int pinM2Reculer = 2; //pin de commande moteur 2
int pinPWMMoteur2 = 6; //pin PWM moteur 2 (0-255)
int White_Led = 5;
int PWMValueM = 0;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
//Enable the IR Receiver. call the new IR receiver object/function
IrReceiver.begin(IR_RECEIVER_PIN, ENABLE_LED_FEEDBACK); // Start the receiver
pinMode(Red_Led, OUTPUT);
pinMode(White_Led, OUTPUT);
digitalWrite(Red_Led, HIGH);
digitalWrite(White_Led, HIGH);
delay(3000);
digitalWrite(Red_Led, LOW);
digitalWrite(White_Led, LOW);
pinMode(pinM1Avancer, OUTPUT);
pinMode(pinM1Reculer, OUTPUT);
pinMode(pinPWMMoteur1, OUTPUT);
analogWrite(pinPWMMoteur1, PWMValueM);
pinMode(pinM2Avancer, OUTPUT);
pinMode(pinM2Reculer, OUTPUT);
pinMode(pinPWMMoteur2, OUTPUT);
analogWrite(pinPWMMoteur2, PWMValueM);
}
void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
if (IrReceiver.decode()) // have we received an IR signal
{
//Print Code in HEX
Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
IrReceiver.resume(); // receive the next value
if(IrReceiver.decodedIRData.decodedRawData == 0xE718FF00 ) //touche 2 détectée
{
digitalWrite(White_Led, HIGH);
avancer();
digitalWrite(White_Led, LOW);
}
else if(IrReceiver.decodedIRData.decodedRawData == 0xAD52FF00) //touche 8 détectée
{
digitalWrite(Red_Led, HIGH);
reculer();
digitalWrite(Red_Led, LOW);
}
else if(IrReceiver.decodedIRData.decodedRawData == 0xA55AFF00 ) //touche 6 détectée
{
tournerADroite();
}
else if(IrReceiver.decodedIRData.decodedRawData == 0xF708FF00 ) //touche 4 détectée
{
tournerAGauche();
}
}
}/* --(end main loop )-- */
void avancer() {
for(PWMValueM;PWMValueM<=255;PWMValueM++)
{
digitalWrite(pinM1Avancer, HIGH);
digitalWrite(pinM1Reculer, LOW);
digitalWrite(pinM2Avancer, HIGH);
digitalWrite(pinM2Reculer, LOW);
delay(10);
analogWrite(pinPWMMoteur1, PWMValueM);
analogWrite(pinPWMMoteur2, PWMValueM);
}
delay(1000);
analogWrite(pinPWMMoteur1, 0);
analogWrite(pinPWMMoteur2, 0);
PWMValueM=0;
}