CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Classifique este tópicoPéssimoRuimMedianoBomÓtimo
Ir para página Anterior  1 2 3
Autor
Mensagem
3
psgvaz

Level 0
222093 xp

Registrado em:
15/03/2009





Mensagens:
5
3
psgvaz

Responder com citações
Mensagem Sab Mai 07, 2016 9:37 pm
Ps2 controle + Arduino
Pessoal, descobri o problema, mudei de controle e resolvei tudo.
3
jwr

Level 0
226109 xp

Registrado em:
19/03/2013





Mensagens:
4
3
jwr

Responder com citações
Mensagem Seg Mai 23, 2016 3:11 pm
Ps2 controle + Arduino
Pessoal Boa tarde!
Eu consigo adaptar esse programaterial para controle de uma cadeira de rodas?
Com 2 dc.
Pois o programa que fiz o  Arduino não está aceitando a soma de pwm.
Então não consigo fazer as curvas corretamente.
3
psgvaz

Level 0
222093 xp

Registrado em:
15/03/2009





Mensagens:
5
3
psgvaz

Responder com citações
Mensagem Seg Mai 23, 2016 3:49 pm
Ps2 controle + Arduino
Olá, descreva melhor o problema e o que vc quer fazer, poste o código que ficará mais fácil responder
3
luizcarlosnery

Level 0
0 xp

Registrado em:
25/09/2016





Mensagens:
1
3
luizcarlosnery

Responder com citações
Mensagem Dom Set 25, 2016 6:34 pm
Ps2 controle + Arduino
Ola Pessoal,
Meu nome é Luiz Carlos, sou novo no forum e cheguei aqui por meio de pesquisa no google, não sei se este tópico ja esta morto mas em todo caso... 

Estou trabalhando numa replica do BB8 (Droid do star wars) utilizei o basico pra fazer o moviment, com dois motores, um bluetooth e  um UNO pro mini, ate que tudo estava indo bem, mas nos testes práticos, o droid que é basicamente uma bola, fica balançando feito um Joao bobão rsrsr e o movimento nao é nada preciso... Dai pensei... se eu usar um MPU6050 para ele fazer o auto balanço e um controle de PS2 ?

E sendo assim encontrei vcs... rsrsr

Agora o que preciso, colocar o controle PS2 no codigo que ja tenho com auto equilibrio...

vcs podem ajudar ?

segue o codigo que estou querendo usar como teste...

#include <PID_v1.h>
#include <LMotorController.h>
#include "I2Cdev.h"

#include "MPU6050_6Axis_MotionApps20.h"

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
    #include "Wire.h"
#endif


#define LOG_INPUT 0
#define MANUAL_TUNING 0
#define LOG_PID_CONSTANTS 0 //MANUAL_TUNING must be 1
#define MOVE_BACK_FORTH 0

#define MIN_ABS_SPEED 30

//MPU


MPU6050 mpu;

// MPU control/status vars
bool dmpReady = false;  // set true if DMP init was successful
uint8_t mpuIntStatus;   // holds actual interrupt status byte from MPU
uint8_t devStatus;      // return status after each device operation (0 = success, !0 = error)
uint16_t packetSize;    // expected DMP packet size (default is 42 bytes)
uint16_t fifoCount;     // count of all bytes currently in FIFO
uint8_t fifoBuffer[64]; // FIFO storage buffer

// orientation/motion vars
Quaternion q;           // [w, x, y, z]         quaternion container
VectorFloat gravity;    // [x, y, z]            gravity vector
float ypr[3];           // [yaw, pitch, roll]   yaw/pitch/roll container and gravity vector


//PID


#if MANUAL_TUNING
  double kp , ki, kd;
  double prevKp, prevKi, prevKd;
#endif
double originalSetpoint = 174.29;
double setpoint = originalSetpoint;
double movingAngleOffset = 0.3;
double input, output;
int moveState=0; //0 = balance; 1 = back; 2 = forth

#if MANUAL_TUNING
  PID pid(&input, &output, &setpoint, 0, 0, 0, DIRECT);
