Olá a todos,
Estou realizando um projeto de carrinho de controle remoto para a faculdade.
O projeto consiste em:
Controle remoto:
1 Módulo Bluetooth para enviar as informações para o carrinho.
2 Joysticks para enviar sinais para o Arduino
Carrinho:
1 módulo Bluetooth para receber as informações do controle;
1 servo motor - para realizar o movimento de direção do carrinho
1 Ponte H - Para receber os sinais do Bluetooth e passar para os motores.
2 Motores - Recebem os sinais da ponte H e coloca o carrinho em movimento.
Meu problema está na programação.
Eu consigo fazer com que o servo se mova conforme eu desejo, porém, ao tentar configurar o movimento do motor, eu não tenho sucesso.
Quando eu tento enviar sinais para o meu motor, ele simplesmente se mistura com os sinais do meu servo, e acaba o servo e o motor sendo controlados pelos 2 Joysticks, em vez de cada Joystick controlar seu devido componente.
Segue abaixo minha programação.
Voltei ela para a estaca zero.
Nesse momento eu consigo controlar normalmente o Servo motor.
Só preciso de ajuda para elaborar a programação para controlar os motores.
Observação: As ligações estão corretas e a comunicação está perfeita, sem delay nenhum.
Meu unico problema é gerar os códigos para movimentar os motores, sem afetar o movimento do servo.
Preciso muito de ajuda, esse projeto é para segunda-feira 13/05 e estou sem saída...
Código Mestre:
int state = 0;
int potValue = 0;
int pot2Value = 0;
void setup() {
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
}
// Reading the potentiometer
potValue = analogRead(A0);
int potValueMapped = map(potValue, 0, 1023, 0, 255);
Serial.write(potValueMapped); // Sends potValue to servo motor
delay(10);
// Reading the potentiometer 2
pot2Value = analogRead(A1);
Serial.write("{");
Serial.write(pot2Value);
Serial.write("}");
delay(10);
}
Código Escravo:
#include <Servo.h>
Servo myServo;
int motorA = 5; // velocidade motor A - de 0 a 255
int motorB = 6; // velocidade motor B - de 0 a 255
int dirA = 7; // direcao do motor A - HIGH ou LOW
int dirB = 8; // direcao do motor B - HIGH ou LOW
int state = 20;
int pot2Value = 0;
boolean flag_pot2 = false;
void setup() {
pinMode(motorA, OUTPUT);
pinMode(motorB, OUTPUT);
pinMode(dirA, OUTPUT);
pinMode(dirB, OUTPUT);
myServo.attach(9);
Serial.begin(38400); // Default communication rate of the Bluetooth module
}
void loop() {
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
state = Serial.read(); // Reads the data from the serial port
if(state == "{")
{
flag_pot2 = true;
}
if(flag_pot2 && state != "{")
{
analog2Value = state;
}
else
{
flag_pot2 = false;
}
//Limpa Buffer
state = " ";
}
// Controlling the servo motor
myServo.write(state);
delay(10);
if(pot2Value < 512) {
//Reverso
int velocidade = map(pot2Value, 511, 0, 0, 255);
digitalWrite(dirA, LOW); // SENTIDO DE ROTACAO
digitalWrite(dirB, LOW);
analogWrite(motorA, velocidade); // VELOCIDADE
analogWrite(motorB, velocidade);
} else {
//Frente
int velocidade = map(pot2Value, 512, 1023, 0, 255);
digitalWrite(dirA, HIGH); // SENTIDO DE ROTACAO
digitalWrite(dirB, HIGH);
analogWrite(motorA, velocidade); // VELOCIDADE
analogWrite(motorB, velocidade);
}
}
Por favor,preciso muito de ajuda para resolver isso...
Escravo.ino (1.46 KB)
Mestre.ino (655 Bytes)