Você aprenderá nesse código como programar o Bit-O para que ele realize movimentos autônomos para explorar um ambiente, evitando os obstáculos. Para isso, o Bit-O vai utilizar o seu sensor medidor de distâncias por ultrassom. Os obstáculos foram definidos com uma distância padrão de 20 centímetros e o Bit-O só executa os movimentos para frente, esquerda e direita, não há o uso do Sensor Seguidor de Linha e nem do Bluetooth neste código.

O código funciona do seguinte modo: inicialmente as bibliotecas SoftwareSerial.h e Ultrasonic.h são incluídas no código para permitir o uso da comunicação serial e do sensor ultrassônico. Obs.: Caso não tenha a biblioteca Ultrasonic.h instalado no seu computador, instale-a aqui <link>.

 

Em seguida, são definidos os pinos de conexão do sensor ultrassônico, neste caso, os pinos do Arduino 11 e 10, respectivamente, Trigger e Echo do sensor ultrassônico. Além disso, é definido um novo Sensor Ultrassônico com a pinagem citada anteriormente, por meio da variável do tipo Ultrasonic.

 

Posteriormente, os pinos de conexão do motor com o Arduino são definidos.

 

Na função void setup(), os pinos IN1IN2IN3 e IN4 definidos anteriormente são configurados como pinos de saída, utilizando a função pinMode (Pino, Entrada_ou_Saida). Além disso, é necessário iniciar a função Serial() em 9600 a taxa de transmissão (bits/s) para que seja possível ter acesso à leitura da porta Serial no Monitor Serial.

Logo depois, as variáveis globais são definidas e inicializadas.

 

 

No início da função void loop() dentro do laço for(), inicializamos a  variável tempo_ms para que todas as vezes que a função for() rodar, a contagem de tempo seja reiniciada, adquirindo um novo valor de distância, lido pelo sensor Ultrassônico, e somando-o com o valor da variável media.

 

Ao fim do laço for() a variável distancia_em_cm recebe o valor acumulado das três medições feitas e é calculada a média desses três  valores e atribuído à variável media.

 

Caso a média dos valores lidos seja maior que 200cm, media recebe o valor 200, sendo esse o limite de distância atribuído nesse código, para evitar erros de leitura.

 

Logo, por meio da função digitalWrite(Pino, Estado)  enviamos o comando de ir para frente do robô, neste caso IN1 e IN3 recebem HIGH e IN2 e IN4 recebem LOW.

 

Obs.: Caso seu Bit-O não vá para frente modifique o valor de IN1 pelo valor de IN2. Caso, o problema persista, volte para a configuração inicial de pinagem e mude apenas o IN3 pelo valor de IN4. Dessa forma:

 

Em seguida, após o comando de ir para frente do Bit-O, é conferido se a média dos valores lidos são menores que 20 cm, caso seja verdade é chamada a função melhor_lado().

 

 

A função melhor_lado() primeiro define as variáveis locais que vão ser utilizadas no código, inicializando as variáveis tempo_ms1 e tempo_ms2 com sendo medições de tempo diferentes.

 

 

Por conseguinte, manda um comando para o Bit-O ir para trás durante 500ms, gira-o para direita durante 350ms, e faz duas medições de distância.

Em seguida, gira durante 700ms para esquerda, faz duas medições de distância, calcula a média dessas medições para cada um dos lados e faz uma comparação entre as duas médias de valores de distância lidos que é feito todas as vezes em que são encontrados obstáculos.

Por fim, os valores da média esquerda e direita são comparados, o valor que for maior definirá a nova direção do Bit-O.

 

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Nome *