#else
  PID pid(&input, &output, &setpoint, 70, 240, 1.9, DIRECT);
#endif


//MOTOR CONTROLLER


int ENA = 3;
int IN1 = 4;
int IN2 = 8;
int IN3 = 5;
int IN4 = 7;
int ENB = 6;


LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4, 0.6, 1);


//timers


long time1Hz = 0;
long time5Hz = 0;


volatile bool mpuInterrupt = false;     // indicates whether MPU interrupt pin has gone high
void dmpDataReady()
{
    mpuInterrupt = true;
}


void setup()
{
    // join I2C bus (I2Cdev library doesn't do this automatically)
    #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
        Wire.begin();
        TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)
    #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
        Fastwire::setup(400, true);
    #endif

    // initialize serial communication
    // (115200 chosen because it is required for Teapot Demo output, but it's
    // really up to you depending on your project)
    Serial.begin(115200);
    while (!Serial); // wait for Leonardo enumeration, others continue immediately

    // initialize device
    Serial.println(F("Initializing I2C devices..."));
    mpu.initialize();

    // verify connection
    Serial.println(F("Testing device connections..."));
    Serial.println(mpu.testConnection() ? F("MPU6050 connection successful") : F("MPU6050 connection failed"));

    // load and configure the DMP
    Serial.println(F("Initializing DMP..."));
    devStatus = mpu.dmpInitialize();

    // supply your own gyro offsets here, scaled for min sensitivity
    mpu.setXGyroOffset(220);
    mpu.setYGyroOffset(76);
    mpu.setZGyroOffset(-85);
    mpu.setZAccelOffset(1788); // 1688 factory default for my test chip

    // make sure it worked (returns 0 if so)
    if (devStatus == 0)
    {
        // turn on the DMP, now that it's ready
        Serial.println(F("Enabling DMP..."));
        mpu.setDMPEnabled(true);

        // enable Arduino interrupt detection
        Serial.println(F("Enabling interrupt detection (Arduino external interrupt 0)..."));
        attachInterrupt(0, dmpDataReady, RISING);
        mpuIntStatus = mpu.getIntStatus();

        // set our DMP Ready flag so the main loop() function knows it's okay to use it
        Serial.println(F("DMP ready! Waiting for first interrupt..."));
        dmpReady = true;

        // get expected DMP packet size for later comparison
        packetSize = mpu.dmpGetFIFOPacketSize();
        
        //setup PID
        
        pid.SetMode(AUTOMATIC);
        pid.SetSampleTime(10);
        pid.SetOutputLimits(-255, 255);  
    }
    else
    {
        // ERROR!
        // 1 = initial memory load failed
        // 2 = DMP configuration updates failed
        // (if it's going to break, usually the code will be 1)
        Serial.print(F("DMP Initialization failed (code "));
        Serial.print(devStatus);
        Serial.println(F(")"));
    }
}


void loop()
{
    // if programming failed, don't try to do anything
    if (!dmpReady) return;

    // wait for MPU interrupt or extra packet(s) available
    while (!mpuInterrupt && fifoCount < packetSize)
    {
        //no mpu data - performing PID calculations and output to motors
        
        pid.Compute();
        motorController.move(output, MIN_ABS_SPEED);
        
        unsigned long currentMillis = millis();

        if (currentMillis - time1Hz >= 1000)
        {
            loopAt1Hz();
            time1Hz = currentMillis;
        }
        
        if (currentMillis - time5Hz >= 5000)
        {
            loopAt5Hz();
            time5Hz = currentMillis;
        }
    }

    // reset interrupt flag and get INT_STATUS byte
    mpuInterrupt = false;
    mpuIntStatus = mpu.getIntStatus();

    // get current FIFO count
    fifoCount = mpu.getFIFOCount();

    // check for overflow (this should never happen unless our code is too inefficient)
    if ((mpuIntStatus & 0x10) || fifoCount == 1024)
    {
        // reset so we can continue cleanly
        mpu.resetFIFO();
        Serial.println(F("FIFO overflow!"));

    // otherwise, check for DMP data ready interrupt (this should happen frequently)
    }
    else if (mpuIntStatus & 0x02)
    {
        // wait for correct available data length, should be a VERY short wait
        while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();

        // read a packet from FIFO
        mpu.getFIFOBytes(fifoBuffer, packetSize);
        
        // track FIFO count here in case there is > 1 packet available
        // (this lets us immediately read more without waiting for an interrupt)
        fifoCount -= packetSize;

        mpu.dmpGetQuaternion(&q, fifoBuffer);
        mpu.dmpGetGravity(&gravity, &q);
        mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
        #if LOG_INPUT
            Serial.print("ypr\t");
            Serial.print(ypr[0] * 180/M_PI);
            Serial.print("\t");
            Serial.print(ypr[1] * 180/M_PI);
            Serial.print("\t");
            Serial.println(ypr[2] * 180/M_PI);
        #endif
        input = ypr[1] * 180/M_PI + 180;
   }
}


