sábado, 29 de dezembro de 2018





ESPERO AJUDAR OBG 










#include <Psx.h>
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>

#define dataPin 4
#define cmndPin 3
#define attPin 2
#define clockPin 5

Psx Psx;

byte envio[8];
byte tx_endereco[5] = {0xD0,0xD0,0xD0,0xD0,0xD0};

void setup()
{
Serial.begin(57600);
Psx.setupPins(dataPin, cmndPin, attPin, clockPin, 10);

Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.payload = 8;
Mirf.config();
}

void loop()
{
Psx.read();

if(Psx.psxID != 0x00)
{
envio[0] = Psx.psxID; // DIGITAL (82) , ANALOGICO (CE)
envio[1] = Psx.psxStatus;
envio[2] = Psx.psxThumbL; // SETAS, SELECT, DIGITAL L
envio[3] = Psx.psxThumbR; // (x,[],/\,O), START, DIGITAL R, (L1,L2,R1,R2)
envio[4] = Psx.psxJoyRX; // EIXO ANALOGICO "X" DO "R"
envio[5] = Psx.psxJoyRY; // EIXO ANALOGICO "Y" DO "R"
envio[6] = Psx.psxJoyLX; // EIXO ANALOGICO "X" DO "L"
envio[7] = Psx.psxJoyLY; // EIXO ANALOGICO "Y" DO "L"

 
      Serial.print("Data 0 ==> ");
      Serial.println(envio[2]);
      Serial.print("Data 1 ==> ");
      Serial.println(envio[3]);

Mirf.setTADDR(tx_endereco);
Mirf.send(envio);
while(Mirf.isSending());
}

delay(50);
}






//receptor//

#include <SPI.h>

#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>


byte entrada[8];

byte rx_endereco[5] = {0xD0,0xD0,0xD0,0xD0,0xD0};

uint32_t lastCommandTime = 0;

uint8_t data1, data2,data3, data4,data5, data6,data7;

void setup()
{
  Serial.begin(57600);

  Mirf.spi = &MirfHardwareSpi;
  Mirf.init();
  Mirf.setRADDR(rx_endereco);
  Mirf.payload = 8;
  Mirf.config();
}

void loop()
{
  if(!Mirf.isSending() && Mirf.dataReady())
  {
    Mirf.getData(entrada);
 
 
    data1 = ~entrada[1];
    data2 = ~entrada[2];
    data3 = ~entrada[3];
    data4 = ~entrada[4];
    data5 = ~entrada[5];
    data6 = ~entrada[6];
    data7 = ~entrada[7];
    /*    data 1
     * 1 = Seta para esquerda / analogico L para esquerda
     * 2 = Seta para baixo / analogico L para baixo
     * 4 = seta para direita / analogico L para direita
     * 8 = seta para cima / analogico L para cima
    */
    /*   data 2
     * 1 = [] / analogico R para esquerda
     * 2 = X / analogico R para baixo
     * 4 = O / analogico R para direita
     * 8 = /\ / analogico R para cima
     * 16 = R1
     * 32 = L1
     * 64 = R2
     * 128 = L2
    */
 
 
    Serial.print("Data 1 ==> ");
    Serial.println(data1);
    Serial.print("Data 2 ==> ");
    Serial.println(data2);
    Serial.print("Data 3 ==> ");
    Serial.println(data3);
    Serial.print("Data 4 ==> ");
    Serial.println(data4);
    Serial.print("Data 5 ==> ");
    Serial.println(data5);
    Serial.print("Data 6 ==> ");
    Serial.println(data6);
    Serial.print("Data 7 ==> ");
    Serial.println(data7);
 
    Mirf.flushRx();
    lastCommandTime = millis();
  }

  if((millis() - lastCommandTime) > 100)
  {
 
    Mirf.flushRx();
    lastCommandTime = millis();
  }
}





rov arduino



#include <Psx.h>

#include <SPI.h>

#include <Mirf.h>

#include <nRF24L01.h>

#include <MirfHardwareSpiDriver.h>



#define dataPin 4

