Transmitir PWM e receber dados de sensores entre dois arduinos

Bom dia! Sou novato em programação com Arduino e estou tendo dificuldades com meu projeto de TCC.

Estou construindo um ROV onde os motores serão controlados por joysticks por um Arduíno UNO e este irá receber dados de sensores do ROV que terá um Arduíno MEGA. A comunicação será através da porta serial e é com essa comunicação que estou tendo dificuldades.

Até o momento consegui fazer o controle de apenas um motor e não estou conseguindo controlar os demais. Um amigo que tem um conhecimento básico me disse que poderia fazer usando um array, assim escrevi a programação do transmissor mas não consegui nada além disso.

Se alguém puder me ajudar com esse problema, agradeço desde já.

Abaixo está a programação do transmissor e do receptor, respectivamente e em terceiro a provável programação de um array do transmissor.

--------------------------------------------------------------------------------

// transmissor

int joystick_1_y;

void setup() {
  Serial.begin(19200); // habilita comunicção serial
}

void loop() {

  // leitura joystick movimentação frente/trás
  joystick_1_y = (analogRead(A0) / 4);  // lê o pino analógico A0 e mapeia os valores para 0 - 255
  Serial.write(joystick_1_y);  // envia o valor via serial em modo binário  
}


--------------------------------------------------------------------------------
// receptor

int mov_frontal = 2;
int mov_reverso = 3;
int j_1 = 0;
int val_1;
byte inc_1;

void setup() {
  Serial.begin(19200);  // habilita comunicação serial
  pinMode(mov_frontal, OUTPUT);  // declara o pino 2 como saída
  pinMode(mov_reverso, OUTPUT);  // declara o pino 3 como saída
  Serial.flush();  // limpa o buffer
}

void loop() {
  if(Serial.available()) {  // se há bits vindo da porta serial
    inc_1 = Serial.read();  // seta o valor para a variável val_1
    val_1 = map(inc_1, 0, 255, 0, 1023);
    j_1 = val_1 - 512;
    j_1 = abs(j_1);
  }
  if(j_1 >= 510) {
    j_1 = 510;
  }
  if(j_1 <= 200 && j_1 > 20) {
    j_1 = 200;
  }
  if(j_1 <= 20) {
    j_1 = 0;
  }

  if(val_1 > 500) {
    analogWrite(mov_frontal, j_1/6);
    analogWrite(mov_reverso, j_1/2);
  }
  if(val_1 < 500) {
    analogWrite(mov_frontal, j_1/2);
    analogWrite(mov_reverso, j_1/6);
  }
  if(val_1 <= 520 && val_1 >= 510) {
    analogWrite(mov_frontal, 0);
  }
}


--------------------------------------------------------------------------------
// transmissor com Array

int joystick_1_y;
int joystick_1_x;

int myArray[2];
unsigned int frente_tras;
unsigned int rotacao;

void setup() {
  Serial.begin(19200); // habilita comunicção serial
}

void loop() {
  joy_1_y();
  myArray[0] = frente_tras;
  joy_1_x();
  myArray[1] = rotacao;
  for(unsigned int i = 0; i < 1; i++) {
    Serial.write(myArray[i]);
  }
}

int joy_1_y() {
  // leitura joystick movimentação frente/trás
  joystick_1_y = (analogRead(A0) / 4);  // lê o pino analógico A0 e mapeia os valores para 0 - 255
  Serial.write(joystick_1_y);  // envia o valor via serial em modo binário  
}

int joy_1_x() {
  // brilho da luz
  joystick_1_x = (analogRead(A1)) / 4;  // lê o pino analógico A1 e mapeia os valores para 0 - 255
  Serial.println(joystick_1_x);  // envia o valor via serial em modo binário
}

Exibições: 410

Responder esta

Respostas a este tópico

Sr HM, bom dia,

Gostaria de ajudar, mas para facilitar, que tal postar um desenho doa seu projeto.

Rui

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço