Na etapa do dia 26 de setembro de 2012 da construção do “Robô Aspirador” foi idealizada a preparação de um protótipo com objetivo de observar o funcionamento dos sensores infravermelhos. Deste modo será possível identificar previamente os possíveis erros que podem aparecer no projeto final e mais rapidamente estes problemas serem solucionados.
Como a aplicação dos sensores infravermelhos no robô se deve à fatos de alinhamento do mesmo no caminho de aspiração da sala (evitando assim que áreas deixem de ser aspiradas), o protótipo não necessitava de grande complexidade, nem de tamanho e forma idênticos ao aspirador. Foi então cortado um quadrado do mesmo material da construção do robô e os servo-motores hackeados, que já estavam previamente acoplados às duas rodas do robô (atividade realizada no encontro anterior), foram agora encaixados no quadrado serrado.
Para a introdução dos sensores infravermelhos no protótipo foi necessário o uso da furadeira de bancada para a realização de um furo destinado à aplicação de um parafuso (bem pequeno). Após o furo foi necessário fazer o enroscamento do mesmo, de modo que fosse possível a entrada do parafuso e a sua eficácia. Esse enroscamento foi feito posicionando o parafuso no furo em que ele iria ser encaixado e girando-o, de modo que as “curvinhas” do parafuso fossem moldadas no buraco.
Após o preparo do protótipo seguimos para a parte da programação do sensor infravermelho possibilitando-o realizar o devido alinhamento do protótipo, foi a etapa em que encontramos o primeiro problema. Conectamos os sensores infravermelhos ao Arduíno, mas por serem dois sensores não haviam entradas suficientes, foi então necessário o auxílio de uma protoboard pequena.
Na interface Arduíno baseando-se em alguns exemplos já presentes no programa e em informações que pesquisamos montamos a programação inicial. Houve a verificação de erros por parte do programa e não houve identificação. Porém, quando o grupo passou essa informação para o sensor, e aproximávamos um objeto dele nenhuma alteração era identificada, independentemente de um objeto estar rente ao sensor, ou nenhum obstáculo estivesse à sua frente, em ambas as situações o número indicado pelo serial monitor era zero. Ao identificar esse problema fomos em busca do modelo do infravermelho que estávamos utilizando para pesquisar informações sobre a programação deste, atividade que nos foi deixada para que pudéssemos solucionar o problema encontrado.
No encontro posterior, no dia 3 de outubro, resolvemos testar o sensor infravermelho na porta analógica em vez da digital - atividade que foi feita na aula passada onde acabamos encontrando problemas na execução -. Primeiramente, foi elaborado o seguinte código na IDE do arduíno:
int infra1; // declarando a variavel infra1
int infra2; // declarando a variavel infra 2
void setup() { // funçao que so sera realizada uma vez
Serial.begin (9600);
}
void loop () { // funçao que sera realizada repetidamente ate o desligamento do arduino
infra1 = analogRead (4); // declarando que a variavel 'infra1' equivale a leitura da porta analogica 4
infra2 = analogRead (5);
Serial.println ("infra1;" + infra1); // exibir no serial monitor a variavel anteriormente declarada e a palavra 'infra1'
Serial.println ("infra2;" + infra2);
}
Houve verificação de erros e não foi identificado nenhum. Porém quando o código foi passado para a placa o serial monitor não funcionava da maneira que esperávamos.
Descobrimos então que o erro estava na parte final do código:
"Serial.println ("infra1;" + infra1); // exibir no serial monitor a variavel anteriormente declarada e a palavra 'infra1'
Serial.println ("infra2;" + infra2);"
Por motivo ainda desconhecido pelo grupo, para que acha a execução correta do valor lido pela porta analógica e a palavra "infra1" para que possamos identificar no serial monitor que valor se refere à qual sensor infravermelho, dentro dos parênteses aquele "+" não funcionaria. Foi então feita uma alteração:
"Serial.println("Infravermelho 1:"); // printar 'sensor infravermelho 1'
Serial.println(infra1); // printar o valor de infra 1 ja declarado
Serial.println("Infravermelho 2:");
Serial.println(infra2); "
Passamos o código para a placa e testando de diversas maneiras (colocando objetos escuros e claros) o funcionamento dos sensores infravermelhos, tudo ocorreu bem.
Tão bem, que pudemos perceber que esse sensor não era o ideal para o próposito do alinhamento do robô, uma vez que este modelo identifica as cores da mesma maneira, independentemente da distância. Apostamos agora no sonar, nosso próximo teste com o protótipo construído.
Ou