domingo, 31 de março de 2019
domingo, 30 de dezembro de 2018
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, 23 de dezembro de 2018
segunda-feira, 12 de novembro de 2018
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);
}
}
}
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);
}
}
}
Assinar:
Postagens (Atom)








