Pplware

Arduino – O Comboio Lego Inteligente

Muito já foi escrito sobre as funcionalidades que o Arduino pode ter. Ao ler os artigos aqui publicados surgiu a ideia de criar este projecto. Colocar um comboio LEGO® a ser controlado por um Arduino, um trabalho desenvolvido pelo Tiago Santos do GroundZero Blog.

As várias etapas estão agora disponíveis para que possam replicar e até melhorar.

Já agora, ainda não tem um Arduino? Veja o nosso Kit.

Existem mil e um projectos que podem ser suportados com a plataforma Arduino, todos os dias aparecem novas ideias e hoje vamos deixar aqui, passo a passo, um projecto que, acima de tudo, proporcionou bons momentos de aprendizagem.

 

Arduino – O Comboio Lego Inteligente

O percurso do comboio é constituído por uma linha externa e uma linha interna com uma ligação entre as duas. O objectivo geral é o comboio realizar o percurso exterior uma vez e o interior duas.

Os objectivos específicos são:

 

 

Material utilizado:

Para controlar o comboio na estação foi necessário usar dois LEDs de IR. Pelo alcance e ângulo deles, um controla a entrada do comboio na estação e o outro a saída. Para controlar a posição do comboio foram usados dois sensores de obstáculos. Um controla o número de voltas na linha interior, o outro controla a chegada à estação.

Uma das dificuldades encontrada foi o controlo do comboio, mas foi solucionada com o código disponibilizado pela LEGO® que permite interagir com as Power Functions, código disponível em aqui.

Aqui encontramos 4 funções para comunicar com o comboio “Extended Mode, Combo Direct Mode, Single Output Mode e Combo PWM Mode”.

Inicialmente foi utilizada a Combo PWM mas o comboio parava assim que perdia o sinal do LED. Este modo tem um timeout que, no momento que o receptor perde o sinal IR, desliga os motores. Foi colocada a dúvida na Comunidade 0937 ao que responderam que seria mais indicado utilizar a função Single Output que não tem timeout e o problema ficou solucionado.

 

Este foi o código usado

O que este código faz é:

No início são definidas as bibliotecas usadas. A biblioteca “Servo” permite o controlo do Servo de mudança de linha e a “legopowerfunctions” permite interagir com o sistema LEGO®.

A seguir são definidos os vários objectos de controlo e as diversas variáveis e os pinos associados.

Na estrutura “setup” é definida a velocidade de comunicação do Arduino com o PC, se os pinos das diversas variáveis são de entrada ou saída e qual o pino onde o servo está ligado.

Na estrutura “loop” são definidas duas estruturas “IF”. A primeira estrutura controla o número de voltas que o comboio executa na linha interior. Em cada passagem pelo sensor a variável é incrementada em 1. Criou-se um delay de 3000 ms pelo facto do comboio ter algumas carruagens e estas não activarem o sensor.

Na segunda estrutura “IF” é controlado o arranque da estação, mudanças de linha e paragem na estação. Inicialmente o comboio está parado na estação e parte daí. A primeira linha permite indicar ao comboio os dados de partida, em que “PWM” é modo de funcionamento, o “PWM_FWD5” é a direcção, normal, e a velocidade, 5, (a velocidade varia entre 1 e 7, quer em direcção normal, quer em inversa; existe também o modo para o comboio parar), o “RED” é a saída (pode ser RED ou BLUE) e o “CH1” é o canal de transmissão (pode variar entre 1 e 4). Combinando a saída com o canal é possivel controlar oito dispositivos LEGO® PowerFunctions diferentes.

Dentro desta estrutura existe uma estrutura “IF” que controla a entrada na estação. Caso o pino de controle da estação seja ativado, é indicado ao comboio que deve parar, o servo é rodado para os zero graus (de modo que o comboio troque de linha na próxima passagem) é criado um delay de 2000 ms para simular a paragem na estação. Ouve-se um sinal sonoro através do buzzer e de seguida o comboio arranca novamente em velocidade 5.

O “else” seguinte controla a passagem do comboio da linha interior novamente para a linha da estação. Depois de o comboio efectuar duas voltas na linha interior, o servo roda para os 90 graus de modo ao comboio trocar de linha.

Os sensores de obstáculos, por defeito, devolvem “1”. Caso exista um obstáculo devolve “0”.

O resultado final do projecto foi este:

Deixamos assim aberta a porta para que outros projectos possam também ser publicados e com isso mostrar a uma comunidade atenta e criativa o muito que se faz nesta estrutura.

Adira à comunidade Arduino no Facebook!

Exit mobile version