#define cmndPin 3

#define attPin 2

#define clockPin 5



Psx Psx;



byte envio[8];

byte tx_endereco[5] = {0xD0,0xD0,0xD0,0xD0,0xD0};



void setup()

{

Serial.begin(57600);

Psx.setupPins(dataPin, cmndPin, attPin, clockPin, 10);



Mirf.spi = &MirfHardwareSpi;

Mirf.init();

Mirf.payload = 8;

Mirf.config();

}



void loop()

{

Psx.read();



if(Psx.psxID != 0x00)

{

envio[0] = Psx.psxID; // DIGITAL (82) , ANALOGICO (CE)

envio[1] = Psx.psxStatus;

envio[2] = Psx.psxThumbL; // SETAS, SELECT, DIGITAL L

envio[3] = Psx.psxThumbR; // (x,[],/\,O), START, DIGITAL R, (L1,L2,R1,R2)

envio[4] = Psx.psxJoyRX; // EIXO ANALOGICO "X" DO "R"

envio[5] = Psx.psxJoyRY; // EIXO ANALOGICO "Y" DO "R"

envio[6] = Psx.psxJoyLX; // EIXO ANALOGICO "X" DO "L"

envio[7] = Psx.psxJoyLY; // EIXO ANALOGICO "Y" DO "L"



 

      Serial.print("Data 0 ==> ");

      Serial.println(envio[2]);

      Serial.print("Data 1 ==> ");

      Serial.println(envio[3]);



Mirf.setTADDR(tx_endereco);

Mirf.send(envio);

while(Mirf.isSending());

}



delay(50);

}







#include <SPI.h>



#include <Mirf.h>

#include <nRF24L01.h>

#include <MirfHardwareSpiDriver.h>





byte entrada[8];



byte rx_endereco[5] = {0xD0,0xD0,0xD0,0xD0,0xD0};



uint32_t lastCommandTime = 0;



uint8_t data1, data2,data3, data4,data5, data6,data7;



void setup()

{

  Serial.begin(57600);

 

  Mirf.spi = &MirfHardwareSpi;

  Mirf.init();

  Mirf.setRADDR(rx_endereco);

  Mirf.payload = 8;

  Mirf.config();

}



void loop()

{

  if(!Mirf.isSending() && Mirf.dataReady())

  {

    Mirf.getData(entrada);

   

   

    data1 = ~entrada[1];

    data2 = ~entrada[2];

    data3 = ~entrada[3];

    data4 = ~entrada[4];

    data5 = ~entrada[5];

    data6 = ~entrada[6];

    data7 = ~entrada[7];

    /*    data 1

     * 1 = Seta para esquerda / analogico L para esquerda

     * 2 = Seta para baixo / analogico L para baixo

     * 4 = seta para direita / analogico L para direita

     * 8 = seta para cima / analogico L para cima

    */

    /*   data 2

     * 1 = [] / analogico R para esquerda

     * 2 = X / analogico R para baixo

     * 4 = O / analogico R para direita

     * 8 = /\ / analogico R para cima

     * 16 = R1

     * 32 = L1

     * 64 = R2

     * 128 = L2

    */

   

   

    Serial.print("Data 1 ==> ");

    Serial.println(data1);

    Serial.print("Data 2 ==> ");

    Serial.println(data2);

    Serial.print("Data 3 ==> ");

    Serial.println(data3);

    Serial.print("Data 4 ==> ");

    Serial.println(data4);

    Serial.print("Data 5 ==> ");

    Serial.println(data5);

    Serial.print("Data 6 ==> ");

    Serial.println(data6);

    Serial.print("Data 7 ==> ");

    Serial.println(data7);

   

    Mirf.flushRx();

    lastCommandTime = millis();

  }



  if((millis() - lastCommandTime) > 100)

  {

   

    Mirf.flushRx();

    lastCommandTime = millis();

  }

}







domingo, 4 de novembro de 2018

código arduino ,,esquema

