[RESOLU] Conflits Radio & Servo

Bonjour à tous!
Et oui, c'est encore moi! :smiley:
Voilà, j'ai besoin d'utiliser un module radio et un servomoteur.
J'utilise la bibliothèque VirtualWire.h pour controller le module radio et la bibliothèque Servo.h pour le servo.
Le seul soucis c'est que je me suis rendu compte en faisant mon programme que ces 2 librairies n'étaient pas compatibles.
Donc je vous demande: avez-vous une solution pour faire cohabiter ces 2 composants? :smiley:
Merci!

bonjour,
lien module radio, servo.
code?

Module radio: http://www.instructables.com/id/RF-315433-MHz-Transmitter-receiver-Module-and-Ardu/step3/Arduino-Virtual-Wire-Library/
Servo: A5030 Mini Digital Aircraft Servo | Spektrum
Code:
Recepteur

/*
Glove Controlled Car
http://www.speed09.com
-Code pour le recepteur-
*/

#include <VirtualWire.h>
//#include <Servo.h>
byte message[VW_MAX_MESSAGE_LEN+1];
byte messageLength = VW_MAX_MESSAGE_LEN;


//Servo monServo;
int pos = 90;

int ar_gauche = 1;
int ar_droite = 2;
int av_gauche = 5;
int av_droite = 9;

//Ultrasons
/*int trig = 6; 
int echo = 7;
long lecture_echo; 
long cm;*/

int buzzer = 10;
void setup(){

  Serial.begin(9600);
  vw_setup(2000);
  vw_set_rx_pin(7);
  vw_rx_start();
  /*monServo.attach(2, 1000, 2000);
  monServo.write(90);*/
  //Ultrasons
  /*pinMode(trig, OUTPUT); 
  digitalWrite(trig, LOW); 
  pinMode(echo, INPUT); */
  //Phares
  pinMode(ar_gauche, OUTPUT);  //arrière gauche
  pinMode(ar_droite, OUTPUT);  //arrière droite
  pinMode(av_gauche, OUTPUT);  //avant gauche
  pinMode(av_droite, OUTPUT);  //avant droite
  //Moteurs
  //Channel A
  pinMode(12, OUTPUT);         //Moteur A
  pinMode(9, OUTPUT);          //Frein A
  //Channel B
  pinMode(13, OUTPUT);         //Moteur B
  pinMode(8, OUTPUT);          //Frein buzzer
  
  //Jingle 
  tone(buzzer, 500, 80);
  Serial.print("G.");
  delay(200);
  tone(buzzer, 500, 80);
  Serial.print("C.");
  delay(200);
  tone(buzzer, 500, 80);
  Serial.println("C.");
  delay(300);
  tone(buzzer, 400, 80);
  Serial.print("Glove ");
  delay(200);
  tone(buzzer, 300, 80);
  Serial.print("Controlled ");
  delay(200);
  tone(buzzer, 200, 50);
  Serial.println("Car");
  delay(1000);
  Serial.println("-------------");
  Serial.println("Arduino pret!");
}

