Помогите объединить два скетча.

Тема в разделе "Проводная и беспроводная связь", создана пользователем 6oTuHoK, 22 янв 2017.

  1. 6oTuHoK

    6oTuHoK Нуб

    Помогите объединить два скетча приемников у самого не получается. Сразу скажу скетчи писал не я а нашел в интернете по отдельности они рабочие. Скетчи передатчиков получилось объединить так что их не выкладываю
    1 скетч
    Код (C++):

    #define led 8
    #include <SPI.h>
    #include "RF24.h"
    RF24 radio(15,16);
    const uint64_t pipe = 0xE8E8F0F0E1LL;
    //int msg[1];
    int msg[1];
    int msh[1];
    boolean ledOn = false;
    boolean lastBut = HIGH;
    long time = 0;
    long debounce = 300;
    int data;
    int data1;
    int pos;
    int fspeed; // движение вперед
    int bspeed; // движение назад
    int steer;
    const int in1 = 7; // direction pin 1
    const int in2 = 6; // direction pin 2
    const int in3 = 4; // direction pin 1
    const int in4 = 2; // direction pin 2
    const int ena = 5; // PWM pin to change speed
    const int enb = 3;
    byte IsConnect;
    void setup()
    {
      pinMode(led, OUTPUT);
      Serial.begin(9600);
      pinMode(in1, OUTPUT); // connection to L298n
      pinMode(in2, OUTPUT); // connection to L298n
      pinMode(ena, OUTPUT); // connection to L298n
      pinMode(in3, OUTPUT); // connection to L298n
      pinMode(in4, OUTPUT); // connection to L298n
      pinMode(enb, OUTPUT); // connection to L298n
      //servo1.attach(3);
      // delay(10);
      radio.begin();
      radio.openReadingPipe(1,pipe);
    // radio.openReadingPipe(pipe);
      radio.startListening();
    }
    int MotoL, MotoR;
    int ValStickX, ValStickY;
    void loop() {
      if (radio.available()){
        radio.read(msg, 1);
        IsConnect = HIGH;
      }
      else{
        IsConnect = LOW;
      }
    if (msh[1] == 255 && lastBut == HIGH && millis() - time > debounce)
    {
    ledOn = !ledOn;
    lastBut = HIGH;
    time = millis();
    }
    else // Иначе,
    {
      lastBut = digitalRead(lastBut);
    }
      digitalWrite(led, ledOn);
    Serial.println(msh[1]);
      if (msg[0] <128 && msg[0] >-1){
        data = msg[0];
        ValStickX = map(data, 0, 127, -255, 254);
      }
      if (msg[0] < 254 && msg[0] > 127){
        data = msg[0];
        ValStickY = map(data, 128, 255, -255, 254);
      }
      if(abs(ValStickX) < 20){
        ValStickX = 0;
      }
      if(abs(ValStickY) < 20){
        ValStickY = 0;
      }
      MotoL = ValStickX - (ValStickY /1.2);
      MotoR = ValStickX + (ValStickY /1.2);
      if(IsConnect==LOW){
        MotoL=0;
      }
      if(IsConnect==LOW){
        MotoR=0;
      }
    //  Serial.println("ML: "+String(MotoL)+", MR: "+String(MotoR));
      if(MotoL > 255){
        MotoL = 255;
      }
      if(MotoR > 255){
        MotoR = 255;
      }
      if(MotoL < -255){
        MotoL = -255;
      }
      if(MotoR < -255){
        MotoR = -255;
      }
      Control4WD(MotoL, MotoR);
    }
    void Control4WD(int mLeft, int mRight){
      //  Serial.println("ML: "+String(mLeft)+", MR: "+String(mRight));
      bool directionL, directionR; // направление вращение для L298N
      byte valueL, valueR; // значение ШИМ M1, M2 (0-255)
      if(mLeft > 0){
        valueL = mLeft;
        directionL = 0;
      }
      else if(mLeft < 0){
        valueL = abs(mLeft);
        directionL = 1;
      }
      else{
        directionL = 0;
        valueL = 0;
      }
      if(mRight > 0){
        valueR = mRight;
        directionR = 0;
      }
      else if(mRight < 0){
        valueR = abs(mRight);
        directionR = 1;
      }
      else {
        directionR = 0;
        valueR = 0;
      }
      digitalWrite(in1, directionL);
      digitalWrite(in2, !directionL);
      digitalWrite(in3, directionR);
      digitalWrite(in4, !directionR);
      analogWrite(ena, valueL);
      analogWrite(enb, valueR);
    }

     
    2 скетч
    Код (C++):

    #include <Servo.h>
    #include <SPI.h>
    #include "RF24.h"
    Servo myservo;  // create servo object to control a servo
    RF24 radio(15,16);
    const uint64_t pipe = 0xE8E8F0F0E1LL; // адрес канала
    int msg[1];
    void setup()
    {
    // Serial.begin(9600);
    myservo.attach(9);  // attaches the servo on pin 9 to the servo object
    radio.begin();
    radio.openReadingPipe(1,pipe); // Открываем один из 6-ти каналов приема
    radio.startListening(); // Начинаем слушать эфир
    }
    void loop()
    {
    if (radio.available()){
    bool done = false;
    while (!done){
    done = radio.read(msg, 1);    
    myservo.write (msg[0]);
    //Serial.println(msg[0]);
    }
    }
    }
     
     
    Последнее редактирование: 23 янв 2017
  2. sslobodyan

    sslobodyan Гик

    Ну и что тут объединять?
     
  3. 6oTuHoK

    6oTuHoK Нуб

    Сори первый скетч это я пробовал объединять все исправил на нужный. Ну а объединить нужно двигатели с сервоприводом первый и второй скетч.