montado! - Conhecendo o robô e suas peças - Programando o Romeo - Lendo sensores - Controlando motores - Juntando tudo! - Condições - A lógica do seguidor de linha - Competição! agenda
de 2 motores DC independentes - 5 botões de uso geral - Pinagem em padrão três vias - Alimentação independente para servos - Soquete para módulo XBee Algumas dicas de funcionamento:
computador - Aguardar o driver ser instalado - Abrir o programa do Arduino - Selecionar a placa Arduino Leonardo em Tools > Board - Selecionar a porta COM correta em Tools > Serial Port - Passar o example BLINK para o Romeo, que pode ser encontrado em File > Examples > 01.Basics > Blink - Dúvidas? Programando o Romeo
Romeo através dos cabos jumper! - Um deles está no pino A1 e o outro no pino A2 - Escreva um código que faça a leitura dos sensores e mostre no monitor serial os valores. (para ver diferença nos valores, use a folha branca com um pedaço de fita isolante que está dentro da caixa com os materiais) Lendo os Sensores
pino “informa” o sentido de rotação - O outro pino “informa” a velocidade do motor Controlando Motores Motor 1: Sentido: Pino D4 Velocidade: Pino D5~ Motor 2: Sentido: Pino D7 Velocidade: Pino D6~ ~ ao lado do número do pino significa que são pinos com PWM, ou seja, saídas “analógicas”
termo. - Saída “Analógica” (PWM): Liga e desliga o pino de forma muito rápida, imperceptível, assim dá o efeito que a tensão está variando (“tensão analógica”) Controlando Motores
sentido de rotação: digitalWrite(M1, LOW) ou digitalWrite(M1, HIGH) Para controle da velocidade de rotação: analogWrite(E1, número de 0 a 255) onde 0 é parado, e 255 é a velocidade máxima!
dentro do Romeo; - Sabemos como andar pra frente, pra trás, parar e fazer curvas com nosso robô; - O que falta pra fazermos o robô seguir a linha? Resposta: Ler os dados dos sensores e fazer condições para cada leitura! Juntando tudo!
o próximo tópico; se não continuamos neste assunto. isso é similar a: Condições if (vocês já souberem sobre esse assunto) { pulamos para o próximo tópico; } else continuamos neste assunto;
partir de um determinado valor: Condições if(valorSensor1 > 900){ digitalWrite(M1, LOW); analogWrite(E1, 200); } Este código faz com que, quando o valor do sensor 1 for MAIOR que 900: o motor 1 vira em um determinado sentido de rotação, e seu eixo roda com velocidade de “200”.
anda pra frente; - Se um sensor estiver sobre a linha e o outro não: robô corrige a rota; A lógica do seguidor de linha Objetivo geral: Manter os dois sensores sobre a linha!
a linha - Sensor 1 sobre a linha e sensor 2 fora - Sensor 2 sobre a linha e sensor 1 fora Não iremos considerar os 2 fora da linha, mas poderia ser considerado. A lógica do seguidor de linha
sensor saindo à direita: o que fazer: corrigir para a esquerda! if((valorSensor1 > 900) && (valorSensor2 < 900)){ digitalWrite(M1, LOW); analogWrite(E1, 200); digitalWrite(M2, HIGH); analogWrite(E2, 200); } A lógica do seguidor de linha
sensor saindo à esquerda: o que fazer: corrigir para a direita! if((valorSensor1 < 900) && (valorSensor2 > 900)){ digitalWrite(M1, HIGH); analogWrite(E1, 200); digitalWrite(M2, LOW); analogWrite(E2, 200); } A lógica do seguidor de linha
robô! A se pensar: - a posição atual dos sensores é a melhor? - seria interessante considerar os 2 sensores fora da linha? - o funcionamento do robô muda com as pilhas descarregando? Agora é com vocês!