void loop(){

   if (vw_get_message(message, &messageLength)){
    message[messageLength]=0;
    Serial.print("Recu: \n");
      for (int i = 0; i < messageLength; i++){
        //Serial.write(message[i]);

        //Ultrason
        /*digitalWrite(trig, HIGH); 
        delayMicroseconds(10); 
        digitalWrite(trig, LOW); 
        lecture_echo = pulseIn(echo, HIGH); 
        cm = lecture_echo / 58; */
        /*if(cm < 10){
          digitalWrite(12, HIGH);
          digitalWrite(9, LOW);
          analogWrite(3, 123);
          digitalWrite(13, LOW);
          digitalWrite(8, LOW);
          analogWrite(11, 123);

          digitalWrite(ar_gauche, HIGH);
          digitalWrite(ar_droite, HIGH);
          digitalWrite(av_gauche, LOW);
          digitalWrite(av_droite, LOW);
        }*/

        if (strcmp((char *)message,"0")==0){
          //Freins 
          digitalWrite(9, HIGH);
          digitalWrite(8, HIGH);
          Serial.println("frein");
          digitalWrite(ar_gauche, LOW);
          digitalWrite(ar_droite, LOW);
          digitalWrite(av_gauche, LOW);
          digitalWrite(av_gauche, LOW);
        }
        else if (strcmp((char *)message,"1")==0){
          Serial.println("avancer");
          // Moteurs full speed, tournent chacun dans le sens contraire pour avancer
          digitalWrite(2, LOW);
          digitalWrite(4, LOW);
          digitalWrite(5, HIGH);
          digitalWrite(12, HIGH);
          digitalWrite(9, LOW);
          analogWrite(3, 255);

          digitalWrite(ar_gauche, LOW);
          digitalWrite(ar_droite, LOW);
          digitalWrite(av_gauche, HIGH);
          digitalWrite(av_droite, HIGH);
        }
        else if (strcmp((char *)message,"2")==0){
          //Moteurs semi speed, tournent sens contraire pour reculer
          Serial.println("reculer");
          digitalWrite(12, HIGH);
          digitalWrite(9, LOW);
          analogWrite(3, 123);
          digitalWrite(13, LOW);
          digitalWrite(8, LOW);
          analogWrite(11, 123);

          digitalWrite(ar_gauche, HIGH);
          digitalWrite(ar_droite, HIGH);
          digitalWrite(av_gauche, LOW);
          digitalWrite(av_droite, LOW);
        }
        
        if (strcmp((char *)message,"5")==0){
          Serial.println("Tout droit \n");     //tout droit
          //monServo.write(90);
        }
        else if (strcmp((char *)message,"3")==0){
          Serial.println("droite \n");   //droite
          //monServo.write(130);
        }
        else if (strcmp((char *)message,"4")==0){
          Serial.println("gauche \n");   //gauche
          //monServo.write(50);
        }
        }
    }
  }

Emetteur:

 /*
Glove Controlled Car
http://www.speed09.com
-Code pour l'emetteur-
*/

#include <Wire.h>
#include <VirtualWire.h>
#include <Adafruit_ADXL345_U.h>
#include <Adafruit_Sensor.h>
Adafruit_ADXL345_Unified Sensor = Adafruit_ADXL345_Unified(1);
int flexSensorPinPouce = A0;
int flexSensorPinIndex = A1;


void setup(){
  Serial.begin(9600);
  Sensor.begin();
  vw_setup(2000);
  pinMode(9,OUTPUT);
  vw_set_tx_pin(9);
  Serial.println("A.R.C.C \n Arduino Radio Controlled Car");
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);
  Serial.println("Emetteur pret!");
  delay(2000);
  Serial.println("test");
}

void loop(){
  sensors_event_t event;
  Sensor.getEvent(&event);

  int flexSensorPinPouce = analogRead(flexSensorPinPouce);
  int flexSensorPinIndex = analogRead(flexSensorPinIndex);

  int DegreePouce = map(flexSensorPinPouce, 150, 400, 100, 0);
  int DegreeIndex = map(flexSensorPinIndex, 150, 400, 100, 0);
  

  //if(DegreePouce < 20 && DegreeIndex < 20){
  if(event.acceleration.x < 5 && event.acceleration.x > -5){
    //La main est ouverte, on ne bouge pas
    send("0");
    delay(10);
  }
  //else if(DegreePouce > 20 && DegreeIndex > 20){
    else if(event.acceleration.x > 5){
    //La main est fermée, on avance
    send("1");
    delay(10);
  }
  //else if(DegreePouce < 20 && DegreeIndex > 20){
  else if(event.acceleration.x < -5){
    //La main est fermée avec le pouce tendu, on recule
    send("2");
    delay(10);
  }
  
  if(event.acceleration.y > 2){
    //tourne à droite
    send("3");
    delay(10);
  }
  else if(event.acceleration.y < -2){
    //tourne à gauche
    send("4");
    delay(10);
  }
  else if(event.acceleration.y > -2 && event.acceleration.y < 2){
    //tout droit
    send("5");
    delay(10);
  }
Serial.println(event.acceleration.y);
Serial.println(event.acceleration.x);
}

void send (char *message){
  vw_send((uint8_t *)message, strlen(message));
  vw_wait_tx();
  }

un peu de lecture

J'ai déjà lu tous ces articles, mais merci quand même :wink:
Le problème ne vient pas du programme en lui-même, mais des librairies VW et Servo...

http://forum.arduino.cc/index.php?topic=94103.0