/*
  Front Motor (Steering) => Channel A
  Back Motor => Channel B

  Since the motor shield hijacks 6 pins for the motors'
  control, they are declared in the MotorShieldR3 library.
*/
#include <MotorShield.h>
#include <AFMotor.h>

AF_DCMotor motorsteer(1);
AF_DCMotor motorengine(2);

#define pinfrontLights   4      //Pin that activates the Front lights.
#define pinbackLights     8     //Pin that activates the Back lights. 
char command = 'S';
char prevCommand = 'A';
int velocity = 0;
unsigned long timer0 = 2000;  //Stores the time (in millis since execution started)
unsigned long timer1 = 0;  //Stores the time when the last command was received from the phone

void setup()
{
  Serial.begin(9600);  //Set the baud rate to that of your Bluetooth module.
  pinMode(pinfrontLights , OUTPUT);
  pinMode(pinbackLights , OUTPUT);
  motorengine.setSpeed(200);
  motorsteer.setSpeed(200);
}

void loop() {
  if (Serial.available() > 0) {
    timer1 = millis();
    prevCommand = command;
    command = Serial.read();
    //Change pin mode only if new command is different from previous.
    if (command != prevCommand) {
      //Serial.println(command);
      switch (command) {
        case 'F':
          motorengine.run(FORWARD);
          break;
        case 'B':
          motorengine.run(BACKWARD);
          break;
        case 'L':
          motorsteer.run(FORWARD);
          break;
        case 'R':
          motorsteer.run(BACKWARD);
          break;
        case 'S':
          motorsteer.run(RELEASE);
          motorengine.run(RELEASE);
          break;
        case 'I':  //FR
          motorengine.run(FORWARD);
          motorsteer.run(BACKWARD);

          break;
        case 'J':  //BR
          motorengine.run(BACKWARD);
          motorsteer.run(BACKWARD);

          break;
        case 'G':  //FL
          motorengine.run(FORWARD);
          motorsteer.run(FORWARD);

          break;
        case 'H':  //BL
          motorengine.run(BACKWARD);
          motorsteer.run(FORWARD);
          break;
        case 'W':  //Font ON
          digitalWrite(pinfrontLights, HIGH);
          break;
        case 'w':  //Font OFF
          digitalWrite(pinfrontLights, LOW);
          break;
        case 'X':
          digitalWrite(pinfrontLights, HIGH);
          digitalWrite(pinbackLights, HIGH);
          break;
        case 'x':
          digitalWrite(pinfrontLights, LOW);
          digitalWrite(pinbackLights, LOW);
          break;

        case 'U':  //Back ON
          digitalWrite(pinbackLights, HIGH);
          break;
        case 'u':  //Back OFF
          digitalWrite(pinbackLights, LOW);
          break;
        case 'D':  //Everything OFF
          digitalWrite(pinfrontLights, LOW);
          digitalWrite(pinbackLights, LOW);
          motorengine.run(RELEASE);
          motorsteer.run(RELEASE);
          break;
        default:  //Get velocity
          if (command == 'q') {
            velocity = 255;  //Full velocity
            motorengine.run(RELEASE);
            motorsteer.run(RELEASE);
            motorengine.run(RELEASE);
            digitalWrite(pinfrontLights, LOW);
            digitalWrite(pinbackLights, LOW);
          }
          else {
            //Chars '0' - '9' have an integer equivalence of 48 - 57, accordingly.
            if ((command >= 48) && (command <= 57)) {
              //Subtracting 48 changes the range from 48-57 to 0-9.
              //Multiplying by 25 changes the range from 0-9 to 0-225.
              velocity = (command - 48) * 25;
              motorsteer.run(RELEASE);
              motorengine.run(RELEASE);

            }
          }
      }
    }
  }
  else {
    timer0 = millis();  //Get the current time (millis since execution started).
    //Check if it has been 500ms since we received last command.
    if ((timer0 - timer1) > 500) {
      //More tan 500ms have passed since last command received, car is out of range.
      //Therefore stop the car and turn lights off.
      digitalWrite(pinfrontLights, LOW);
      digitalWrite(pinbackLights, LOW);

    }
  }
}