void loopAt1Hz()
{
#if MANUAL_TUNING
    setPIDTuningValues();
#endif
}


void loopAt5Hz()
{
    #if MOVE_BACK_FORTH
        moveBackForth();
    #endif
}


//move back and forth


void moveBackForth()
{
    moveState++;
    if (moveState > 2) moveState = 0;
    
    if (moveState == 0)
      setpoint = originalSetpoint;
    else if (moveState == 1)
      setpoint = originalSetpoint - movingAngleOffset;
    else
      setpoint = originalSetpoint + movingAngleOffset;
}


//PID Tuning (3 potentiometers)

#if MANUAL_TUNING
void setPIDTuningValues()
{
    readPIDTuningValues();
    
    if (kp != prevKp || ki != prevKi || kd != prevKd)
    {
#if LOG_PID_CONSTANTS
        Serial.print(kp);Serial.print(", ");Serial.print(ki);Serial.print(", ");Serial.println(kd);
#endif

        pid.SetTunings(kp, ki, kd);
        prevKp = kp; prevKi = ki; prevKd = kd;
    }
}


void readPIDTuningValues()
{
    int potKp = analogRead(A0);
    int potKi = analogRead(A1);
    int potKd = analogRead(A2);
        
    kp = map(potKp, 0, 1023, 0, 25000) / 100.0; //0 - 250
    ki = map(potKi, 0, 1023, 0, 100000) / 100.0; //0 - 1000
    kd = map(potKd, 0, 1023, 0, 500) / 100.0; //0 - 5
}
#endif



Desde já agradeço a todos !!!
3
italloaurelio1

Level 0
0 xp

Registrado em:
07/05/2017





Mensagens:
1
3
italloaurelio1

Responder com citações
Mensagem Dom Mai 07, 2017 12:53 pm
Ps2 controle + Arduino
Olá sou novo no ramo de Arduino tenho um projeto de converter um carro de controle para ser controlado por Arduino e um controle de ps2 .
Tenho uma ponte h l9110,  Arduino nano v 3.0, controle de ps2 sem fio com receptor bateria 9v recarregável.
Gostaria de uma ajuda com o código preciso de um código para controlar o carro frente e trás no analógico esquerdo e a direção no analógico direito não vou usar servo vou usar o próprio motor .
Preciso também que o botão X acenda o farol .

Obrigado
3
marcosfrank

Level 0
-20000 xp

Registrado em:
30/03/2017





Mensagens:
1
3
marcosfrank

Responder com citações
Mensagem Sab Mai 27, 2017 4:15 pm
Ps2 controle + Arduino
BOA TARDE ALGUÉM PODER ME AJUDAR ESTOU COM UM PROJETO E QUERIA USAR O CONTROLE PLZY2 PARA CONTROLA E NAO SEI POR ONDE COMEÇA A PROGAMAÇAO VOU TE QUE CONTROLAR 6 MOTORES
3
pauloitobi2

Level 0
143194 xp

Registrado em:
26/05/2018





