estou fazendo um robô seguidor de linha para uma competição na faculdade, a parte fisica ta pronta, um arduino, com dois sensores para verificar a faixa branca da pista, e outro para verificar o ponto de largada e chegada, estou com problema mesmo é no código
fiz um aqui mais ele não esta seguindo corretamente, ele sai da pista facil, alguem poderia ajudar? e queria introduzir pwm nesse código:
const int PinoSensor1= 0;
const int PinoSensor2= 1;
const int PinoSensor3= 2;
const int Motor1 = 3;
const int Motor2 = 5;
int ValorSensor1 = 0;
int ValorSensor2 = 0;
int ValorSensor3 = 0;
void setup (){
pinMode(PinoSensor1, INPUT);
pinMode(PinoSensor2, INPUT);
pinMode(PinoSensor3, INPUT);
pinMode(Motor1, OUTPUT);
pinMode(Motor2,OUTPUT);
}
void loop(){
ValorSensor1 = analogRead(PinoSensor1);
ValorSensor2 = analogRead(PinoSensor2);
ValorSensor3 = analogRead(PinoSensor3);
if (ValorSensor1 >=750){
digitalWrite(Motor1,LOW);
}
else{
digitalWrite(Motor1,HIGH);
}
if (ValorSensor2 >=750){
digitalWrite(Motor2,LOW);
}
else {
digitalWrite(Motor2,HIGH);
}
if (ValorSensor3 <= 750){
digitalWrite(Motor1,LOW);
digitalWrite(Motor2,LOW);
delay(2100);
}
else {
}
}
intaum queria introduzir pwm e fazer com que funcione, porque o robozinho tende a sair fora da pista, queria que inves de desligar os motores quando der a condição ele coloca-se 50% da velocidade só
Eu não vi os motores, ou o robot... mas parece-me que primeiro devias ter-te preocupado em controlar a velocidade dos motores e só depois fazê-lo seguir uma pista. Estás a fazer o projecto sem bases...
Como ligaste o hardware? Tens um controlador de potência para os motores? Um relé? Um transistor?
Se vires a documentacão do Arduino, tem lá como gerar PWM creio que é analogOutput() ou algo semelhante. Certamente que o que acontece é que o carro está a andar muito depressa para o código que tens. Além de que o teu código não tem como procurar a pista no caso de sair fora dela.
De resto, já verificaste os valores que o sensor dá quando "vê" a pista? Isto é um ponto óbvio para o programa falhar (e eu falo por experiência).
Quanto ao código, em vez de usares o analogInput para veres o sensor, tenta fazer isso com hardware a ligar/desligar um pino de entrada para saberes onde está o carro.
Para te dar um pouco mais de ajuda, como tens os sensores no carro? O que faz o sensor1, 2 e 3?
os motores tem 330 rpm cada um, eles estão bem rapidos, a parte de potencia, estou usando transistors, estaum bem dimensionados, estou usando acoplador optico para isolar do microcontrolador o 4n25, sou meio novato na area de programação, ainda mais a de um seguidor de linha que necessita de uma programação boa, o sensor 1 e 2, são os que ficam dentro da pista branca, são sensores infravermelho analogicos, feitos para seguidor de linha mesmo, o sensor 3 é para detectar a linha de largada e partida, o meu intuito, não é fazer um robô que ganhe a competição e sim conseguir fazer ele realizar o trajeto sem problemas, mais mesmo isso esta dificil, o programa esta muito fraco, naum esta respondendo direito, os motores estão muito rapidos, e ele não esta parando na pista, por isso queria colocar o PWM para diminuir a rotação deles, para ver se o robo realizaria o circuito
330rpms??? putz, c vc tiver a essa rotação mesmo que os sensores acusem que o robo esta fora da linha, provavelmente, a inercia vai mandar ele para fora.
Vc vai ter de ir ajustando a velocidade e a programação aos poucos e ver o melhor posicionamento dos seus sensores, tecnicamente a programação e bem simples...
Poste detalhes do seu projeto, e se possivel videos para analizarmos..
att,
E depois liga um motor a um pino marcado como PWM e experimenta essa função a enviar um valor de PWM entre 0 e 255 para veres a reacção do motor.
É provável que necessites de arranjar um transistor que comute mais rápido (FET???) para controlar o motor, ou então em vez de usar esta função, ler como usar o PWM via registos do Arduino para poderes alterar a frequência usada por essa função.
Mete aqui mais detalhes e se quiseres, eu meto um exemplo para alterar frequências de PWM nos pinos.
Obrigado a todos que colaboraram no tópico, consegui melhorar o código, introduzi o PWM , diminui a velocidade, ele fez o percurso inteiro, não esta perfeito ainda mais ta utilizavel, não estou em casa, estou no serviço, a tarde coloco o código aqui para quem quiser ver e copiar, é só colocar a autoria =]. a parte eletronica eu vou criar um diagrama aqui e até o final de semana eu coloco aqui tbm