combiner deux programme

j ai deux programme un avec bluetooth qui fonctionne comme cycle manuelle de bars mearm 0.4 et un autre programme qui représente un cycle automatique je faire une fusion des deux programme a la commende d un sélecteur si le selecteur prend un “1” il commende le cycle automatique si il prend “0” il commende le cycle manuelle avec bluetooth svp votre aide c est mon projet de fin de formation et merci d’ avance voila les deux programme

cycle automatique

#include <Servo.h>

Servo ArmSevo;
Servo LeftSevo;
Servo RightSevo;
Servo CenterSevo;
int SevoDelayTime = 20;

void setup()
{
 ArmSevo.attach(9); 
 LeftSevo.attach(6);
 RightSevo.attach(5);
 CenterSevo.attach(3);
 ArmSevo.write(20);
 LeftSevo.write(90);
 RightSevo.write(180);
 CenterSevo.write(60);
 delay(1000);
}

void loop()
{
  // ArmSevo Close
  for(int x=10; x < 90; x++){
    ArmSevo.write(x);
    delay(SevoDelayTime);
  }
 delay(200);
 // LeftSevo up
  for(int x=90; x < 180; x++){
    LeftSevo.write(x);
    delay(10);
    RightSevo.write(210-x);
    delay(SevoDelayTime);
  } 
  delay(200);
  // centerSevo turn
  for(int x=60; x < 90; x++){
    CenterSevo.write(x);
    delay(SevoDelayTime);
  } 
  delay(200);
  // LeftSevo down
  for(int x=180; x > 90; x--){
    LeftSevo.write(x);
    delay(10);
    RightSevo.write(210-x);
    delay(SevoDelayTime);
  } 
  delay(200);
  // ArmSevo Open
  for(int x=90; x > 10; x--){
    ArmSevo.write(x);
    delay(SevoDelayTime);
  }
  delay(200);
 // LeftSevo up
  for(int x=90; x < 180; x++){
    LeftSevo.write(x);
    delay(10);
    RightSevo.write(210-x);
    delay(SevoDelayTime);
  }   
  // centerSevo turn
  for(int x=90; x > 30; x--){
    CenterSevo.write(x);
    delay(SevoDelayTime);
  } 
  delay(200);
  // LeftSevo down
  for(int x=180; x > 90; x--){
    LeftSevo.write(x);
    delay(10);
    RightSevo.write(210-x);
    delay(SevoDelayTime);
  } 
  delay(200);
}

cycle manuelle avec bluetooth

#include <SoftwareSerial.h> // TX RX software library for bluetooth

#include <Servo.h> // servo library 
Servo myservo1, myservo2, myservo3, myservo4; // servo name

int bluetoothTx = 10; // bluetooth tx to 10 pin
int bluetoothRx = 11; // bluetooth rx to 11 pin

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  myservo1.attach(3); // attach servo signal wire to pin 9
  myservo2.attach(5);
  myservo3.attach(6);
  myservo4.attach(9);
  //Setup usb serial connection to computer
  Serial.begin(9600);

  //Setup Bluetooth serial connection to android
  bluetooth.begin(9600);
}

void loop()
{
  //Read from bluetooth and write to usb serial
  if(bluetooth.available()>= 2 )
  {
    unsigned int servopos = bluetooth.read();
    unsigned int servopos1 = bluetooth.read();
    unsigned int realservo = (servopos1 *256) + servopos;
    Serial.println(realservo);

    if (realservo >= 1000 && realservo <1180) {
      int servo1 = realservo;
      servo1 = map(servo1, 1000, 1180, 0, 180);
      myservo1.write(servo1);
      Serial.println("Servo 1 ON");
      delay(10);
    }
    if (realservo >= 2000 && realservo <2180) {
      int servo2 = realservo;
      servo2 = map(servo2, 2000, 2180, 0, 180);
      myservo2.write(servo2);
      Serial.println("Servo 2 ON");
      delay(10);
    }
    if (realservo >= 3000 && realservo <3180) {
      int servo3 = realservo;
      servo3 = map(servo3, 3000, 3180, 0, 180);
      myservo3.write(servo3);
      Serial.println("Servo 3 ON");
      delay(10);
    }
    if (realservo >= 4000 && realservo <4180) {
      int servo4 = realservo;
      servo4 = map(servo4, 4000, 4180, 0, 180);
      myservo4.write(servo4);
      Serial.println("Servo 4 ON");
      delay(10);
    }
  }
}

A priori :

  • Tu combines les déclarations et les deux setup
  • Tu prends le loop du cycle auto et tu en fais une fonction 'void cycleAuto ()'
  • Tu prends le loop du cycle manuel et tu en fais une fonction 'void cycleManuelBT ()'
  • Tu crées une nouvelle loop qui gère le sélecteur (quel qu'il soit, moi je ne sais pas ce que c'est) et qui appelle l'une ou l'autre fonction selon le cas.