Bonjour,
J'aimerais réaliser une manette radio avec 4 boutons (contacteurs handicap) en pièce jointe il y a notre code.
Le premier la manette sur une carte uno et le second une carte mega. Elles communiquent entre elle mais je rencontre le problème suivant
Si je téléverse sur mes carte juste la partie pour que la voiture avance les cartes l'accepte. Mais si on téléverse la partie avancer et reculer la voiture bug.
J'aimerais savoir si notre code est bon ou si on peut apporter des modifications ?
Je vous remercie d'avance pour votre aide.
Radio_Mega_Voiture.ino (2.55 KB)
Radio_Uno_Manette.ino (1.54 KB)
J-M-L
January 17, 2019, 1:08pm
2
le code est court, postez le directement dans le forum en utilisant les balises de code. peut pas le lire sur mon smartphone.
Bonjour, Voici le code
Manette
//Bibliothèque
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//Déclaration des variables des contacteurs
int bouton_AV;
boolean etat_bouton_AV = 0;
int bouton_AR;
boolean etat_bouton_AR = 0;
int bouton_GA;
boolean etat_bouton_GA = 0;
int bouton_DR;
boolean etat_bouton_DR = 0;
RF24 radio1(9, 10); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
//Déclaration des PIN (entrée/sortie)
//Contacteurs
bouton_AV=5;
pinMode(bouton_AV,INPUT);
bouton_AR=4;
pinMode(bouton_AR,INPUT);
//Eléments pour fonctionnement de la radio
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MAX);
radio.stopListening();
}
void loop() {
//affectation des variables d'états des contacteurs
etat_bouton_AV=digitalRead(bouton_AV);
etat_bouton_AR=digitalRead(bouton_AR);
etat_bouton_GA=digitalRead(bouton_GA);
etat_bouton_DR=digitalRead(bouton_DR);
//Envoie l'état des boutons à la voiture
//Donne un ordre en fonction du contacteur
radio.write(&etat_bouton_AV, sizeof(etat_bouton_AV));
radio.write(&etat_bouton_AR, sizeof(etat_bouton_AR));
}
Voiture
//Bibliothèque
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <AFMotor.h>//Shield
//Déclaration des variables
//Radio
RF24 radio(48, 49); // CE, CSN
const byte address[6] = "00001";
//Etat des contacteurs
boolean etat_bouton_AV = 0;
boolean etat_bouton_AR = 0;
boolean etat_bouton_GA = 0;
boolean etat_bouton_DR = 0;
//LED
int led_pin = 40;
//Moteur
AF_DCMotor moteur_AVD(1);//avant Droite
AF_DCMotor moteur_AVG(2);//avant Gauche
AF_DCMotor moteur_ARG(3);//arrière Gauche
AF_DCMotor moteur_ARD(4);//arrière Droite
void setup() {
Serial.begin(9600);
//Déclaration des PIN (entrée/sortie)
//LED
pinMode(40, OUTPUT);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MAX);
radio.stopListening();
}
void loop(){
//Vitesse des moteurs
moteur_AVD.setSpeed(255);
moteur_AVG.setSpeed(255);
moteur_ARG.setSpeed(255);
moteur_ARD.setSpeed(255);
//Condition
//Doit recevoir les états des contacteurs pour rentrer en mouvement
if ((radio1.available())||(radio2.available())){
radio.read(&etat_bouton_AV, sizeof(etat_bouton_AV));
radio.read(&etat_bouton_AR, sizeof(etat_bouton_AR));
}
//Marche avant
if(etat_bouton_AV == HIGH) {
moteur_AVD.run (FORWARD);
moteur_AVG.run (FORWARD);
moteur_ARG.run (FORWARD);
moteur_ARD.run (FORWARD);
}
//Marche arrière
else if(etat_bouton_AR == HIGH) {
moteur_AVD.run (BACKWARD);
moteur_AVG.run (BACKWARD);
moteur_ARG.run (BACKWARD);
moteur_ARD.run (BACKWARD);
}
//Arrêt
else {
moteur_AVD.run (RELEASE);
moteur_AVG.run (RELEASE);
moteur_ARG.run (RELEASE);
moteur_ARD.run (RELEASE);
}
delay(5);
}
Nous avons réussi en modifiant le code.
Malheureusement il y a un temps de réponse énorme. J'ai vu que sur l'un de vos tuto
https://forum.arduino.cc/index.php?topic=480663.0
vous avez mit un adaptateur pour les modules radio. Il y a t'il une réél différence avec ou sans les adaptateur ?
Merci