Mensagens:
3
3
pauloitobi2

Responder com citações
Mensagem Sab Jun 02, 2018 8:27 pm
Ps2 controle + Arduino
Olá amigos eu tô fazendo uma escavadeira hidráulica de palitos de madeira e eu queria saber se alguém de vocês possa me ajudar com um código pois não consigo criar ela tem 4 servos controlados  pelos 2 joystick ..dois motor DC que e a esteira controlados pelo r1 r2 L1 L2  tenho um Arduino uno, controle de ps3 sem fio, Ponte h ,usb host shield(se der certo senão pode ser sem ela) ,agradeço qualquer dúvida e se vocês quiserem ver as fotos do projeto chama no Whatsapp 019982277988 ou facebook Paulo  ricardo arofo
3
f.gabriel.fantin

Level 0
144654 xp

Registrado em:
02/11/2019





Mensagens:
3
3
f.gabriel.fantin

Responder com citações
Mensagem Sab Nov 02, 2019 1:56 am
Ps2 controle + Arduino
BeatSlayer Escreveu:
Segue o básico, ele apenas vai andar para a frente e para trás consoante o analógico esquerdo, mas agora fica fácil implementares o resto. Código:
Carrinho de controle remoto/controle Ps2 sem fio Meu nome é Gabriel. estou com um projeto referente ao curso de mecatronica que faço. o projeto é um carrinho de controle remoto, neste projeto haverá uma competição de velocidade e controle do carrinho. o carrinho deve executar as seguintes funções: -acender faróis dianteiros; -acender faróis traseiros; -ligar pisca alerta; -andar para frente e para trás; - virar para lado direito e esquerdo; estou com dificuldade de criar a programação para executar estas funções, nunca tive a oportunidade de programar utilizando um controle de PS2, está é minha primeira vez. consegui programar um servo motor utilizando o analógico esquerdo. este servo motor dará direcionamento ao carrinho. esta foi a programação que eu utilizei. .include <Servo.h> #include <PS2X_lib.h> Servo servo1; Servo servo1; PS2X ps2x; int pos1 = 100; int pos1Min = 180; int pos1Max = 0; int error = 0; byte type = 0; byte vibrate = 0; void setup() { servo1.attach(3); servo1.write(pos1); servo2.attach(5 ); servo2.write(pos1); Serial.begin(57600); error = ps2x.config_gamepad(13,11,10,12, true, true); if(error == 0){ Serial.println("Achei controle, configurado com sucesso!"); } else if(error == 1) { Serial.println("Controle não encontrado! Verifique as conexões!"); } else if(error == 2) { Serial.println("Controle encontrado mas não aceita comandos!"); } else if(error == 3) { Serial.println("Controle recusando entrar no modo de pressão, talvez não seja suportado. "); } type = ps2x.readType(); switch(type) { case 0: Serial.println("Tipo de controle desconhecido"); break; case 1: Serial.println("Controle DualShock encontrado!"); break; case 2: Serial.println("Controle de GuitarHero encontrado"); break; } } void loop() { ps2x.read_gamepad(false, vibrate); pos1 = map(ps2x.Analog(PSS_LX), 0, 255, pos1Min, pos1Max); servo1.write(pos1); delay(50); agora preciso apenas programar os leds nos botoes; X: Ligar farol dianteiro; O:Ligar farol traseiro; Triangulo:ligar pisca alerta Quem poder ajudar ficarei muito grato
Mostrar mensagens desde a última:
Ir para página Anterior  1 2 3




Ir para:  
Todos os horários são GMT - 3 HorasVocê não tem permissão para escrever novas mensagens
v não tem permissão para responder às mensagens
Você não tem permissão para editar suas mensagens
Você não tem permissão para deletar suas mensagens
Você não tem permissão para classificar tópicos
Você não tem permissão para classificar mensagens
Você não tem permissão para votar em enquetes
Anexar downloads : Proibido
Fazer Download de Arquivos: Proibido
Powered by phpBB © 2001 phpBB Group